![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавление в ListView с помощью WinApi [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Svin © (2006-02-21 04:33:00)Привет! Каким образом можно добавить элементы в три столбца в ListView, используя WinApi? В справке Delphi не разобрался. Если можно, приведите пример.
Svin (2006-02-22 06:10:00) [1]Я читал, что от способа добавления зависит скорость удаления. Т.е. через WinApi лучше всего. Но для 10000 элементов скорость удаления не такая хорошая, как, например, в WinAmp'е. Скажите, пожалуйста, ListView вообще стоит использовать, если нужно быстродействие? И каким образом его можно добиться, если да?
n0name (2006-02-21 11:29:00) [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;
n0name (2006-02-21 11:29:00) [3]
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;