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

Вниз

! вопрос нашим мастерам.   Найти похожие ветки 

 
Officeman   (2005-12-27 08:20) [0]

Уважаемые коллеги! Поздравляю Вас с наступающим Новым 2006 годом.
Желаю Вам успехов, благополучия в новом году, Желаю крепкого
здоровья Вам и Вашей семье. с Наилучшими пожеланиями, Offceman.

Содержание
-----------
Часто приходится обрабатывать события множества диалоговых компонентов,
например кнопок. в данном примере необходимо задать заголовок кнопкам.


button1.caption:=COU;
button2.caption:=COU;
button3.caption:=COU;
button4.caption:=COU;
...
button99.caption:=COU;
button100.caption:=COU;


Также для этих кнопок необходимо задать Visible, по ходу работы программы.


button1.visible:=false;
button2.visible:=false;
button3.visible:=false;
button4.visible:=false;
...
button99.visible:=false;
button100.visible:=false;


сейчас в моей программе 40 кнопок. =), скоро будет 100 кнопок.
со временем программа должна перекочевать на платформу КПК.
Необходимо сократить КОД(оптимизировав его)

Вопрос
-------
как сократить код?
возможно ли сделать цикл по перебору кнопок?
Привидите пример пожалуйста.


 
vrem   (2005-12-27 08:30) [1]

http://www.delphimaster.ru/articles/comparray.html


 
evvcom ©   (2005-12-27 08:45) [2]


> сейчас в моей программе 40 кнопок. =), скоро будет 100 кнопок

Застрелиться!

> Необходимо сократить КОД(оптимизировав его)

Используй TAction, а лучше подумай, а действительно ли тебе надо столько кнопок?


 
mfender ©   (2005-12-27 09:18) [3]

Рояль концертный, что-ли? :)))

Нужно состояние этих кнопок (надписи, визиблы и т.п.) где-то держать и где-то менять, рекурсивно бегая по всем контролам. Вероятно, загнать их в массив и искать по нему.


 
evvcom ©   (2005-12-27 09:37) [4]


> где-то держать и где-то менять, рекурсивно бегая по всем
> контролам. Вероятно, загнать их в массив и искать по нему.

Это все уже есть в TAction


 
mfender ©   (2005-12-27 09:44) [5]


> Это все уже есть в TAction

Надо будет поинтересоваться. Спасибо за подсказку.


 
umbra ©   (2005-12-27 09:52) [6]

зачем столько кнопок? все одновременно видимы для пользователя они наверняка не будут. Почему бы не создать некое минимальное количество, а затем менять им надписиб обработчики и т.д.?


 
Игорь Шевченко ©   (2005-12-27 10:43) [7]


> как сократить код?
> возможно ли сделать цикл по перебору кнопок?


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Buttons, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   SpeedButton1: TSpeedButton;
   procedure SpeedButton1Click(Sender: TObject);
 private
   procedure ChangeButtons (const Buttons: array of TButton;
     AEnabled: Boolean; const ACaption: string);
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ChangeButtons(const Buttons: array of TButton;
 AEnabled: Boolean; const ACaption: string);
var
 I: Integer;
begin
 for I:=Low(Buttons) to High(Buttons) do begin
   Buttons[I].Caption := ACaption;
   Buttons[I].Enabled := AEnabled;
 end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 ChangeButtons([Button1,Button2,Button3,Button4], false, "Foo");
end;

end.


 
Officeman   (2005-12-27 11:08) [8]

Игорь Шевченко, спасибо за понимание! Попробую внедрить данный метод в свой проект.


 
msguns ©   (2005-12-27 13:50) [9]

Кнопками, если они являются элементами контрольных панелей, лучше управлять "через" TActionList+TAction, как справедливо заметил evvcom ©
"Заодно" будут переключаться и соответствующие пункты меню.


 
аматор ©   (2005-12-27 21:59) [10]

Привет...

Можно и так

var i : integer;
begin
   for i := 0 to 10 do begin
       TLabel(FindComponent("Label" + intToStr(i))).Caption := Edit1.Text;
   end;
end;

И т.д. и т.п.


 
evvcom ©   (2005-12-28 08:58) [11]

type
TForm1 = class(TForm)
  Button1: TButton; // Все TButton здесь должны следовать друг за другом
  Button2: TButton; // без посторонних вкраплений !!! :)
  Button3: TButton;
  Button4: TButton;
  ...
  Button100: TButton;
private
  procedure ChangeButtons(AEnabled: Boolean; const ACaption: string);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ChangeButtons(AEnabled: Boolean; const ACaption: string);
type
PTButton = ^TButton;
var
I: Integer;
pTButton: PTButton;
begin
pTButton := @Button1;
for I:=1 to 100 do begin
  pTButton^.Caption := ACaption;
  pTButton^.Enabled := AEnabled;
  Inc(pTButton);
end;
end;


Вариантов - море! Выбирай. :)



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

Форум: "Начинающим";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.018 c
5-1121207868
Brack
2005-07-13 02:37
2006.01.15
Как применить общее свойство к N обьектам?


4-1131015607
Ромка
2005-11-03 14:00
2006.01.15
Запись в нулевой сектор HDD


2-1135424755
Новенькая
2005-12-24 14:45
2006.01.15
Динамический список


1-1134121204
AllDontFire
2005-12-09 12:40
2006.01.15
Invalid Thread - где копать?


2-1135283527
Sysanin
2005-12-22 23:32
2006.01.15
Tregistry





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