Hallo,
ein Nachfahre von TCustomForm möchte immer eine *.dfm Datei, um die Form-Eigenschaften zu laden. Fehlt diese Ressource, kommt die Fehlermeldung.
Also einfach ein leeres Formular anlegen und dieses verwenden.
Übrigens kannst Du die ganzen Einstellungen noch besser verpacken, indem Du eine class function verwendest:
Delphi-Quellcode:
type
TLoadStatusForm = class(TForm)
private
FMsg: String;
protected
procedure Paint; override;
public
class function ShowStatus(const ACaption, Msg: String): TLoadStatusForm;
end;
var
LoadStatusForm: TLoadStatusForm;
implementation
{$R *.dfm}
{ TLoadStatusForm }
procedure TLoadStatusForm.Paint;
var
x, y: Integer;
begin
inherited;
x := (ClientWidth - Canvas.TextWidth(FMsg)) div 2;
y := (ClientHeight - Canvas.TextHeight(FMsg)) div 2;
Canvas.TextOut(x, y, FMsg);
end;
class function TLoadStatusForm.ShowStatus(const ACaption, Msg: String): TLoadStatusForm;
var
f: TLoadStatusForm;
begin
f := TLoadStatusForm.Create(nil);
f.Width := 300;
f.Height := 80;
f.Font.Name := 'Arial';
f.Font.Size := 12;
f.Font.Color := clBlack;
f.Position := poScreenCenter;
f.BorderStyle := bsToolWindow;
f.FormStyle := fsStayOnTop;
f.BorderIcons := [];
f.Caption := ACaption;
f.FMsg := Msg;
f.Show;
f.Refresh;
Result := f;
end;
Aufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
f: TLoadStatusForm;
begin
f := TLoadStatusForm.ShowStatus('
bla', '
blubb');
// Hier gibts die Exception, bzw. beim inherited Create in TLoadStatusForm.Create
// Datendankkrams...
f.Hide;
f.Free;
end;
Gruß
xaromz