Autor Beitrag
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 14.11.10 21:10 
Moin,

ich habe ein Formular in einer Anwendung, was einige Einstellungen verwaltet. Ich würde dieses jetzt gerne wie einen Dialog behandeln, d.h. mit execute aufrufen und falls dies TRUE ist die Werte auswerten. Wie muss so eine Execute-funktion aussehen?

Ansatz:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function Tfrm.execute : boolean;
begin
  frm.ShowModal;
  result := OKClicked;  
end;


Wäre noch zu klären, wie man das Formular am intelligentesten erzeugt. Vorher selbst erstellen und hinterher zerstören? Oder geht das more Delphi-like?

LG
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: So 14.11.10 21:19 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Class function TMyDialog.Execute(Param: String): Tmodalresult;
begin
  With Create(nildo
    begin
      Showmodal;
      Result := Modalresult;
      Free; 
    end;
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS


Zuletzt bearbeitet von bummi am So 14.11.10 21:20, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 14.11.10 21:20 
Wenn du es entsprechend der anderen Dialoge machen willst, dann erzeuge deine Dialog-Komponente (also hier wohl dein Formular) und rufe deren Execute auf. Wenn die Komponente nicht mehr gebraucht wird, zerstörst du sie wieder.

Theoretisch wäre auch eine Klassenfunktion möglich, aber das wäre dann nicht die typische Execute-Funktion, die in Delphi sonst verwendet wird.

// EDIT:
@user profile iconbummi:
Da fehlt irgendwie die Freigabe des Objektes...
Außerdem der Ressourcenschutzblock.
Außerdem geht das besser so (würde ich aber wie gesagt nicht so machen):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
class function TMyDialog.Execute(): Boolean;
var
  MyDialog: TMyDialog;
begin
  MyDialog := TMyDialog.Create(nil);
  try
    Result := MyDialog.ShowModal = mrYes;
  finally
    MyDialog.Free;
  end;
end;