|
Вопрос # 591/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
на форме есть Edit и 5 кнопок типа TButton которые создаются динамически в цикле от 1 до 5. имена задаются 'Button'+Inttostr(i); как сделать так чтобы при щелчке на кнопке в поле Edit выводилось имя кнопки или заголовок
 |
Вопрос задал: Stepani4 (статус: Посетитель)
Вопрос отправлен: 23 мая 2007, 09:37
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович
Здравствуйте, Stepani4!
Кроме
Name:='Button'+Inttostr(i);
напишите ещё
OnClick:=DynamicButtonClick;
и саму DynamicButtonClick:
procedure TMyForm.DynamicButtonClick(Sender:TObject);
begin
edit1.text:=(Sender as TButton).Name;
{
edit1.text:=(Sender as TButton).Caption;
}
end;
Ответ #2. Отвечает эксперт: Николай Рубан
Здравствуйте, Stepani4!
Вот процедура по созданию объектов:
procedure TForm1.FormCreate(Sender: TObject);
var Btn:TButton;
i:integer;
begin
for i:=1 to 5 do
begin
Btn:=TButton.Create(Self);
with Btn do
begin
Name:=format('Button%d',[I]);
OnClick:=OnClickXXX; //строка в которой мы определяем действие по нажатию на кнопку
Parent:=Form1;
Visible:=true;
Top:=50;
Left:=10+i*100;
end;
end;
end;
И непосредственно сама процедура которая используется во время нажатия на кнопку (на мой взгляд такая запись немного привычнее):
procedure TForm1.OnClickXXX(Sender: TObject);
begin
{ Edit1.Text:=TButton(Sender).Name;}
Edit1.Text:=TButton(Sender).Caption;
end;
Good Luck!!!
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- Edit1: TEdit;
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- procedure OnClickXXX(Sender: TObject);
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.OnClickXXX(Sender: TObject);
- begin
- { Edit1.Text:=TButton(Sender).Name;}
- Edit1.Text:=TButton(Sender).Caption;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- var Btn:TButton;
- i:integer;
- begin
- for i:=1 to 5 do
- begin
- Btn:=TButton.Create(Self);
- with Btn do
- begin
- Name:=format('Button%d',[i]);
- OnClick:=OnClickXXX;
- Parent:=Form1;
- Visible:=true;
- Top:=50;
- Left:=10+i*100;
- end;
- end;
- end;
-
- end.
-
 |
Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 23 мая 2007, 11:19
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 24 мая 2007, 17:42; участников в обсуждении: 2.
|
Николай Рубан (статус: 10-ый класс), 23 мая 2007, 11:21 [#1]:
Обращаю Ваше внимание на то что после парсинга тегов, в мой ответ закралась не точность, в строке:
Name:=format('Button%d........
Так что правильную запись Вы найдете в приложении к ответу - еще раз желаю Вам Удачи!!!
|
|
Stepani4 (статус: Посетитель), 24 мая 2007, 17:42 [#2]:
А с помощью объекта ТAction никак нельзя?...
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|