Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: 'Ressource X nicht gefunden' bei eigener Form-Klasse

  Alt 18. Jun 2007, 16:24
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat