Вопрос по синтаксису?

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Аватара пользователя
Nikoshka
Сообщения: 120
Зарегистрирован: 15 май 2006, 05:24

somewhere,
нет, там кнопки, Edit и всякое разное... а вот глюк непонимаю как победить...
Я думал сначала

Код: Выделить всё

Form1.Тут указываем по порядку Пэйд контрол, страницу и тп..InsertControl(MilkSelect);
Чтобы он с ними так делал только для страницы этой, но не работает...
С кнопочкой хорошо, там всего одна форма и она так не глючит, а с закладками вот такая штука..
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

В справке по TWinControl написано что не надо напрямую вызывать InsertControl
Вместо этого лучше использовать свойство Parent, т.е. в вашем случае:

Код: Выделить всё

  ...
  MyCombo.Parent := Form1;
  ...
Nikoshka, если мне склероз не изменяет, на PageControl обычно лежат TabSheets ;)
Следовательно, Parent у создаваемых комбобоксов должен быть PageControl.Pages

кроме того конструкция Form1.Controls.ClassNameIs('TComboBox') вернёт значение true только для TComboBox, если же, к примеру, надо проверить TComboBox и его наследников, то придётся использовать класс-оператор IS т.е.:

Код: Выделить всё

  if Form1.Controls[I] is TComboBox then TComboBox(Form1.Controls[I])....
Изображение
Аватара пользователя
Nikoshka
Сообщения: 120
Зарегистрирован: 15 май 2006, 05:24

Вот оно как!

Код: Выделить всё

MilkSelect.Parent := GroupBox2;
Оказывается ему по имени хватило установки родителя :)
Гм, вот только теперь не работает конструкция:

Код: Выделить всё

TListBox(Form1.Controls[k]).Sorted := true;
например.

Так я обращался к этому листбоксу, теперь конструкция не работает...

И вот это тоже не работает:

Код: Выделить всё

if GroupBox2.Controls[k] is TListBox then

----------------------
Сидел, пробовал. Вся проблема в том, что я немогу указать что непосредственный родитель это:

Код: Выделить всё

MilkSelect.Parent := GroupBox2;
так как фактически в нем все и лежит! Но при таком коде все отказывается работать :(

А если так:

Код: Выделить всё

MilkSelect.Parent := PageControl1.Pages[0].GroupBox2;
То даже запускать не дает...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

MilkSelect.Parent := PageControl1.Pages[0].GroupBox2

Код: Выделить всё

MilkSelect.Parent := PageControl1.Pages[0].Controls[0]
Ты так и не понял структуру? :-)
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Nikoshka
Сообщения: 120
Зарегистрирован: 15 май 2006, 05:24

somewhere,
Вот недавно совсем понял, без всяких заморочек:
MyCombo.Parent := Form1;

они вообще не нужны ;)
Списки и так имеют своего родителя, а при его сменен все едет, я же писал про то как у меня вложены окна по порядку.
В итоге Controls[0] просто метод, который позволяет просматривать своих детей по индексу, который создается по порядку создания самих объектов визуально.

В итоге с проверкой на то ListBox ли это я пребрал их через этот метод. Пока не пробовал, но получается что через Tag можно перебирать только тот диапазон, который нужен, верно? ;)
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Верно, с этого то все и начиналось :-)
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

если ты сделаешь парентом контрола форму, то при листании твоих закладок контролы так и остануться на экране...
Изображение
Аватара пользователя
Nikoshka
Сообщения: 120
Зарегистрирован: 15 май 2006, 05:24

Игорь Акопян,
Кто ж про это писал то и недоумевал, что происходит :)
Ответить