|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
События 2го уровня программного компонента
Не могу понять как можно реализовать?
По клику на кнопку открывается программно созданная форма F1, на ней несколько программно созданных кнопок(B1,B2,B3).ъ При щелчке на кнопку B1 создается программно форма F2 на ней тоже одна кнопка B4. как присвоить этой(последней) кнопке событие, в котором будет закрываться форма F2. Проблема у меня в том, как мне кажется, что событие не видит программно созданную последнюю форму. Может я совсем не так реализую задачу Код:
type BitButtonClass = class class procedure BitClick(Sender : TObject); end; //....... procedure TForm1.BitBtn1Click(Sender: TObject); var Forma : TForm; BitButton1 : TBitBtn; BitButton2 : TBitBtn; BitButton3 : TBitBtn; begin // Forma := TForm.Create(Self); With Forma do begin Left := 100; Top := 100; Height := 300; // Высота формы Width := 300; // Ширина формы BorderStyle := bsDialog; end; BitButton1 := TBitBtn.Create(Forma); With BitButton1 do begin Parent := Forma; Left := 20; Top := 235; Height := 25; // Высота Width := 75; // Ширина Caption :='Добавить'; Name := 'BitButton1'; Visible := true; OnClick := BitButtonClass.BitClick; end; BitButton2 := TBitBtn.Create(Forma); With BitButton2 do begin Parent := Forma; Left := 110; Top := 235; Height := 25; // Высота Width := 75; // Ширина Caption :='Изменить'; Name := 'BitButton2'; Visible := true; OnClick := BitButtonClass.BitClick; end; BitButton3 := TBitBtn.Create(Forma); With BitButton3 do begin Parent := Forma; Left := 200; Top := 235; Height := 25; // Высота Width := 75; // Ширина Caption :='Удалить'; Name := 'BitButton3'; Visible := true; OnClick := BitButtonClass.BitClick; end; Forma.ShowModal; Forma.Free; end; class procedure BitButtonClass.BitClick(Sender: TObject); var F: TForm; BitButton4: TBitBtn; begin if TBitBtn(Sender).Name = 'BitButton1' then begin // F := TForm.Create(nil); With F do begin Left := 100; Top := 100; Height := 300; // Высота формы Width := 300; // Ширина формы BorderStyle := bsDialog; end; BitButton4 := TBitBtn.Create(F); With BitButton4 do begin Parent := F; Left := 20; Top := 135; Height := 25; // Высота Width := 75; // Ширина Caption :='Добавить'; Name := 'BitButton4'; Visible := true; OnClick := BitButtonClass.BitClick; end; F.ShowModal; exit; // end; if (Sender as TBitBtn).Name = 'BitButton2' then begin ShowMessage('2'); end; // if (Sender as TBitBtn).Name = 'BitButton4' then begin F.Close; ShowMessage('4'); exit; end; ShowMessage(TBitBtn(Sender).Name); end; То есть я пытаюсь в обработчике события создать новую форму с кнопкой и обработать её событие программно, чтоб закрыть форму. Код:
if (Sender as TBitBtn).Name = 'BitButton4' then begin F.Close; ShowMessage('4'); exit; end; |
#2
|
||||
|
||||
Может хватит по темам размазывать? Я тебе уже выложил код с примером взаимодействия и закрытия.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
||||
|
||||
Цитата:
Код:
if TBitBtn(Sender).Name = 'BitButton1' then begin // F := TForm.Create(nil); Последний раз редактировалось Fantomas_RUS, 02.02.2013 в 17:00. |
#4
|
||||
|
||||
Код:
TForm((Sender as TBitBtn).Parent).Close; |
#5
|
||||
|
||||
Интересно, я разве не этот код в качестве примера приводил?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
||||
|
||||
Цитата:
|