Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задача
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
DelphiLove
Вот такая задачка. У меня на форме находится 114 кнопочек. На каждой в начальный момент времени написан 0. Как сделать, чтобы при обработки события onclick надпись менялась на + 1, и как для всех этих 114 button-ов прописать один и тот же обработчик?
sax_ol
так
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (sender is TButton) then
    try
      (sender as TButton).Caption:=IntToStr(StrToInt((sender as TButton).Caption) + 1);
    except
      (sender as TButton).Caption:='0';
    end
end;

или так (что иногда предпочтительнее)
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not (sender is TButton) then exit;
  (sender as TButton).Tag:=(sender as TButton).Tag + 1;
  (sender as TButton).Caption:=IntToStr((sender as TButton).Tag);
end;


Цитата(DelphiLove @ 1:06:2007, 12:01 )
прописать один и тот же обработчик

на форме выделяете все нужные кнопки
в инспекторе обектов на закладке Events
- дабл клик на нужном событии
- или выбрать из выпадащего списка - нужный обработчик
sax_ol
а чтоб в глазах не рябило можно и
with (sender as TButton) do begin
применить
DelphiLove
Слушай, списиб большое! Выручил реально!
DelphiLove
А как здесь же реализовать отмену последнего действия (нажатия кнопки)? Иначе из-за случайного нажатия не той кнопочки последствия не очень хорошие будут.
sax_ol
Цитата(DelphiLove @ 1:06:2007, 16:27 )
Иначе из-за случайного нажатия

тогда перед тем как начинать что то - выдать пользователю запрос на то - уверен он или нет
ирсключает случайность напроч
Pasha
Для: sax_ol
Пользователи никогда не читают сообщения smile.gif
Для: DelphiLove
Просто интересно, почему именно 114 кнопочек?
sax_ol
Для: Pasha
вот только ненадо за всех говорить wink.gif
ну а если и так то - повторить его несколько раз, чтоб наконецто читать стали cool.gif
sax_ol
Для: Pasha
я надеюсь не надо объяснять что написанно на заборе и что на самом деле за ним ...
Pasha
Для: sax_ol
Я видел юзерей, которые после перехода на 98-ю винду удалили папку Windows. Потому что "в ней же 95-я лежала" smile.gif При этом ответив "да" на кучу сообщений с красными и желтыми значками.

А по теме - для отмены действий надо использовать паттерн Command.
sax_ol
Для: Pasha
ну я ж говорю, ненадо за всех, я вот тож повидал всякое, однако воздерживаюсь от обобществления, тем более в деле "связанном с людми" smile.gif

патерн, конечно хорошо, но вот что смущает, так это вопросы топика ...
надо последнее действие(я), как то и в каком то виде запомнить/сохранить (все зависит от условий:предполагаемых действий ...), а потом вопроизвести обратное ему, т.е. - откатить/отменить.
получилось более понятно? smile.gif
Pasha
Ну как бы для этого Command и используется.
]]>http://ru.wikipedia.org/wiki/Command]]>

калькулятор с undo. на C#.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.