Thema: Delphi Problem mit Klassen

Einzelnen Beitrag anzeigen

Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Problem mit Klassen

  Alt 31. Aug 2006, 16:28
Zitat von Jelly:
Zitat von Cöster:
Dann bräuchte ich aber drei Parameter. Für Dlg.Execute brauche ja auch den Parameter des Typs TOpenPictureDialog. Hast du das übersehen?
Klassen sollen, wenn möglich, für sich alleine werkeln können. Referenzen von anderen Objekten zu übergeben ist also nicht immer angebracht, meiner Meinung nach.

Da ich davon ausgehe, dass Du jetzt kein spezielles TOpenPictureDialog konfigueriert hast, würde ich diesen auch selbst in deiner Klasse erzeugen. Dann brauchst Du nämlich gar nix übergeben... Etwa so:


Delphi-Quellcode:
procedure TBild.Oeffnen(Img: TImage);
var
 dlg : TOpenPictureDialog ;
begin
  try
     Dlg := TOpenPictureDialog.create (Self) ;
     // Hier kannst Du natürlich noch weiter Dlg Eigenschaften einstellen, wie z.B. Dlg.Title oder Dlg.Filter
     If Dlg.Execute then
     begin
       self.FCurrentFile := Dlg.FileName;
       Img.Picture.LoadFromFile(Dlg.FileName);
       Img.Picture.Bitmap.PixelFormat := pf24Bit;
       Img.Visible := True;
     end;
  finally
     Dlg.Free ;
  end ;
end;

Delphi-Quellcode:
procedure TBild.Oeffnen(Img: TImage);
var
 dlg : TOpenPictureDialog ;
begin
     Dlg := TOpenPictureDialog.create (Self) ;
  try
     // Hier kannst Du natürlich noch weiter Dlg Eigenschaften einstellen, wie z.B. Dlg.Title oder Dlg.Filter
     If Dlg.Execute then
     begin
       self.FCurrentFile := Dlg.FileName;
       Img.Picture.LoadFromFile(Dlg.FileName);
       Img.Picture.Bitmap.PixelFormat := pf24Bit;
       Img.Visible := True;
     end;
  finally
     Dlg.Free ;
  end ;
end;
Wäre so besser, da Du sonst versuchst etwas freizugeben, was vielleicht gar nicht erzeugt worden ist, im Falle wenn das Erzeugen des Dialogs schon fehlschlägt.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat