Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как имея доступ к компоненту получить на него указатель? [D6, Win2k]


Mishenka ©   (2004-11-12 14:12:00) 

Есть список TList, в котором содержатся указатели на компоненты. Как имея доступ к компоненту получить на него указатель?


Владислав   (2004-11-12 17:51:00) [1]

Телепаты перевелись? ;)
Судя по всему, у автора есть КомбоБокс. "Из него" нужно получить указатель на TList. :)
Если угадал, то ответ есть в [5]. Возможно сделать переменную типа TList глобальной тогда такая связь не нужна.
Остальное только колдовством :)


Rem   (2004-11-12 17:10:00) [2]

Кстати, зачем создавать дополнительный список, если у TComponent есть свойство Components - список, содержащий все Owned компоненты?


Rem   (2004-11-12 16:49:00) [3]

i := List.IndexOf(CBox);
if (i > -1) then // операции с i-м элементом;


>>Потом мы захотели один ComboBox удалить из списка
List.Remove(CBox);


Ega23   (2004-11-12 15:43:00) [4]

Digitman ©   (12.11.04 15:38) [10]

Ну да, что-то в этом духе. Я помню, что напрямую List.Items[i] is TComboBox компиллятор в TList ругается, а в TObjectList - нет...


Digitman   (2004-11-12 15:38:00) [5]


> Ega23 ©   (12.11.04 14:51) [9]


if TObject(List.Items[i] )is TComboBox then

и все ... и никакой TObjectList не нужен ..


Ega23   (2004-11-12 14:51:00) [6]

for i:=0 to List.Count-1 do
if (List.Items[i] is TComboBox) then
if TComboBox(List.Items[i])=CBox then


Хотя для TList такая конструкция if (List.Items[i] is TComboBox) thenвроде не пройдёт... Это для TObjectList...


Ega23   (2004-11-12 14:48:00) [7]

for i:=0 to List.Count-1 do
if (List.Items[i] is TComboBox) then
 if TComboBox(List.Items[i])=CBox then
  .......


Digitman   (2004-11-12 14:48:00) [8]


> есть CBox: TCombobox


а зачем переменная-то ? тебе что, недостаточно того, что ссылка на объект УЖЕ хранится в списке ? нашута эту ссылку еще где-то держать в памяти ?


> как имея эту переменную СBox получить указатель на неё из
> списка List????


еще раз - CBox это 5-е колесо в телеге ...

тебе чего нужно-то ? обратиться к какому-то св-ву или вызвать какой-то метод одного из объектов класса TCombobox, хранящихся в списке ?

ну и обращайся на здоровье !

TCombobox(List.Items[такой-то]).Text := 'jhgfjhgkjhg';


Mishenka   (2004-11-12 14:47:00) [9]

А без идентификации никак нельзя обойтись?


Pentium133   (2004-11-12 14:44:00) [10]

Ты для начала идентефицируй ComboBox'ы напрмер Tag'ом, а потом ищи и удаляй


Mishenka   (2004-11-12 14:42:00) [11]

Ну допустим у нас есть TList в котором указатели на кучу ComboBox'ов. Потом мы захотели один ComboBox удалить из списка.  Тобишь есть CBox: TCombobox. Вопрос был в том, как имея эту переменную СBox получить указатель на неё из списка List????


Ega23   (2004-11-12 14:25:00) [12]

var
List:TList;

List - указатель на экземпляр класса TList.


Digitman   (2004-11-12 14:21:00) [13]

List.Items[такой-то] - вот тебе и указатель


GuAV   (2004-11-12 14:19:00) [14]

Mishenka   (12.11.04 14:12)
TButton1, TMemo1 - это и есть указатели.

Для компонентов удоднее TComponentList


Наверх

Титульная страница Поиск, карта сайта Написать письмо