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.