Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.035 c
6-1081931225
Makhanev A.S.
2004-04-14 12:27
2004.05.30
Sockets: SysError, code = 1400...


9-1075144796
Antichrist
2004-01-26 22:19
2004.05.30
освещение объектов в <b>двухмерной</b> графике


1-1084964951
SMT
2004-05-19 15:09
2004.05.30
Очистка свободного пространства экрана вокруг формы


3-1083920275
Jungle
2004-05-07 12:57
2004.05.30
Вопрос по MS SQL


11-1074434799
Valter
2004-01-18 17:06
2004.05.30
FastListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский