Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и WinAPI

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
xcv
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 50
#1

DbGrid без VCL на winapi - Delphi WinAPI

27.08.2012, 14:03. Просмотров 1961. Ответов 20
Метки нет (Все метки)

Можно ли в delphi средствами winapi (без VCL) создать объект dbgrid? если да то можно попросить небольшой пример?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2012, 14:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос DbGrid без VCL на winapi (Delphi WinAPI):

удаление папок и файлов без winAPI - Delphi WinAPI
Кто подскажет как не используя win API при помощи DELFI 6.0 удалить папку вместе с файлами и другими папками (можете назвать их каталоги,...

Эмуляция нажатия клавиши без использования WinAPI - Delphi WinAPI
Есть приложение, эмуляция нажатия клавиш клавиатуры и мыши в которое блокируется на уровне WinAPI. Подскажите, как отправить в него...

WinAPI vs VCL - Привязка к окну каких-либо данных - C++
Привет. Решил взяться доработать класс, который когда-то делал, класс окна наподобие TWinControl или TForm из VCL. Меня...

Бегущая строка без VCL - Delphi
Помогите пожалуйста сделать на форме "бегущую строку", не отправляйте пожалуйста в гугль, я там был, нашел кучу вариантов как это сделать...

Конвертировать из BMP в PNG без VCL - C++
Приветствую, Задача: Конвертировать из BMP в PNG без VCL (но работаю на C++ Builder), без доп библиотек,без GDI.... Заранее спасибо!

Реализация события без использования VCL - C++
Здравствуйте! В C++ Builder, используя средства VCL, я реализовывал события так: - в h-файле перед объявлением класса пишем: typedef...

20
Санек25
420 / 350 / 8
Регистрация: 14.05.2012
Сообщений: 1,437
27.08.2012, 15:50 #16
http://www.delphimaster.net/view/4-1227769550/all тут посмотрите
0
xcv
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 50
27.08.2012, 17:31  [ТС] #17
создал объект LISTVIEW следующим образом:
Delphi
1
  LlstView:= CreateWindowEx(0,WC_LISTVIEW,0, WS_CHILD or WS_VISIBLE or LVS_REPORT or WS_BORDER, 5, 5, 100, 100, Wnd, 701, hInstance, nil );
как правильно добавлять в него столбцы и строки?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25523 / 17076 / 5413
Регистрация: 22.10.2011
Сообщений: 30,237
Записей в блоге: 6
27.08.2012, 18:06 #18
Вот тут есть код. Правда, на С++, но WinAPI оно везде WinAPI: ListView не заполняется второй столбец
1
xcv
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 50
28.08.2012, 11:54  [ТС] #19
вот написал как понял:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 program reminder;
uses
  Windows,
  Messages,
  CommCtrl ;
const
  WndClass = 'TWinApiSiren';      //имя класса приложения (оно будет использоваться системой)
  WndCaption = 'програмка';       //Заголовок формы
var
  Wc: TWndClassEx;                 //класс окна
  Msg: TMsg;                       //Сообщение, которое будем "перехватывать"
  LlstView,
  Wnd: HWND;                           //Дескриптор нашей формы
  lvi:taglvitem;
  h:longint;
procedure ListView_InsertColumn_(handle,iSubItem,Width:longint;s:string);
    var lvc:taglvcolumn;
  begin
    lvc.mask := (LVCF_WIDTH or LVCF_TEXT or LVCF_SUBITEM);
    lvc.cx := Width;
    lvc.fmt := LVCFMT_LEFT;
    lvc.iSubItem := iSubItem;
    lvc.pszText :=PChar(s);
    lvc.cchTextMax:=length(s);
    ListView_InsertColumn(handle, 0, lvc);
  end;
procedure ListView_InsertItem_(handle,itemindex:longint;S1,s2,s3,s4:string);
  begin
    lvi.mask := LVIF_TEXT;
    lvi.iItem:=itemindex;
    lvi.iSubItem:=0;
    ListView_InsertItem(handle, lvi);
    ListView_SetItemText(handle,itemindex,0,pchar(s1));
    ListView_SetItemText(handle,itemindex,1,pchar(s2));
    ListView_SetItemText(handle,itemindex,2,pchar(s3));
    ListView_SetItemText(handle,itemindex,3,pchar(s4));
  end;
//Функция обрабатывающая сообщения
function WindowProc( Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin     //Msg - полученное сообщение
   case Msg of      //Если програма хочет закрыться
      WM_GETMINMAXINFO:
      begin
         PMinMaxInfo(LParam)^.ptMinTrackSize.X := 480; // Минимально допустимая ширина
         PMinMaxInfo(LParam)^.ptMinTrackSize.Y := 360; // Минимально допустимая высота
      end;
      WM_DESTROY: begin
                  PostQuitMessage( 0 );  //Закрываем её
                  Result := 0;
                  Exit;  //дальнеёшие сообщения обрабатывать нету смысла - мы закрываемся
                  end;
    end ;
       Result := DefWindowProc( Wnd, Msg, wParam, lParam ); // DefWindowProc обеспечивает обработку тех сообщений окна, которые не обрабатывает прикладная программа.
   end;
BEGIN
// Заполняем структуру TWndClassEx
   with Wc do
   begin
   cbSize := SizeOf( Wc );
   lpfnWndProc := @WindowProc; //указатель на оконную процедуру
   cbClsExtra := 0; //Выделенная память, используемая программой по своему усмотрению.
   cbWndExtra := 0; //Выделенная память, используемая программой по своему усмотрению.
   hInstance := hInstance; //описатель экземпляра приложения
   hbrBackground := COLOR_BTNFACE+1; //цвет фона формы. Константы цветов можно посмотреть в описании функции GETSYSCOLOR
   lpszClassName := WndClass; //имя класса создаваемого объекта
   end;
   RegisterClassEx( Wc ); // Регистрируем класс в системе
//Создаём окно
  Wnd := CreateWindowEx ( 0, WndClass, WndCaption, WS_SYSMENU or WS_MINIMIZEBOX or WS_SIZEBOX or WS_MAXIMIZEBOX, (GetSystemMetrics(0) - (GetSystemMetrics(0) Div 2)) div 2, (GetSystemMetrics(1) - (GetSystemMetrics(1) Div 2)) div 2, GetSystemMetrics(0) Div 2, GetSystemMetrics(1) Div 2, 0, 0, hInstance, nil);
  SendMessage(Wnd, WM_SETICON, 1, LoadIcon(HInstance, 'MAINICON')); //иконка приложения
  ShowWindow( Wnd, SW_SHOWNORMAL );    // Показываем окно программы
// Создаём элементы окна
  LlstView:= CreateWindowEx(0, WC_LISTVIEW, nil, WS_CHILD or WS_VISIBLE or LVS_REPORT or WS_BORDER, 5, 5, 300, 300, Wnd, 701, hInstance, nil );
     ListView_SetExtendedListViewStyle(h,LVS_EX_GRIDLINES or LVS_EX_FULLROWSELECT);
     ListView_InsertColumn_(h,0,150,'Событие');
     ListView_InsertColumn_(h,1,50,'год');
     ListView_InsertColumn_(h,2,50,'месяц');
     ListView_InsertColumn_(h,3,50,'день');
     ListView_InsertItem_(h,0,'29','08','2012','день первый');
     ListView_InsertItem_(h,1,'30','08','2012','день второй');
     ListView_InsertItem_(h,2,'31','08','2012','день третий');
     ListView_InsertItem_(h,3,'01','09','2012','день четвертый');
// Цикл обработки сообщений
 while GetMessage (Msg,0,0,0) do
  begin
   TranslateMessage(Msg);
   DispatchMessage(Msg);
   if Msg.message = WM_KEYDOWN then// приложение получает сообщение что клавиша нажата
    begin
     Exit      // закрываем приложение
    end;
  end;
 Halt( Msg.wParam );
END.
компилируется без ошибок, однако при запуске програмки открывается пустое окошко в котором нет желаемой "таблички", подскажите пожалуйста в чем ошибка?

Добавлено через 12 минут
перепутал кусок кода:
Delphi
1
2
3
4
5
6
7
8
9
 ListView_SetExtendedListViewStyle(LlstView,LVS_EX_GRIDLINES or LVS_EX_FULLROWSELECT);
     ListView_InsertColumn_(LlstView,0,150,'Событие');
     ListView_InsertColumn_(LlstView,1,50,'год');
     ListView_InsertColumn_(LlstView,2,50,'месяц');
     ListView_InsertColumn_(LlstView,3,50,'день');
     ListView_InsertItem_(LlstView,0,'29','08','2012','день первый');
     ListView_InsertItem_(LlstView,1,'30','08','2012','день второй');
     ListView_InsertItem_(LlstView,2,'31','08','2012','день третий');
     ListView_InsertItem_(LlstView,3,'01','09','2012','день четвертый');
Добавлено через 3 минуты
О! добавил в програмку:
Delphi
1
 {$R WindowsXP.res}
и картинка ожила =), табличка появилась! а что сделать чтобы все работало и без этого?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25523 / 17076 / 5413
Регистрация: 22.10.2011
Сообщений: 30,237
Записей в блоге: 6
28.08.2012, 12:01 #20
а кому ты посылаешь ListView_InsertColumn_ и ListView_InsertItem_? Чему равен этот H? Посылать надо LlstView:
Delphi
1
2
3
4
5
6
7
8
     ListView_InsertColumn_(LlstView,0,150,'Событие');
     ListView_InsertColumn_(LlstView,1,50,'год');
     ListView_InsertColumn_(LlstView,2,50,'месяц');
     ListView_InsertColumn_(LlstView,3,50,'день');
     ListView_InsertItem_(LlstView,0,'29','08','2012','день первый');
     ListView_InsertItem_(LlstView,1,'30','08','2012','день второй');
     ListView_InsertItem_(LlstView,2,'31','08','2012','день третий');
     ListView_InsertItem_(LlstView,3,'01','09','2012','день четвертый');
Цитата Сообщение от xcv Посмотреть сообщение
а что сделать чтобы все работало и без этого?
Оно и без этого у меня работает...
0
xcv
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 50
28.08.2012, 12:34  [ТС] #21
Цитата Сообщение от UI Посмотреть сообщение
а кому ты посылаешь ListView_InsertColumn_ и ListView_InsertItem_? Чему равен этот H? Посылать надо LlstView:
я ниже написал что опечатался, вырывал кусок кода, вот слегка и напутал, посылаю LlstView
Цитата Сообщение от UI Посмотреть сообщение
Оно и без этого у меня работает...
а у меня без этой строчки открывается пустое окошко програмки, а с этой строчкой - окошко програмки с табличкой внутри... да я бы ее и оставил, но с этой строчкой кнопка создаваемая следующим образом:
Delphi
1
    Buttons := CreateWindowEx( WS_EX_STATICEDGE, 'Button', PAnsiChar(' + '), BS_DEFPUSHBUTTON or WS_VISIBLE or WS_CHILD, R.Right-R.Left-45, R.Bottom-R.Top-60, 25, 20, Wnd, 101, hInstance, nil );
"некрасиво" выглядит, кнопка получается какбы с двойной рамкой, может подскажете как кнопку сделать нормальной? тогда пусть остается данная строка...

Добавлено через 22 минуты
забыл сказать, использую delphi 7

Добавлено через 2 минуты
в delphi 4 нормально все скомпилировалось и без этой строчки... странно, пока всем спасибо, буду разбираться дальше
0
28.08.2012, 12:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2012, 12:34
Привет! Вот еще темы с ответами:

Fasm без winapi - Assembler
Использую FASM, есть ли какая документация и вообще такая возможность писать под win32 без winapi? Так же как под дос, запустить какое...

Преобразование кодировки без WinAPI - C++
Привет! Может кто знает, как преобразовывать из UTF8 в CP1251 и обратно без внешних утилит (типа iconv) и без функций WinAPI ( типа...

Генерация GUID (без WinAPI) - C++
Подкиньте код генерации GUID на чистом С++ :)

Создание окна без WinAPI - C++
Хотелось узнать, как создавать окна без использования WinAPI.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru