Вниз
Скачать: CL | DM;

Номер контрола на форме   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.035 c
4-1094129994
Lola
2004-09-02 16:59
2004.10.10
Контроль за отправленной и входящей почтой.


1-1096207072
UserUserov
2004-09-26 17:57
2004.10.10
Заголовок формы


1-1095303974
Kair()
2004-09-16 07:06
2004.10.10


1-1096007928
Lexxx
2004-09-24 10:38
2004.10.10
Помогите вытащить PrintPreview у DBChart :(


14-1095919272
gn
2004-09-23 10:01
2004.10.10
Читайте назночение программ некоторые фразы меня впечатлили :-)




   Наверх