Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 591

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
на форме есть Edit и 5 кнопок типа TButton которые создаются динамически в цикле от 1 до 5. имена задаются 'Button'+Inttostr(i); как сделать так чтобы при щелчке на кнопке в поле Edit выводилось имя кнопки или заголовок

Stepani4 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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;

Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 23 мая 2007, 09:43
Оценка за ответ: 4

Ответ #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!!!

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Edit1: TEdit;
  12. procedure FormCreate(Sender: TObject);
  13. private
  14. { Private declarations }
  15. procedure OnClickXXX(Sender: TObject);
  16. public
  17. { Public declarations }
  18. end;
  19.  
  20. var
  21. Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. {$R *.dfm}
  26.  
  27. procedure TForm1.OnClickXXX(Sender: TObject);
  28. begin
  29. { Edit1.Text:=TButton(Sender).Name;}
  30. Edit1.Text:=TButton(Sender).Caption;
  31. end;
  32.  
  33. procedure TForm1.FormCreate(Sender: TObject);
  34. var Btn:TButton;
  35. i:integer;
  36. begin
  37. for i:=1 to 5 do
  38. begin
  39. Btn:=TButton.Create(Self);
  40. with Btn do
  41. begin
  42. Name:=format('Button%d',[i]);
  43. OnClick:=OnClickXXX;
  44. Parent:=Form1;
  45. Visible:=true;
  46. Top:=50;
  47. Left:=10+i*100;
  48. end;
  49. end;
  50. end;
  51.  
  52. end.
  53.  


Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 23 мая 2007, 11:19
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 24 мая 2007, 17:42; участников в обсуждении: 2.
Николай Рубан

Николай Рубан (статус: 10-ый класс), 23 мая 2007, 11:21 [#1]:

Обращаю Ваше внимание на то что после парсинга тегов, в мой ответ закралась не точность, в строке:
Name:=format('Button%d........

Так что правильную запись Вы найдете в приложении к ответу - еще раз желаю Вам Удачи!!!
Stepani4

Stepani4 (статус: Посетитель), 24 мая 2007, 17:42 [#2]:

А с помощью объекта ТAction никак нельзя?...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:02
Выполнено за 0.03 сек.