Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

процедура для обработки нажатия любой кнопки на форме   Найти похожие ветки 

 
dimokis   (2012-03-05 17:16) [0]

Вот какая проблемка. Есть форма с 726 кнопками(битбтн) (реализована через tabsheet ). Caption"ы  прописываются программно из БД. Как-то неохота прописывать на такое кол-во кнопок онбаттонклик на каждую. Можно ли как-то сделать так, что-бы при клике на любую кнопку запускалась процедура и записывала значение caption нажатой кнопки в переменную?
Я чайник, и даже не представляю откуда начинать думать, чтобы придумать решение.
Спасибо всем заранее.


 
Германн ©   (2012-03-05 17:24) [1]

Всем кнопкам прописать одну и ту же процедуру OnClick.


 
AV ©   (2012-03-05 17:35) [2]

type
 TForm1 = class(TForm)
   btn1: TButton;
   btn2: TButton;
   btn3: TButton;
   btn256: TButton;
   procedure FormCreate(Sender: TObject);
 private     { Private declarations }
   procedure MyOnClick(Sender: TObject);
 public      { Public declarations }
 end;

var
 Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  btn1.OnClick := MyOnClick;
  btn2.OnClick := MyOnClick;
//   ..
  btn256.OnClick := MyOnClick;
end;

procedure TForm1.MyOnClick(Sender: TObject);
begin
 ShowMessage( TButton(sender).Caption);
end;


 
dimokis   (2012-03-05 17:47) [3]

Германн
AV

Спасибо ОГРОМНОЕ, буду пробовать.


 
dimokis   (2012-03-05 18:44) [4]

Все сработало.
Спасибо еще раз, мужики, Вы сэкономили мне кучу времени и дурной рутинной работы!


 
QAZ   (2012-03-05 18:45) [5]


> Есть форма с 726 кнопками
> Я чайник

несомненно...


 
dimokis   (2012-03-05 20:22) [6]

QAZ

Молодца, сострил в стиле лучших юмористов!

Парирую: есть задача написания проги (фронт офис) под ресторан. Наименований блюд и напитков около 400.

Категорий блюд и напитков 18.
Сделал 21 вкладку(категории) 3 ряда по 7, на каждой по 35 разновидностей блюд.
Интерфейс под тачскрин 800х600.
На первое место ставлю удобство работы персонала.
Вот вам и 735+1 кнопка.
С одного экрана доступ сразу ко всему ассортименту без лишних движений.
Устраивает всех.

QAZ, огромное Вам спасибо за столь дельный комментарий!
Высший delphi-пилотаж!


 
Кщд   (2012-03-05 21:51) [7]

>dimokis   (05.03.12 18:44) [4]
>Спасибо еще раз, мужики, Вы сэкономили мне кучу времени и дурной рутинной работы!

 
 btn1.OnClick := MyOnClick;
  btn2.OnClick := MyOnClick;
//   ..
  btn256.OnClick := MyOnClick;

так и сделали?)
или таки через FindComponent, Components[]?

QAZ всего лишь повторил Ваши слова: судя по вопросу, Вы, действительно, "чайник", что не страшно, ибо все были; судя по болезненной реакции - воинствующий ламер, что тоже не страшно, но грустно и нелепо.


 
dimokis   (2012-03-05 22:15) [8]

Кщд

Пробовал сначала через FindComponent, не смог подобрать правильного синтаксиса, плюнул, решил что быстрее набросать программку автоматизирующую ввод текста, и через 5 минут все было введено.

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

Ламер (чайник)

(от англ. lame – "слабак")
"Ламер" – это прозвище, которым люди, претендующие на продвинутость в компьютерном деле, именуют тех, кто, по их мнению, плохо в этом разбирается.

-из словаря тындекса

Я и не возражаю, c Delphi знаком всего две недели и то только в свободное от работы время.
Может, во мне дремлет великий програмер? :)


 
Inovet ©   (2012-03-05 22:59) [9]

> [8] dimokis   (05.03.12 22:15)
> Ламер (чайник)

ламер
1) "чайник", исполненный самомнения

ComputerSlang (Ru-Ru) (к версии ABBYY Lingvo x5 ME)


 
oldman ©   (2012-03-06 09:59) [10]


> Наименований блюд и напитков около 400.
> Категорий блюд и напитков 18.
> Сделал 21 вкладку(категории) 3 ряда по 7, на каждой по 35
> разновидностей блюд.

> Вот вам и 735+1 кнопка.


Combobox отменили????
Вот гады!!!!


 
Ega23 ©   (2012-03-06 10:26) [11]


> Вот вам и 735+1 кнопка.


Или всего один TPaintBox


> Устраивает всех.


Это не означает, что сделано хорошо и грамотно.


>  плюнул, решил что быстрее набросать программку автоматизирующую
> ввод текста, и через 5 минут все было введено.


Б-же мой. Узнаю себя лет так 12-13 назад.

procedure TForm1.OnCreate(Sender: TObject);
var
 i: Integer;
begin
 for i := 0 to ComponentCount - 1 do
   if (Components[i] is TButton) and
      TButton(Components[i]) ... then
    TButton(Components[i]).OnClick := ...;
end;


 
Amoeba_   (2012-03-06 11:05) [12]


> Ega23 ©   (06.03.12 10:26) [11]
>
>
> > Вот вам и 735+1 кнопка.
>
>
> Или всего один TPaintBox

Или TDrawGrid


 
Ega23 ©   (2012-03-06 11:08) [13]


> Или TDrawGrid


К сабжу не относится, но... Не могу объяснить почему, но дико невзлюбил данный конторол. вот просто жуткое отвращение вызывает.
Не могу объяснить. :)


 
oldman ©   (2012-03-06 14:55) [14]


> Категорий блюд и напитков 18.
> Сделал 21 вкладку(категории) разновидностей блюд.


А почему не 18 вкладок?



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

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.053 c
2-1338481759
NatashaZ
2012-05-31 20:29
2013.03.22
Поток и ShowModal (Delphi2009)


15-1338536731
Дмитрий С
2012-06-01 11:45
2013.03.22
Зачем нужно готовиться к экзаменам?


15-1346013002
Юрий
2012-08-27 00:30
2013.03.22
С днем рождения ! 27 августа 2012 понедельник


15-1341211017
KilkennyCat
2012-07-02 10:36
2013.03.22
Понедельничная задачка :)


1-1298972588
rxQ
2011-03-01 12:43
2013.03.22
Положение объекта в rxRichEdit