![]() |
Haupt- und Nebenfenster-Problem
Ich habe zusätzlich zum Hauptfenster in meinem Programm ein Fenster, das erst zur Laufzeit erzeugt wird:
Delphi-Quellcode:
Soweit läuft alles perfekt, nur ein kleiner Schönheitsfehler tritt auf: Wenn das Fenster MyForm geöffnet ist, und ich dann wo anders hin klicke (z.B. auf die Taskleiste), und dann wieder zurück auf MyForm klicke, dann wird unerwünschterweise das Hauptfenster meines Programms angezeigt (obwohl ich auf MyForm geklickt habe). Offensichtlich ist beim Verlassen von MyForm der Fokus wieder auf das Hauptfenster übergegangen, sodass beim nochmaligen Klicken auf MyForm dann das Hauptfenster aktiviert wurde. Wie kann man das verhindern?
Application.CreateForm(TMyForm, MyForm);
try MyForm.WindowState := wsMaximized; MyForm.ShowModal; MyForm.BringToFront; //hilft auch nichts finally MyForm.Free; end; |
Re: Haupt- und Nebenfenster-Problem
Soll das 2. Fenster bis zum Schließen oben sein? (.ShowModal)
|
Re: Haupt- und Nebenfenster-Problem
Zitat:
|
Re: Haupt- und Nebenfenster-Problem
Also bei mir geht das problemlos ...
Dein
Delphi-Quellcode:
ist allerdings unnötig, weil ShowModal erst verlassen wird, wenn du das Fenster schließt!!
MyForm.BringToFront
|
Re: Haupt- und Nebenfenster-Problem
Zitat:
Aber, wie gesagt, wenn ich dann woanders klicke und dann auf das Nebenfenster klicke, wird das Hauptfenster angezeigt! |
Re: Haupt- und Nebenfenster-Problem
Delphi-Quellcode:
so wie du das programmiert hats, ist es das gewünschte verhalten.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses Unit2; procedure TForm1.Button1Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); try Form2.WindowState := wsMaximized; Form2.ShowModal; finally Form2.Free; end; end; end. grund hierfür ist das Showmodal, welche das Form2 als oberstes Fenster deiner Applikation anzeigt. Es werden also keine Eingaben in dein Form1 zugelassen. Da es aber das Hauptformular ist, wird es beim Reaktivieren deiner Applikation mit angezeigt. Was hast du denn genau vor? Für mich klingt das irgendwie als wenn du das zweite Fenster aufmachen möchtest um das erste Fenster zu verbergen? |
Re: Haupt- und Nebenfenster-Problem
Zitat:
Ich habe jetzt das Problem dadurch umgangen, dass ich jetzt vor dem Aufruf von
Delphi-Quellcode:
Form2.ShowModal
Delphi-Quellcode:
aufrufe, und nach dem Schließen des Nebenfensters wieder
Form1.WindowState := wsMinimized
Delphi-Quellcode:
, also so:
Form1.WindowState := wsMaximized
Delphi-Quellcode:
Wer weiß eine bessere Lösung?
procedure TForm1.NebenfensterOeffnen;
begin Application.CreateForm(TForm2, Form2); try Form2.WindowState := wsMaximized; Form2.BringToFront; Form1.WindowState := wsMinimized; Form2.ShowModal; finally Form2.Free; Form1.WindowState := wsMaximized; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz