PDA

Просмотр полной версии : Как заменить ListBox на ListView



GLXV
07.06.2007, 09:01
Всё, казалось бы, просто, но необходимо добавлять строку в паре с объектом:
AddObject(const S: string; AObject: TObject)

С ListBox-ом было просто:

ListBox.Items.AddObject(S + ' ' + ExtractSerialNumber(SymbolicName), TObject(Inst));
...
CM_Request_Device_Eject(DEVINST(ListBox.Items.Obje cts[ListBox.ItemIndex]), @VetoType, nil, 0, 0);

Более того, мне необходимо менять местами строки ListView! И что тут выбрать? - Жёсткую привязку к какойто переменной типа Tlist, или, может кто из Вас знает как достать из ListView --> SubItems.AddObject(… , TObject(Inst)), потому что я ни одного примера не нашёл! И, как в том или ином случае корректироватьнижеописанн ый код?

procedure TFormMain.ToolButtonUpClick(Sender: TObject);
var ItemTemp: TListItem;
begin
if ListViewUse.ItemIndex>1
then begin
with ListViewUse do begin
ItemTemp:=TListItem.Create(Items);
ItemTemp.Assign(Items[ListViewUse.ItemIndex]);
Items[ListViewUse.ItemIndex].Assign(Items[1]);
Items[1].Assign(ItemTemp);
ItemTemp.free;
end;
end; //вверх
end;

procedure TFormMain.ToolButtonDownClick(Sender: TObject);
var ItemTemp: TListItem;
begin
if (ListViewUse.ItemIndex>0) and
(ListViewUse.ItemIndex<>ListViewUse.Items.Count-1)
then begin
with ListViewUse do begin
ItemTemp:=TListItem.Create(Items);
ItemTemp.Assign(Items[ListViewUse.ItemIndex]);
Items[ListViewUse.ItemIndex].Assign(Items[ListViewUse.Items.Count-1]);
Items[ListViewUse.Items.Count-1].Assign(ItemTemp);
ItemTemp.free;
end;
end; //вниз
end;

Подскажите выход!