Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Внизпроцедура для обработки нажатия любой кнопки на форме Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.104 c