Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

процедура для обработки нажатия любой кнопки на форме [D7]


dimokis ©   (2012-03-05 17:16:00) 

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


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


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


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


Ega23   (2012-03-06 11:08:00) [2]


> Или TDrawGrid


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


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


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

Или TDrawGrid


Ega23   (2012-03-06 10:26:00) [4]


> Вот вам и 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;


oldman   (2012-03-06 09:59:00) [5]


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

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


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


Inovet   (2012-03-05 22:59:00) [6]

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

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

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


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

Кщд

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

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

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

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

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

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


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

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

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

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

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


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

QAZ

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

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

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

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


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


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

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


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

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


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

Германн
AV

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


AV   (2012-03-05 17:35:00) [13]

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;


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо