@Vol4_OK

Как в delphi писать процедуры для динамических объектов?

Как делать события для динамических форм? И писать для них код.
  • Вопрос задан
  • 5061 просмотр
Решения вопроса 1
svd71
@svd71
Если вы создаете окна одного класса, то все функции, принадлежащие этому классу будут имплементированы во все копии. Пример:
type
 TNotepad = class(TForm) //Предок всех классов для записи блокнота
public
  class var OnAfterCreate: TNotifyEvent; //событие, для реакции после создания 
  constructor Create(AOwner: TComponent); override; //второй возможный 
                                    //вариатнвариант
end;

TMainForm = class(TForm)
   procedure FormCreate(Sender: TObject);
public
   procedure DoAfterCreate1(Sender:TObject); //вариант 1
   procedure  DoAfterCreate2(Sender:TObject); //вариант 2
end;

constructor TNotepad.Create(AOwner: TComponent);
begin
 inherited;
  //варант 1
 if Assigned(OnAfterCreate) then
      OnAfterCreate(Self);
//*1
//вариант 2
if Assigned(Screen.MainForm ) then
  if Screen.MainForm is TMainForm then
    TMainForm(Screen.MainForm).DoAfterCreate2(Self);
//*2
end;

procedute TMainForm.FormCreate(Sender:TObject);
begin
  TNotepad.OnAfterCreate := Self.DoAfterCreate1; //вариант 1
end;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
svd71
@svd71
Событие компонентов устанавливается определенного типа, поэтому нужно смотреть в первую очередь какой тип имеет событие. Под него создается процедура или функция объекта. Например реализация для кнопки и для формы на одну единственную процедуру, если известно, что она есть:
procedure TForm1.OnCklickFrom2(Sender: TObject);
begin
  Caption := TComponent(Sender).Name;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Frm2 : TForm2;
begin
  Frm2 := TForm2.Crete(Application);
  Frm2.OnClick := Self.OnCklickFrom2;
  Frm2.Button1.OnClick := Self.OnCklickFrom2;
end;
Ответ написан
@Vol4_OK Автор вопроса
Я создаю блокнот, и, разрабатываю возможность исп. множества окон. Как мне окно создавать много раз, и, чтобы там были все ф-ии, какие есть в окне-примере?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы