Вопрос № 153179: Здравствуйте! Помогите пожалуйста, писал программу по одному примеру, которая с каждым нажатием кнопки создает надпись. Помогите пожалуйста в этом проекте ( http://rapidshare.com/files/170299304/111.rar.html ) каждой динамически созданной надписи при...
Вопрос № 153.179
Здравствуйте! Помогите пожалуйста, писал программу по одному примеру, которая с каждым нажатием кнопки создает надпись. Помогите пожалуйста в этом проекте ( http://rapidshare.com/files/170299304/111.rar.html ) каждой динамически созданной надписи присвоить обработчик события. Нужно чтобы при нажатии левой кнопки мышки на надписи, отображался её порядковый номер.
Отправлен: 06.12.2008, 11:55
Вопрос задал: compile (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Абельхарисов Руслан/Marked One
Здравствуйте, compile! Это сделать нетрудно. Сначало изменим процедуру создания метки:
Код:
procedure TFormInFc.Button1Click(Sender: TObject); begin with TLabel.Create(FormInFc) do begin inc(countLabel); parent := self; left := 260;
top := 3 + countLabel * (Height + 2); caption := 'Метка №'+IntToStr(countLabel); //Изменения в создании метки //В свойстве tag, созданной метки, сохраняем её номер tag := countLabel; //Присваиваем обработчику события наш обработчик OnClick := LabelClick; end; end;
Теперь создадим обработчик клика:
Код
:
procedure TFormInFc.LabelClick(Sender: TObject); begin //Наш обработчик. С помощью параметра обработчика Sender можно обратьится к любому свойству объекта событие которого обрабатывается //Но сначало надо из TObject получить TLable: (Sender as TLabel).любое свойство объекта MessageBox(0, PChar('Порядковый номер: ' + IntToStr((Sender
as Tlabel).Tag)), PChar('Порядковый номер: ' + IntToStr((Sender as Tlabel).Tag)), 0); end;
Теперь надо добавить созданный обработчик в объявление TFormInFc:
Код:
type TFormInFc = class(TForm) Button1: TButton
; Image1: TImage; procedure Button1Click(Sender: TObject); //Наш обработчик procedure LabelClick(Sender: TObject); private countLabel : integer; public { Public declarations } end;
Ну вот и всё. Полный код прикреплен к ответу. Удачи!!!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.