Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2012, 21:36   #1
Firebird
 
Регистрация: 22.11.2012
Сообщений: 3
По умолчанию Повторение процедуры

Здравствуйте. Я новичок. Имеется процедура обработки события Button1.Click: при нажатии кнопки на ней появляется цифра 1, при повторном нажатии - 2 и т.д. Надо, чтобы 50 кнопок вели себя так же. Не хочется писать еще 49 процедур, в тексте которых по сути меняется лишь номер кнопки. Как сделать без переписывания? Если возможно - примерчик
Firebird вне форума Ответить с цитированием
Старый 22.11.2012, 21:53   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  button: tbutton;
begin
  button := sender as tbutton;
  button.Caption := inttostr(strtoint(button.caption) + 1);
end;
Назначить ее на все кнопки.
Не забыть поставить изначальный текст на кнопке "0" (без кавычек).

Или такой вариант с автогенерацией кнопок:
Код:
procedure TForm1.increase(Sender: TObject);
var
  button: tbutton;
begin
  button := sender as tbutton;
  button.Caption := inttostr(strtoint(button.caption) + 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: integer;
begin
  for i:=1 to 10 do
    for j:=1 to 5 do
    with tbutton.Create(self) do
    begin
      caption := '0';
      parent := self;
      onclick := increase;
      top := height * j;
      left := width *i - width + 10;
    end;
end;
(Правда, никакого освобождения ресурсов во время выполнения не предусмотрено)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 22.11.2012 в 22:02.
BDA вне форума Ответить с цитированием
Старый 22.11.2012, 22:16   #3
Firebird
 
Регистрация: 22.11.2012
Сообщений: 3
По умолчанию

Спасибо большое за подробный ответ.

Последний раз редактировалось Firebird; 22.11.2012 в 22:38.
Firebird вне форума Ответить с цитированием
Старый 22.11.2012, 22:34   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Пожалуйста. Не понял последнего вопроса
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.11.2012, 23:03   #5
Firebird
 
Регистрация: 22.11.2012
Сообщений: 3
По умолчанию

Это я напутал . Еще 1 вопрос заинтересовал. Как можно в процедуре без перечисления присвоить 50 кнопкам одинаковое название, например, "А"?
Firebird вне форума Ответить с цитированием
Старый 22.11.2012, 23:24   #6
sariman
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 58
По умолчанию

Т.е. имена кнопок? Никак, так, как компоненты не могут быть с одинаковыми названиями, а если текст кнопок, созданных динамически, то:
Код:
procedure TForm1.Button5Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 1 to 50 do
    Buttons[I].Caption := 'А';
end;
sariman вне форума Ответить с цитированием
Старый 23.11.2012, 12:03   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
with tbutton.Create(self) do ...
(Правда, никакого освобождения ресурсов во время выполнения не предусмотрено)
Указанный код автоматом управляет и удалением, ибо кнопки хранятся у формы (self , который тут будет AOwner) в "массивном" свойстве Components и освобождаются в деструкторе формы.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторение в проголе, соединение ассебмлера с С++ Godod Помощь студентам 1 10.10.2010 14:28
Повторение команд Mihanches Общие вопросы Delphi 5 07.10.2010 14:12
Повторение CraftR14 Общие вопросы Delphi 8 17.04.2010 20:15
Проверка элементов матрицы на повторение -=aHTPoПоС=- Помощь студентам 4 14.11.2009 20:05