AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi class function, constructor oder function - guter Stil
Thema durchsuchen
Ansicht
Themen-Optionen

class function, constructor oder function - guter Stil

Ein Thema von dataspider · begonnen am 10. Feb 2009 · letzter Beitrag vom 11. Feb 2009
Antwort Antwort
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#1

class function, constructor oder function - guter Stil

  Alt 10. Feb 2009, 16:40
Hi,

bitte nicht gleich lynchen für die simple Frage, aber ich bin jetzt irgendwie gedanklich festgefahren.

Ich habe ein Basis - Dialogform. Davon gibt es dann einige Ableitungen.
Im Programm reicht mir dann ein Aufruf des Forms, welches lediglich eine ID (gewählter Datensatz) zurückgibt.

Momentan habe ich das mit einer class function im Basisform gemacht und es scheint auch das zu tun, was es soll.
Delphi-Quellcode:
class function TfrmBase.CreateAndShowModal(AOwner: TComponent; var AParam:
    Integer): Boolean;
Var
  f: TfrmBase;
begin
  // dirkter Aufruf Constructor ?
  f := Create(AOwner);
  try
    f.Init;
    Result := f.ShowModal = mrOK;
    if Result then
      AParam := f.GetParam;
  finally
    f.Free;
  end;
end;
Somit kann ich jetzt über die Klasse immer meinen Dialog aufrufen
Delphi-Quellcode:
if TBranchenAuswahl.CreateAndShowModal(Self, AId) then
begin
  // mach was
end
Allerdings habe ich das Gefühl, dass meist lieber dafür ein Constructor benutzt wird.
Dann wäre noch die Möglichkeit, eine Methode zu schreiben, die die Forms dann entsprechend der Klasse erzeugt
(so etwa CreateSelectFormAndShowModal(AFormClass: TFormClass...)

Ist gegen die class function etwas einzuwenden?
Oder noch einfacher gefragt: Welcher Stil ist sauber? [Edit]Rechtschreibfehler korrigiert[/EDIT]

Danke, Frank
Frank Reim
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: class function, constructor oder function - guter Stil

  Alt 10. Feb 2009, 16:46
Ein Konstruktor ist ja auch eine Art Klassenmethode.
Deine Lösung hat den Vorteil, dass keine Instanz existieren muss.
Markus Kinzler
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#3

Re: class function, constructor oder function - guter Stil

  Alt 11. Feb 2009, 09:58
Im Prinzip ist diese Konstruktion Ok, habe ich auch schon so gemacht.
Problematisch ist eventuell der Owner, hier besser nil übergeben, da deine Funktion die Freigabe selbst übernimmt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: class function, constructor oder function - guter Stil

  Alt 11. Feb 2009, 10:21
Den Owner braucht man hier wirklich nicht und den Grund hat Blup ja schon erwähnt,
aber manchmal wäre einen Parent nicht schlecht übergeben.

Also ein Fenster zu dem das hier erstellte Fenster untergeordnet sein soll.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: class function, constructor oder function - guter Stil

  Alt 11. Feb 2009, 10:38
Erst mal vielen Dank an Alle!
Jetz kann ich auf diesem Weg beruhigt meine Dialogformular - Aufrufe vereinfachen.

Den Owner übergebe ich, um evtll. das PopupParent setzen zu können.
[EDIT]Klar, ich sollte dann den Parameter besser APopupParent nennen.[/EDIT]

Ich habe nämlich das Problem mit verdeckten modalen Fenstern (Z-Order) noch nicht 100%ig im Griff.
(Das betrifft aber wahrscheinlich nur Anwendungen unter Citrix und ist halt ein anderes Problem)

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: class function, constructor oder function - guter Stil

  Alt 11. Feb 2009, 11:07
Zitat von dataspider:
Ich habe nämlich das Problem mit verdeckten modalen Fenstern (Z-Order) noch nicht 100%ig im Griff.
drum übetgib mal deinem Fenster einen passenden Parent ... dieses bewirkt Wunder

Delphi-Quellcode:
class function TfrmBase.CreateAndShowModal(AParent: TComponent; var AParam: Integer): Boolean;
Var
  f: TfrmBase;
begin
  f := Create(nil);
  try
    f.Parent := AParent;
    f.Init;
    Result := f.ShowModal = mrOK;
    if Result then
      AParam := f.GetParam;
  finally
    f.Free;
  end;
end;

class function TfrmBase.CreateAndShowModal(AParent: TComponent; out AParam: Integer): Boolean;
begin
  with Create(nil) as TfrmBase do
    try
      Parent := AParent;
      Init;
      Result := ShowModal = mrOK;
      if Result then AParam := GetParam;
    finally
      Free;
    end;
end;
Gruß Frank
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: class function, constructor oder function - guter Stil

  Alt 11. Feb 2009, 12:05
Zitat von himitsu:
drum übetgib mal deinem Fenster einen passenden Parent ... dieses bewirkt Wunder
Meinst du wirklich Parent?.

Ich will einen modalen Dialog ja nicht auf ein anderes Form legen.
Es soll schon wie ein Dialogformular verschiebbar etc. sein.

Gruß, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: class function, constructor oder function - guter Stil

  Alt 11. Feb 2009, 12:13
Bei Fenstern ist das so, daß das ParentWindows gesperrt wird (keine Eingabe dort möglich) und daß das ChildWindow immer vor dem ParentWindow liegt.

Ohne Parent sind die Beiden unabhängig voneinander, also auch was die Z-Order betrifft ... es sei denn zu steuerst selber die Z-Order.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz