Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1095903898
Думкин
2004-09-23 05:44
2004.10.10
С днем рождения! 23 сентября


1-1096263093
_alex_
2004-09-27 09:31
2004.10.10
Delphi And Visual c++


4-1094731421
Aleksandr
2004-09-09 16:03
2004.10.10
Запуск программы при выключении компьютера


1-1095613929
Evg12
2004-09-19 21:12
2004.10.10
Как читать стима строками.


14-1095886908
Homa_Programer
2004-09-23 01:01
2004.10.10
файлы *.gif





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский