Zwei Delphi Formulare verbinden

2 Antworten

Hi,

die Funktion Show ändert nur die Eigenschaft visible. Ist das Formular also schon sichtbar passiert gar nichts.

Suchst du eine Möglichkeit das Formular in den Vordergrund zu schieben? Dann musst du die Methode BringToFront verwenden.

Ich benutze dafür immer eine eigene Methode, welche das Formular auch anzeigt, wenn es zB minimiert ist.

hier der Code:

   procedure ForceShow(const frm: TForm);
   begin
      if frm.WindowState = wsMinimized then
         ShowWindow(frm.Handle, SW_RESTORE);
      if not frm.Visible then
         frm.Show
      else
         frm.BringToFront;
   end;

Aufruf zB : ForceShow(Form1)

viel Erfolg , gruss dj

Walodex 
Fragesteller
 01.05.2014, 12:31

Danke für die Antwort.

Leider hilft mir das aktuell nicht weiter, da ich nicht wirklich weiß, wie ich es verwenden soll bzw. wie die Prozedur ForceShow funktioniert. Was ich auch nicht will ist, dass ich (bis aus wenige Ausnahmen) zwei Fenster Gleichzeitig nutzen kann, ich will immer nur eines haben, und auch nur dieses in der Taskleiste haben. Ich will sozusagen die Navigation durch mein Programm durch mehrere Formulare besser strukturieren, da mir die Visible true/false Sachen auf dauer bei einem so großen Programm zu unübersichtlich werden, und hab halt gedacht, ich könnte es so machen.

Würde mich riesig freuen, wenn du mir das also erklären könntest oder vielleicht noch eine andere Idee hast. Danke :D

Lg.

0
DataJockey  02.05.2014, 11:03
@Walodex

Dann kannst du die Komponente TNotebook verwenden. Diese stellt dir Seiten zur Verfügung, ..welche du anschalten kannst. Dann bleibt alles in einem Formular.

...oder du verwendest Frames (TFrame). Die kannst du wie ein Formular programmieren und dann in deinem Formular verwenden.

Oder du verwendest Panels mit alClient Alignment und schaltest immer nur eines visibile.

Bitte sieh mir nach, dass ich dir hier keinen Einsteigerkurs in Anwendungsentwicklung geben kann. Die paar Brotkrumen sollten dir bei deiner weiteren Recherche helfen.

Gruss, dj

0

Wie DataJockey schon schreibt, kann man in 1 Formular mehrere Ebenen verwalten - ich würde dir aber TPageControl empfehlen, weil das einfacher zu handlen ist (finde ich). Einfach aufs Formular setzen, draufzeigen, rechte Maustaste und "neue Seiten einfügen".

Übrigens kannst du unter Windows nicht "gleichzeitig" 2 Fenster "aktiv" haben. Der Focus ist entweder auf dem einen oder auf dem anderen Fenster (Formular). WOhl aber kannst du mehrere Fenster optisch steuern, also "gleichzeitig" Ausgaben generieren, die dort angezeigt werden. - aber für Eingaben benutzen jeweils nur das aktive Fenster. Ok, manche Fenster sind nicht aktiv und du kannst trotzdem mit dem Mausrad den Inhalt scrollen - das wird aber mit dem Maustreiber über Hooks gelöst...

Zu deinem Thema zurück - einen Home-Button: du kannst das mit einem globalen Hotkey lösen (zB wenn man die Pause-Taste drückt; "global", wenn er auch in anderen Fenstern anderer Programme funktionieren soll, zB um Screenshots zu erzeugen). Oder du hast auf jedem Formular einen Button, der das Hauptfenster vorholt.