Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Добавление в ListView с помощью WinApi   Найти похожие ветки 

 
Svin   (2006-02-21 04:33) [0]

Привет! Каким образом можно добавить элементы в три столбца в ListView, используя WinApi? В справке Delphi не разобрался. Если можно, приведите пример.


 
n0name   (2006-02-21 11:29) [1]

function ListView_InsertColumn(hListView: HWND; Text: PChar; Index: Integer; Width: Integer): Integer;
var
Column: _LVCOLUMN;
begin
ZeroMemory(@Column, sizeof(Column));
Column.mask := LVCF_WIDTH or LVCF_TEXT;
if Index = -1 then Index := 0;
if Index <> 0 then
 begin
  Column.mask := Column.mask or LVCF_SUBITEM;
  Column.iSubItem := Index;
 end;
Column.cx := Width;
Column.pszText := Text;

result := SendMessageA(hListView, LVM_INSERTCOLUMNA, Index, Integer(@Column));
end;

function ListView_InsertItem(hListView: HWND; Text: PChar; ItemID: Integer): Integer;
var
Item: _LVITEM;
begin
ZeroMemory(@Item, sizeof(Item));
Item.mask := LVIF_TEXT;
Item.pszText := Text;
Item.iItem := ItemID;
result := SendMessageA(hListView, LVM_INSERTITEMA, 0, Integer(@Item));
end;

function ListView_SetItemText(hListView: HWND; Text: PChar; SubItem: Integer; ItemID: Integer): Integer;
var
Item: _LVITEM;
begin
ZeroMemory(@Item, sizeof(Item));
Item.pszText := Text;
Item.iSubItem := SubItem;
result := SendMessageA(hListView, LVM_SETITEMTEXTA, ItemID, Integer(@Item));
end;

procedure ListView_AddToReport(hDialog: HWND; ID, Status, Subj: PChar; Index: Integer);
var
hListView: HWND;
begin
hListView := GetDlgItem(hDialog, 1000);

ListView_InsertItem(hListView, ID, Index);
ListView_SetItemText(hListView, Status, 1, Index);
ListView_SetItemText(hListView, Subj, 2, Index);
end;


 
n0name   (2006-02-21 11:29) [2]

function ListView_InsertColumn(hListView: HWND; Text: PChar; Index: Integer; Width: Integer): Integer;
var
Column: _LVCOLUMN;
begin
ZeroMemory(@Column, sizeof(Column));
Column.mask := LVCF_WIDTH or LVCF_TEXT;
if Index = -1 then Index := 0;
if Index <> 0 then
 begin
  Column.mask := Column.mask or LVCF_SUBITEM;
  Column.iSubItem := Index;
 end;
Column.cx := Width;
Column.pszText := Text;

result := SendMessageA(hListView, LVM_INSERTCOLUMNA, Index, Integer(@Column));
end;

function ListView_InsertItem(hListView: HWND; Text: PChar; ItemID: Integer): Integer;
var
Item: _LVITEM;
begin
ZeroMemory(@Item, sizeof(Item));
Item.mask := LVIF_TEXT;
Item.pszText := Text;
Item.iItem := ItemID;
result := SendMessageA(hListView, LVM_INSERTITEMA, 0, Integer(@Item));
end;

function ListView_SetItemText(hListView: HWND; Text: PChar; SubItem: Integer; ItemID: Integer): Integer;
var
Item: _LVITEM;
begin
ZeroMemory(@Item, sizeof(Item));
Item.pszText := Text;
Item.iSubItem := SubItem;
result := SendMessageA(hListView, LVM_SETITEMTEXTA, ItemID, Integer(@Item));
end;

procedure ListView_AddToReport(hDialog: HWND; ID, Status, Subj: PChar; Index: Integer);
var
hListView: HWND;
begin
hListView := GetDlgItem(hDialog, 1000);

ListView_InsertItem(hListView, ID, Index);
ListView_SetItemText(hListView, Status, 1, Index);
ListView_SetItemText(hListView, Subj, 2, Index);
end;


 
Svin   (2006-02-22 06:10) [3]

Я читал, что от способа добавления зависит скорость удаления. Т.е. через WinApi лучше всего. Но для 10000 элементов скорость удаления не такая хорошая, как, например, в WinAmp"е. Скажите, пожалуйста, ListView вообще стоит использовать, если нужно быстродействие? И каким образом его можно добиться, если да?



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.036 c
4-1140485614
Svin
2006-02-21 04:33
2006.05.14
Добавление в ListView с помощью WinApi


4-1140414579
Виталий Ульянов
2006-02-20 08:49
2006.05.14
Работа с портами


3-1142515092
Aleksandr.
2006-03-16 16:18
2006.05.14
Как отскроллировать DBGrid на несколько записей?


2-1145690851
$$$nick$$$
2006-04-22 11:27
2006.05.14
Помогите решить задачу.


15-1145431382
ilya39
2006-04-19 11:23
2006.05.14
ICQ 2003a vs Miranda 0.4.0.3