Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.02.2013, 16:02
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
Вопрос События 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  
Старый 02.02.2013, 16:16
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Может хватит по темам размазывать? Я тебе уже выложил код с примером взаимодействия и закрытия.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 02.02.2013, 16:32
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Цитата:
Сообщение от angvelem
Может хватит по темам размазывать? Я тебе уже выложил код с примером взаимодействия и закрытия.
Да я понял как использовать твой код, но во в этом месте
Код:
if TBitBtn(Sender).Name = 'BitButton1' then
  begin
  //
  F := TForm.Create(nil);
я не могу передать параметром Sender значение Forma для создания формы. Он ее не видит. Форма то при написании еще не существует. Как поступить? Я извиняюсь, вопросы возникают после неоднократных танцев с бубном и различных попыток решить проблему.

Последний раз редактировалось Fantomas_RUS, 02.02.2013 в 17:00.
Ответить с цитированием
  #4  
Старый 02.02.2013, 21:54
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Код:
TForm((Sender as TBitBtn).Parent).Close;
Все выполнено. Ещё раз спасибо
Ответить с цитированием
  #5  
Старый 02.02.2013, 22:19
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Интересно, я разве не этот код в качестве примера приводил?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 03.02.2013, 23:04
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Цитата:
Сообщение от angvelem
Интересно, я разве не этот код в качестве примера приводил?
Да как раз этот, просто привел ещё раз, если у кого-то такой вопрос возникнет, что возник у меняю
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter