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

Вниз

TList   Найти похожие ветки 

 
-=RtV=-   (2007-06-06 08:43) [0]

Добавляю строку в паре с объектом:
function AddObject(const S: string; AObject: TObject): Integer;
- Как поменять местами две строки TList? Или, лучше, подскажите как сделать жёсткую привязку строки TList к строке ListView? (TList[i] => ListView[i])


 
MBo ©   (2007-06-06 08:46) [1]

ты точно о TList говоришь, или все-таки о TStringList?
обмен - метод Exchange


 
-=RtV=-   (2007-06-06 08:48) [2]

Проблема с TObject
- куда-то девать надо!


 
MBo ©   (2007-06-06 08:53) [3]

Невнятно.


 
-=RtV=-   (2007-06-06 08:58) [4]

Для отображения информации на экране использую ListView,
но проблема в том, что каждой строке соответствует одно значение класса TObject. К ListView его не привяжешь!
Вот и приходится ListView+TList


 
Сергей М. ©   (2007-06-06 09:02) [5]


> -=RtV=-   (06.06.07 08:58) [4]


Ничерта не понятно.


> К ListView его не привяжешь


Кого "его" ?


> каждой строке соответствует одно значение класса TObject


Строке какого списка ?


 
MBo ©   (2007-06-06 09:06) [6]

> одно значение класса TObject. К ListView его не привяжешь!

TListItem.Data


 
-=RtV=-   (2007-06-06 09:07) [7]

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 меняю строки местами,
удаляю, добавляю новые

Вот и возник вопрос о жёсткой привязке


 
-=RtV=-   (2007-06-06 09:11) [8]

Т.е.:
ListView.Items[x].Data := DataText;
где:
DataText --> TObject(Inst);


 
Сергей М. ©   (2007-06-06 09:13) [9]


> -=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.AddObject(ExtractSerialNumber(SymbolicName), Inst);
end;


 
-=RtV=-   (2007-06-06 09:14) [10]

Спасибо, Сергей!


 
Сергей М. ©   (2007-06-06 09:17) [11]

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-07 08:04) [12]

Прошу прощения,
день вчера был напряжённый, не успел проверить!

Сегодня попробовал:
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;


 
-=RtV=-   (2007-06-07 10:43) [13]

Мож. кто ссылочку на пример, где используется:
SubItems.AddObject(ExtractSerialNumber(SymbolicName), TObject(Inst));
и
???.Objects[???]

подкинет?

На мои попытки что-нибудь найти поисковики выдают только:
"Очистка памяти объекта в TListView"
но то, что нужно там нет!


 
ЮЮ ©   (2007-06-07 10:55) [14]

Если тебе нужно пристроить матрицу объектов в TListVew, не проще хранить объекты в "матрице" и использовать TListVew в виртуальном режиме?

см. Help по TCustomListView.OwnerData


 
Сергей М. ©   (2007-06-07 16:11) [15]


> меняю местами строки 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



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.004 c
2-1181323079
novice
2007-06-08 21:17
2007.07.01
Добавление объекта в динамический массив


2-1181363908
Стул
2007-06-09 08:38
2007.07.01
MS Word. Как с ним работать?


2-1181222393
Bullfrog
2007-06-07 17:19
2007.07.01
TreeView


2-1181124612
Wolferio
2007-06-06 14:10
2007.07.01
Excell количество Листов


3-1175777778
root
2007-04-05 16:56
2007.07.01
COM и MIDAS вызов события на стороне клиента?????????





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский