Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.062 c
4-1259658224
sniknik
2009-12-01 12:03
2013.03.22
Получить список групп текущего юзера/общий


15-1342013393
kki
2012-07-11 17:29
2013.03.22
как будет по англ.


15-1353960706
Дмитрий С
2012-11-27 00:11
2013.03.22
Удаленная отладка Lazarus


2-1334680433
Afrost
2012-04-17 20:33
2013.03.22
строки текстового файла преобразовать в массив


15-1353529805
Юрий
2012-11-22 00:30
2013.03.22
С днем рождения ! 22 ноября 2012 четверг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский