Текущий архив: 2006.01.15;
Скачать: CL | DM;
Вниз
! вопрос нашим мастерам. Найти похожие ветки
← →
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;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.013 c