Михаил Киселев писал(а):Андрей писал(а):Нашёл некоторые излишества в твоей программе.
Например ты обрабатываешь 64 процедуры на 64 кнопки (пометки мышью полей).
Надо было всем кнопкам подвязать одну и ту же обработку,
а в ней отлавливать Sender, и таким образом выходить на нужную кнопку.
Экономия - 1 прцедура вместо 64-х.
Не все так просто. Button(xx).caption нельзя сделать переменными. Можно обойти и эту проблему ( опять же с серьезной переделкой большей части кода), но исторически в ходе программирования у меня получилось 64 процедуры.

Ты, похоже, не понял мою подсказку. Это делается элементарно. Вот я привожу кусок своей программы, где реализована работа с Sender:
Код: Выделить всё
procedure TForm1.N4Click(Sender: TObject);
var Menu1, Menu2: TComponent;
DBGrid: TDBGrid;
i: integer;
begin
Menu1:=(Sender as TMenuItem).GetParentComponent;
Menu2:=(Menu1 as TPopUpMenu).PopUpComponent;
DBGrid:=Menu2 as TDBGrid;
i:=DBGrid.SelectedIndex;
DBGridTitleClick(DBGrid.Columns[i]);
end;
Ты можешь увидеть, что я обращаюсь к некоему DBGrid, который вычисляется из Sender, и делаю с ним однотипные действия. В данном случае сортировка эмуляцией щелчка по заголовку столбца.
Если бы я писал как ты - мне бы пришлось на каждый DBGrid писать по одной такой процедуре. А если 100 таблиц?
upd:
вот такую (одну и ту же) процедуру прописываешь в обработчик событий каждой из 64 кнопок,
а параметр (Sender as TButton) позвОлит тебе делать что-то именно с той кнопкой, которая послала это событие (в твоём случае щелчок ПКМ на ней).