Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Form1.Button1.Capton:=mas   Найти похожие ветки [i]

 
AlexZ_CRC ©   (2004-05-14 18:24) [0]

Приветствую!
Что-то незнаю, как автоматизировать,например такое:
---------------CUT-------------
Form1.Button1.Caption:=mas[i];
Form1.Button2.Caption:=mas[i+1];
Form1.Button3.Caption:=mas[i+2];
etc.
Т.е. нужно чтобы типа Form1.Button[i]:=mas[i]; было... Извиняюсь за такое представление примера, но я не сильно разбираюсь.
Если кто-нить понял, что нужно, плз, объясните.


 
miwa ©   (2004-05-14 18:55) [1]

Есть статья на "Королевстве дельфи" - "Жизнь и смерть в режиме ран-тайм" - может она что поможет.
Я же с ходу разве что могу посоветовать сделать что-то вроде
for i:=0 to form1.ComponentCount do
if form1.Components[i] is TButton then
(form1.Components[i] is TButton).Caption:=mas[какое-то]

Может, ты точнее вопросс сформулируй. Что есть? Что надо?


 
Mihey ©   (2004-05-14 19:07) [2]

По форуму ищи, была такая ветка.


 
TUser ©   (2004-05-14 22:11) [3]

[1] или динамически создавать массив Баттонов.


 
Goida ©   (2004-05-14 22:52) [4]

Или создать массив Баттонов. Каждому элементу массива присвоить существующий. И потом так, как ты хотел:
arrButtons[i].Caption := mas[i];


 
student2   (2004-05-14 23:42) [5]

Енто то ж варьянт
for i:=1 to n do
         for j:=1 to n do
            begin
              b[i,j]:=TBitBtn.Create(self);
              b[i,j].parent:=self;
              b[i,j].Width:=s;
              b[i,j].Height:=s;
              b[i,j].Top:=i*s;
              b[i,j].Left:=j*s;
              b[i,j].OnClick:=myclick;
             end;


 
GuAV   (2004-05-14 23:47) [6]

я когда-то применял [1] для заполнения
массива из кнопок (вызов из TMyForm.Create)
какое-то = (form1.Components[i] is TButton).Tag
- проставляется в дезайнтайме


 
GuAV   (2004-05-14 23:53) [7]

>GuAV   (14.05.04 23:47) [6]
Вот и кусок кода (у меня не кнопки а фреймы):

procedure TMainForm.FrmEnum;
var I: Integer; C: TControl;
begin
 for I:=0 to Pred(ControlCount) do
   begin
     C:=Controls[I];
     if C is TFrmNum then
       FrmNum[C.Tag]:=TFrmNum(C);
   end;
end;


 
Goida ©   (2004-05-14 23:58) [8]


> form1.Components[i] is TButton

Вам не кажется что это долго? Там ведь есть и не Баттоны...


 
Style ©   (2004-05-15 00:19) [9]

>>> Вам не кажется что это долго? Там ведь есть и не Баттоны...

Это что бы без Баттонов :))

type
 TXControl = class TControl;

for i:=0 to form1.ComponentCount do
 if form1.Components[i] is TControl then
    TXControl(form1.Components[i]).Caption := mas[какое-то];


 
GuAV   (2004-05-15 00:22) [10]


> Вам не кажется что это долго? Там ведь есть и не Баттоны...


[7] - долго но один раз. а потом читаем из массива - быстро-быстро.


 
GuAV   (2004-05-15 00:26) [11]


> Там ведь есть и не Баттоны...


Ну тогда в if другое условия.
например, (... is TButton) or (... is TSpeedButton).
Или тот же Tag у остальных = 0.


 
Style ©   (2004-05-15 00:32) [12]


> Ну тогда в if другое условия.
> например, (... is TButton) or (... is TSpeedButton).
> Или тот же Tag у остальных = 0.


Посмотрите Style ©   (15.05.04 00:19) [9]
не нужны эти проверки многочисленные (... is TButton) or (... is TSpeedButton).. Достаточно получить Protected свойства у TControl; Унаследовав их в класс TXControl;


 
GuAV   (2004-05-15 00:53) [13]

> Style ©   (15.05.04 00:32) [12]

Я не так понял задачу. Я посчитал, что проверка нужна для выявления элементов подлежащих замене. Т. е. у кнопки меняем, у Label"a не трогаем.
Для доступа к Caption - Style ©   (15.05.04 00:19) [9] - согласен.


 
AlexZ_CRC ©   (2004-05-15 13:05) [14]

Спасибо за ответы.
Дело в том, что я пишу autorun.exe(с TabControl"ом) полностью настраиваемый из ини-файла. Текст на Баттонах берётся из того-же файла. Т.е. если для Button3 нету описания, то он невидим. И избежать такое хочу:

//здесь были всякие другие команды    
   Form1.Baner.Caption:=ini.ReadString(page,"baner","");
   Form1.PDJButton1.Caption:=ini.ReadString(page,"1Caption","");
   if ini.ReadString(page,"1Caption","")<>"" then Form1.PDJButton1.Visible:=true;
  Form1.PDJButton2.Caption:=ini.ReadString(page,"2Caption","");
  if ini.ReadString(page,"2Caption","")<>"" then Form1.PDJButton2.Visible:=true;
  Ini.free;

Один раз скомпилил - и пользуйся на здоровье! Удобство.
Скоро начну думать, как сделать чтоб при нажатии на Кнопку исполнялась строка(прочтённая из файла) для этой кнопки.
Вот это уже будет жестоко...


 
AlexZ_CRC ©   (2004-05-15 13:14) [15]

т.е. то, что в этой строке написано. Типа что-то вроде ShellExecute "\Posts\TheBee.zip" . Будет трудно, но что-нить придумаю, надеюсь.


 
evvcom ©   (2004-05-15 15:37) [16]


> Дело в том, что я пишу autorun.exe(с TabControl"ом)

И что? Вы эти баттоны в design-time кладете на форму? А потом есть описание - баттон остается видимым, нет - скрываете? Если так, то это неправильный подход. Мне для данной задачи куча баттонов вообще не нравится, но это на любителя. Все эти кнопки надо создавать динамически и сразу класть в массив. И не нужны будут никакие потомки от TControl, и никакие проверки и циклы до form1.ComponentCount - 1. И Parent-ом кнопок делать какой-нить компонент со скроллингом.


 
GuAV   (2004-05-15 17:35) [17]


> Дело в том, что я пишу autorun.exe(с TabControl"ом)


:-)

Ух ты а у меня уже есть такой, только
без TabControl"а. Тебе на мыло иль как?

PS: Рекомедую TSpeedButton прозрачный, а под ним картинку. Клёво смотристя. и создавать только динамически [5].


 
AlexZ_CRC ©   (2004-05-17 06:58) [18]

>>А потом есть описание - баттон остается видимым, нет - скрываете? Если так, то это неправильный подход.
Что-то я не понял в чём проблема. Дело в том, что этот авторан я для себя пишу, или для тех, кому понравится, но никак НЕ в КОММЕРЧЕСКИХ целях...
2GuAV
Если не трудно, на мыло плз.



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.047 c
14-1084332023
Medic
2004-05-12 07:20
2004.05.30
ресурсы И-нета по ООП.


9-1074659199
NZed
2004-01-21 07:26
2004.05.30
Овцы и Волк


1-1084695704
temp
2004-05-16 12:21
2004.05.30
Как создать файл в памяти, т.е. не сохраняя его на диск? Например


7-1083076227
Medic
2004-04-27 18:30
2004.05.30
удалённое соединение


3-1083448763
Kirill
2004-05-02 01:59
2004.05.30
Не удаляется запись