![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Номер контрола на форме [D6, D7, Win2k, WinXP]
malamba © (2004-09-27 11:44:00)Можно обращаться к контролам, расположенным, например, на форме, по номеру:
FormMain.Controls[i]
Каждый контрол имеет свой номер, непонятно по какому принципу присваеваемый. Как задать вновь созданному контролу свой номер ?
У меня на панели пять подпанелей. Создаю новую - вижу в дереве объектов ( Alt+Shift + F11), что она не в конце, а в середине списка.
А у меня процедура, которая выстраивает, раздвигает и сдвигает панели в зависимости от их номера.
Пробовал их двигать в Z-последовательности, ничего не дает, "порядок создания" - аналогично Главное, чтобы их сдвинуть в дереве объектов.
malamba (2004-09-28 10:03:00) [1]Любопытно и красиво.
Спасибо, попробую
Skyle (2004-09-27 13:59:00) [2]
> 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-27 12:56:00) [3]TButton(TPanel(TPanel(Controls[2]).Controls([3])).Controls[12]).Caption := TPanel(Controls[1]).Caption;
Это действительно страшно.
НО у меня только
Panel1.Controls[iNomPanel].Height:= ...
и все в том же духе.
Скромненько и простенько.
TUser (2004-09-27 12:46:00) [4]
> Свойство Tag - в него можно запихнуть все, что угодно
Я тут недавно воевал с указателями.
Sandman25 (2004-09-27 12:43:00) [5][3] malamba (27.09.04 12:40)
Очень плохая идея иметь в коде что-то вроде:
TButton(TPanel(TPanel(Controls[2]).Controls([3])).Controls[12]).Caption := TPanel(Controls[1]).Caption;
Нужно заранее думать о простоте понимания и модификации программы.
malamba (2004-09-27 12:40:00) [6]Да у меня на панелях по несколько кнопок. Да еще их обработчики.
Не хочется возиться.
Свойство Tag - в него можно запихнуть все, что угодно. Forma вряд ли обратит на него внимание при обращении к контролам.
TUser (2004-09-27 11:56:00) [7]Этот номер присваивается независомо от тебя. хочешь - запихай панели в свой массив, типа так
i:=length(MyPannels);
setlength(MyPannels,i+1);
MyPannels[i]:=TPanel.Create();
with MyPannels[i] do begin
Parent:=...;
...
end;
clickmaker (2004-09-27 11:49:00) [8]
> Как задать вновь созданному контролу свой номер ?
Tag