Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Вниз

Добавление в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
2-1146083600
chai
2006-04-27 00:33
2006.05.14
Работа с поинтерами: корректен ли этот код?


2-1145873848
chai
2006-04-24 14:17
2006.05.14
Переменные и массивы типа string в DLL без ShareMem


1-1144150939
VIB1
2006-04-04 15:42
2006.05.14
MS SQL 2005 QuickReport


2-1145956053
petun
2006-04-25 13:07
2006.05.14
имена месяцев в правильном формате


11-1126114007
KirillT
2005-09-07 21:26
2006.05.14
Открытие програмным путем общего доступа к папке на своей машине





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский