Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form von Unit aus kontrollieren/steuern (https://www.delphipraxis.net/127217-form-von-unit-aus-kontrollieren-steuern.html)

Fisti 9. Jan 2009 10:07


Form von Unit aus kontrollieren/steuern
 
Hallo zusammen

Ich habe eine Form die ich als GUI benutze um einen Testablauf mit 3-5 Schritten darzustellen. Nun möchte ich diese Form für unterschiedliche Tests benutzen, was auch ganz verschiedene Abläufe gibt.

Denn ganzen Code in dieser einen Form ist sehr unschön und schwer zu pflegen, darum wollte ich die Form nur noch als GUI benutzen und die Testabläufe extern in einer Unit haben.

Mein erster Gedanke war eine Unit die den ganzen Grundablauf eines Testes handelt. Sprich die Form aufruft und diese auch steuert.
Steuert: Weiter/Zurück Button, ev. Textfelder auslesen

Nun stehe ich aber an. Wenn ich aus der Unit raus diese Form kreiere
Delphi-Quellcode:
Fmyform := TTestFormFrm.Create(nil);
wie kann ich dann nachher auf die Form zugreifen, sprich wie bekomme ich in der Unit mit, wann der Benutzer weiter klickt??


Ich hoffe jemand von euch kann mir helfen, beschäftige mich doch scho einige Zeit mit diesem Problem. Vieleicht bin ich auch völlig auf dem Holzweg und es würde auf eine andere Weise viel einfacher gehen.

Bin um jeden Tipp dankbar.

Danke im Voraus.
Gruss Christian

Ps: verwende Delphi 7

Nersgatt 9. Jan 2009 10:13

Re: Form von Unit aus kontrollieren/steuern
 
Befasse Dich mit Events. Dann kannst Du in Form ein Event "WeiterClicked" defnieren und in der Unit darauf reagieren.

Gruß,
Jens

nahpets 9. Jan 2009 12:11

Re: Form von Unit aus kontrollieren/steuern
 
Hallo,

wie ist das gedacht?

Deine Units machen irgendwas, dann wird das Formular angezeigt und Du wartest auf eine Benutzeraktion. Abhängig von dieser Benutzeraktion soll irgendetwas geschehen (weitermachen, wiederholen, abbrechen, was auch immer).
Wenn Du das Formular in diesem Fall mit ShowModal aufrufst, könntest Du jedem Button über ModalResult einen anderen Wert zuweisen (hier sind Integerwerte möglich, also mehr, als der Objektinspektor als Vorschläge zur Verfügung stellt).
In den Units kannst Du dann z. B. über
Delphi-Quellcode:
  case FortschrittsDialog.ShowModal of
    1 : //
    2 : //
    ...
  else
    // Defaultaktion
  end;
abfragen, was der Benutzer gemacht hat.
Dies funktioniert jedoch nicht, wenn das Formular permanent angezeigt werden soll.

Eine andere Möglichkeit wäre, in den Units den Dir bekannte Buttons... auf dem Formular Ereignisse zuzuweisen, die in der Unit definiert sind, so kann jede Unit ihre eigenen Ereignisroutinen mitbringen und das Formular führt die entsprechende Funktion aus.
Delphi-Quellcode:
// in Deiner Unit definiert
procedure myEnde(Sender: TObject);
begin
  Fmyform.Close;
  // und irgendwas weiteres an Code
end;
...
  Fmyform        := TTestFormFrm.Create(nil);
  Fmyform.OnClick := myEnde;
  // u.s.w. für jeden Button, auch OnEdit, OnClick, OnExit für Eingabefelder... sind möglich,
  // also alles das, was Du auch in der Formularunit machen könntest

Fisti 9. Jan 2009 14:05

Re: Form von Unit aus kontrollieren/steuern
 
vielen dank nahpets, hat mich schon ein stück weiter gebracht.

gruess christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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