Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизНомер контрола на форме Найти похожие ветки
← →
malamba (2004-09-27 11:44) [0]Можно обращаться к контролам, расположенным, например, на форме, по номеру:
FormMain.Controls[i]
Каждый контрол имеет свой номер, непонятно по какому принципу присваеваемый. Как задать вновь созданному контролу свой номер ?
У меня на панели пять подпанелей. Создаю новую - вижу в дереве объектов ( Alt+Shift + F11), что она не в конце, а в середине списка.
А у меня процедура, которая выстраивает, раздвигает и сдвигает панели в зависимости от их номера.
Пробовал их двигать в Z-последовательности, ничего не дает, "порядок создания" - аналогично Главное, чтобы их сдвинуть в дереве объектов.
← →
clickmaker © (2004-09-27 11:49) [1]
> Как задать вновь созданному контролу свой номер ?
Tag
← →
TUser © (2004-09-27 11:56) [2]Этот номер присваивается независомо от тебя. хочешь - запихай панели в свой массив, типа так
i:=length(MyPannels);
setlength(MyPannels,i+1);
MyPannels[i]:=TPanel.Create();
with MyPannels[i] do begin
Parent:=...;
...
end;
← →
malamba (2004-09-27 12:40) [3]Да у меня на панелях по несколько кнопок. Да еще их обработчики.
Не хочется возиться.
Свойство Tag - в него можно запихнуть все, что угодно. Forma вряд ли обратит на него внимание при обращении к контролам.
← →
Sandman25 © (2004-09-27 12:43) [4][3] malamba (27.09.04 12:40)
Очень плохая идея иметь в коде что-то вроде:
TButton(TPanel(TPanel(Controls[2]).Controls([3])).Controls[12]).Caption := TPanel(Controls[1]).Caption;
Нужно заранее думать о простоте понимания и модификации программы.
← →
TUser © (2004-09-27 12:46) [5]
> Свойство Tag - в него можно запихнуть все, что угодно
Я тут недавно воевал с указателями.
← →
malamba (2004-09-27 12:56) [6]TButton(TPanel(TPanel(Controls[2]).Controls([3])).Controls[12]).Caption := TPanel(Controls[1]).Caption;
Это действительно страшно.
НО у меня только
Panel1.Controls[iNomPanel].Height:= ...
и все в том же духе.
Скромненько и простенько.
← →
Skyle © (2004-09-27 13:59) [7]
> Panel1.Controls[iNomPanel].Height:= ...function TMyForm.GetPanel(ANum : Integer) : TPanel;
var I :Integer;
begin
Result := nil;
for I := 0 to ControlCount - 1 do
if (Controls[I] is TPanel) and (Controls[I].Tag = ANum) then
begin
Result := (Controls[I] as TPanel);
Break;
end;
end;
...if Assigned(GetPanel(iNomPanel) then
begin...........
← →
malamba (2004-09-28 10:03) [8]Любопытно и красиво.
Спасибо, попробую
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.048 c