Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 01.06.2007, 12:56   #1
Sanek
 
Регистрация: 01.06.2007
Сообщений: 3
По умолчанию Вот такая задача

Вот такая задачка. У меня на форме находится 114 кнопочек. На каждой в начальный момент времени написан 0. Как сделать, чтобы при обработки события onclick надпись менялась на + 1, и как для всех этих 114 button-ов прописать один и тот же обработчик?
Sanek вне форума Ответить с цитированием
Старый 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
Sanek
 
Регистрация: 01.06.2007
Сообщений: 3
По умолчанию

Спасибо большое что подталкнул на правильный путь!
Sanek вне форума Ответить с цитированием
Старый 01.06.2007, 14:15   #4
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 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;

Ну и соответственно, этот обработчик (по выбору) надо добавить всем кнопкам.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 01.06.2007, 17:25   #5
Sanek
 
Регистрация: 01.06.2007
Сообщений: 3
По умолчанию

А как здесь же можно реализовать отмену нажатия последней кнопки?
Иначе из-за случайного нажатия может быть фатальный результат.
Sanek вне форума Ответить с цитированием
Старый 01.06.2007, 18:26   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,538
По умолчанию

Цитата:
Сообщение от Sanek Посмотреть сообщение
А как здесь же можно реализовать отмену нажатия последней кнопки?
Иначе из-за случайного нажатия может быть фатальный результат.
Если надо просто у последней нажатой кнопки заголовок назад уменьшить на 1, то что-то в этом роде:
- создаешь переменную, например: LastButton: TButton, первоначально в nil устанавливаешь.
- в OnClik пишешь LastButton := TButton(Sender);
- когда надо отменить нажатие кнопки, пишешь
if LastButton <> nil then
begin
LastButton.Caption :=inttostr(strtoint(LastButton.Capt ion)-1);
LastButton := nil;
end;
ну соответственно чтобы на несколько шагов назад вернуться, надо хранить список указателей на кнопки.
pu4koff вне форума Ответить с цитированием
Старый 03.06.2007, 21:27   #7
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Ех!!!
А нельзя было:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 (Sender as TButton).Caption:=IntToStr(1+StrToInt((Sender as TButton).Caption));
end;
З.Ы. Эта процедура верна для каждой из кнопок.
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 10.06.2007, 21:51   #8
Unknown18
 
Регистрация: 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

очень нужно разъяснение на эти задачки и вообще объясните как это возможно спрограммировать!!!
Unknown18 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Была такая игра... Иллидан 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 18:29
почему такая бяка??? Sjava Свободное общение 17 13.11.2006 09:37


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS