Wen ich nun den Button1 klicke, erscheint das dynamische Form, aber leider wird mir der Constructor von TMyForm nicht aufgerufen. Die Caption wird geändert, nur wird das Form nicht rot, auch wird SchowModel nicht aufgerufen.
Was habe ich übersehen ?
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TMyForm = class(TForm)
constructor Create(TheOwner: TComponent); override;
end;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
constructor TMyForm.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
Color := $FF;
ShowMessage('abc');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f: TMyForm;
begin
f := TMyForm.CreateNew(nil);
f.Caption := 'Hello World';
f.ShowModal;
f.Free;
end;
end.
Wen ich anstelle von CreateNew, einfach Create aufrufe, kommt nur eine Fehlermeldung.
Code: Alles auswählen
Projekt project1 hat Exception-Klasse »EResNotFound« ausgelöst mit der Meldung:
Form resource TMyForm not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource.
In Datei 'include/customform.inc' in Zeile 2053
nil durch Self ersetzten bringt auch nichts.