|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.06.2007, 12:56 | #1 |
Регистрация: 01.06.2007
Сообщений: 3
|
Вот такая задача
Вот такая задачка. У меня на форме находится 114 кнопочек. На каждой в начальный момент времени написан 0. Как сделать, чтобы при обработки события onclick надпись менялась на + 1, и как для всех этих 114 button-ов прописать один и тот же обработчик?
|
01.06.2007, 13:14 | #2 |
Форумчанин
Регистрация: 15.02.2007
Сообщений: 183
|
объявив массив кнопочек как a:array[1..114] of Tbutton и b:integer и затем занести все кнопочки в массив. Затем на событие OnClick прописать
b:=strtoint(a[1].caption); b:=b+1; a[1].caption:=inttostr(b); ну а реализовать цикл думаю сможешь.
Знать все невозможно, в силу того, что жить бы стало неинтересно.
|
01.06.2007, 13:19 | #3 |
Регистрация: 01.06.2007
Сообщений: 3
|
Спасибо большое что подталкнул на правильный путь!
|
01.06.2007, 14:15 | #4 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
Насколько я понял, нужно при нажатии на одну кнопку сделать так, чтобы ее caption (только этой кнопки) менялась на +1. Если да, то тогда такой обработчик
procedure TForm1.Button1Click(Sender: TObject); begin TButton(Sender).Caption := IntToStr(StrToInt(TButton(Sender).C aption) + 1); end; если по нажатию на одну прибавить единичку ко всем то такой: procedure TForm1.Button1Click(Sender: TObject); var i: integer; C: TComponent; begin for i := 0 to ComponentCount - 1 do begin C := Components[i]; if C is TButton then begin TButton(C).Caption := IntToStr(StrToInt(TButton(C).Captio n) + 1); end; end; end; Ну и соответственно, этот обработчик (по выбору) надо добавить всем кнопкам.
Не надо ничего усложнять. Все достаточно тривиально.
|
01.06.2007, 17:25 | #5 |
Регистрация: 01.06.2007
Сообщений: 3
|
А как здесь же можно реализовать отмену нажатия последней кнопки?
Иначе из-за случайного нажатия может быть фатальный результат. |
01.06.2007, 18:26 | #6 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
- создаешь переменную, например: LastButton: TButton, первоначально в nil устанавливаешь. - в OnClik пишешь LastButton := TButton(Sender); - когда надо отменить нажатие кнопки, пишешь if LastButton <> nil then begin LastButton.Caption :=inttostr(strtoint(LastButton.Capt ion)-1); LastButton := nil; end; ну соответственно чтобы на несколько шагов назад вернуться, надо хранить список указателей на кнопки. |
|
03.06.2007, 21:27 | #7 |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
Ех!!!
А нельзя было: Код:
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
10.06.2007, 21:51 | #8 |
Регистрация: 10.06.2007
Сообщений: 5
|
может посмотришьвот пару задач
какие может вспомнишь 1. Написать функцию поиска количества компонентов заданного класса (входящий параметр TClass) на форме. Возвращает число компонентов типа Integer. 4. Написать процедуру отображения или скрытия объектов на форме заданного класса. У процедуры реализовать 2 входящих параметра: класс объекта (TClass); состояние (Boolean). Процедура должна находить объекты заданного класса и изменять свойство Visible(видимый или нет) на значение входящего параметра. 5. Написать процедуру включения или отключения объектов на форме заданного класса. У процедуры реализовать 2 входящих параметра: класс объекта (TClass); состояние (Boolean). Процедура должна находить объекты заданного класса и изменять свойство Enabled(можно изменять или нет)на значение входящего параметра. 6. Написать процедуру перевода объектов на форме в состояние “только чтение” или “чтение/запись”. У процедуры реализовать 2 входящих параметра: класс объекта (TClass); состояние (Boolean). Процедура должна находить объекты заданного класса и изменять свойство ReadOnly на значение входящего параметра. 9. Написать функцию, возвращающую имя класса объектов (String), максимальное число которых реализовано на форме. Функция возвращает значение свойства ClassName. 10. Написать функцию, возвращающую максимальное число одинаковых объектов на форме. Функция возвращает значение типа Integer. 11. Написать процедуру создания новой формы и вывода ее модально. 13. Написать процедуру сохранения в текстовом файле имен всех компонентов, использованных на форме. Входящий параметр – путь и имя файла (String). 14. Написать процедуру сохранения в текстовом файле имен компонентов заданного класса, использованных на форме. Входящий параметр – класс компонентов (TClass), путь и имя файла (String). 15. Реализовать приложение, содержащее 3 формы: frmMainForm – главная форма приложения; WBaseForm – базовая форма; frmBaseForm – форма, наследник WBaseForm. В базовой форме определить процедуру proc1. В форме-наследнике переопределить процедуру proc1 (виртуальная virtual,override,overload). С главной формы реализовать вывод формы-наследника модально (showmodal) по нажатию на кнопку. 16. Реализовать кнопку (TButton) на форме. По нажатию на кнопку создавать кнопку правее нажатой и т.д. В модуле должна быть реализована только одна процедура procedure Button1Click(Sender: TObject) Вот пара задачек вообще просто не понимаю почему в справочниках нет Componentcount очень нужно разъяснение на эти задачки и вообще объясните как это возможно спрограммировать!!! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Была такая игра... | Иллидан | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 09.10.2011 19:54 |
Тут такая проблема... | 2pizza | Общие вопросы C/C++ | 2 | 16.07.2008 13:00 |
Есть ли такая функция в Паскале?..... | maljoha | Помощь студентам | 2 | 30.04.2008 13:09 |
Подскажите пожалуйста что за функция такая? | Ivo4ka | Microsoft Office Excel | 3 | 22.11.2007 17:29 |
почему такая бяка??? | Sjava | Свободное общение | 17 | 13.11.2006 08:37 |