![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TList
-=RtV=- © (2007-06-06 08:43:00)Добавляю строку в паре с объектом:
function AddObject(const S: string; AObject: TObject): Integer;
- Как поменять местами две строки TList? Или, лучше, подскажите как сделать жёсткую привязку строки TList к строке ListView? (TList[i] => ListView[i])
Сергей М. (2007-06-07 16:11:00) [1]
> меняю местами строки ListView
Ответ на вопрос прямо перед носом, в стандартной справке:
TListItem.Assign method
Copies the properties of another list item.
Delphi syntax:
procedure Assign(Source: TPersistent); override;
It the Source parameter is a TListItem object, Assign copies its Caption, Data, ImageIndex, OverlayIndex, StateIndex, and SubItems properties
ЮЮ (2007-06-07 10:55:00) [2]Если тебе нужно пристроить матрицу объектов в TListVew, не проще хранить объекты в "матрице" и использовать TListVew в виртуальном режиме?
см. Help по TCustomListView.OwnerData
-=RtV=- (2007-06-07 10:43:00) [3]Мож. кто ссылочку на пример, где используется:
SubItems.AddObject(ExtractSerialNumber(SymbolicName), TObject(Inst));
и
???.Objects[???]
подкинет?
На мои попытки что-нибудь найти поисковики выдают только:
"Очистка памяти объекта в TListView"
но то, что нужно там нет!
-=RtV=- (2007-06-07 08:04:00) [4]Прошу прощения,
день вчера был напряжённый, не успел проверить!
Сегодня попробовал:
SubItems.AddObject(ExtractSerialNumber(SymbolicName), TObject(Inst));
Всё Super!!!
Пару маленьких вопросов ещё нужно задать:
- как теперь Inst вытащить из ListView?
???.Objects[ListView.ItemIndex]
И, в связи с появлением SubItems.AddObject(… , TObject(Inst)), нужно вносить какие-то изменения в код (меняю местами строки ListView):
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;
Сергей М. (2007-06-06 09:17:00) [5]with ListView.Items.Add do begin
Caption := 'Column0';
//ассоциация элемента ListView-списка с объектом MyObject0
Data := MyObject0;
//ассоциация доп.колонок этого элемента с другими объектами
SubItems.AddObject('Column1', MyObject1);
SubItems.AddObject('Column2', MyObject2);
..
SubItems.AddObject('ColumnN', MyObjectN);
end;
-=RtV=- (2007-06-06 09:14:00) [6]Спасибо, Сергей!
Сергей М. (2007-06-06 09:13:00) [7]
> -=RtV=- (06.06.07 09:07) [7]
> MyTask.Items.AddObject
Это даже скомпилировано не будет.
> и нужно:
> with ListView.Items.Add do
> begin
> Caption:=R;
> SubItems.Add(ExtractSerialNumber(SymbolicName));
> end;
>
with ListView.Items.Add do begin
Caption := R;
SubItems.Add Object(ExtractSerialNumber(SymbolicName), Inst);
end;
-=RtV=- (2007-06-06 09:11:00) [8]Т.е.:
ListView.Items[x].Data := DataText;
где:
DataText --> TObject(Inst);
-=RtV=- (2007-06-06 09:07:00) [9]
MyTask:=TList.Create;
MyTask.Items.AddObject(R + ' ' + ExtractSerialNumber(SymbolicName), TObject(Inst));
и нужно:
with ListView.Items.Add do
begin
Caption:=R;
SubItems.Add(ExtractSerialNumber(SymbolicName));
end;
В ListView меняю строки местами,
удаляю, добавляю новые
Вот и возник вопрос о жёсткой привязке
MBo (2007-06-06 09:06:00) [10]> одно значение класса TObject. К ListView его не привяжешь!
TListItem.Data
Сергей М. (2007-06-06 09:02:00) [11]
> -=RtV=- (06.06.07 08:58) [4]
Ничерта не понятно.
> К ListView его не привяжешь
Кого "его" ?
> каждой строке соответствует одно значение класса TObject
Строке какогосписка ?
-=RtV=- (2007-06-06 08:58:00) [12]Для отображения информации на экране использую ListView,
но проблема в том, что каждой строке соответствует одно значение класса TObject. К ListView его не привяжешь!
Вот и приходится ListView+TList
MBo (2007-06-06 08:53:00) [13]Невнятно.
-=RtV=- (2007-06-06 08:48:00) [14]Проблема с TObject
- куда-то девать надо!
MBo (2007-06-06 08:46:00) [15]ты точно о TList говоришь, или все-таки о TStringList?
обмен - метод Exchange