Главная страница
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.031 c
4-1140364778
delphi-oracle
2006-02-19 18:59
2006.05.14
Управление чужім окном.


2-1145892295
AlexanderMS
2006-04-24 19:24
2006.05.14
Проверка на наличие элемента в ListBox


1-1143794356
Guf
2006-03-31 12:39
2006.05.14
Количество страниц в документе MS Word


3-1139197590
Ольга
2006-02-06 06:46
2006.05.14
Получить значение OUTPUT параметра из хран. процедуры


6-1137454594
GanibalLector
2006-01-17 02:36
2006.05.14
Перенаправленный ввод-вывод