AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Haupt- und Nebenfenster-Problem

Ein Thema von PeterPanino · begonnen am 30. Jul 2007 · letzter Beitrag vom 1. Aug 2007
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

Haupt- und Nebenfenster-Problem

  Alt 30. Jul 2007, 22:46
Ich habe zusätzlich zum Hauptfenster in meinem Programm ein Fenster, das erst zur Laufzeit erzeugt wird:

Delphi-Quellcode:
Application.CreateForm(TMyForm, MyForm);
try
  MyForm.WindowState := wsMaximized;
  MyForm.ShowModal;
  MyForm.BringToFront; //hilft auch nichts
finally
  MyForm.Free;
end;
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Haupt- und Nebenfenster-Problem

  Alt 31. Jul 2007, 05:39
Soll das 2. Fenster bis zum Schließen oben sein? (.ShowModal)
Markus Kinzler
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Haupt- und Nebenfenster-Problem

  Alt 31. Jul 2007, 14:39
Zitat von mkinzler:
Soll das 2. Fenster bis zum Schließen oben sein? (.ShowModal)
Ja, natürlich.
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Haupt- und Nebenfenster-Problem

  Alt 31. Jul 2007, 14:43
Also bei mir geht das problemlos ...

Dein MyForm.BringToFront ist allerdings unnötig, weil ShowModal erst verlassen wird, wenn du das Fenster schließt!!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Haupt- und Nebenfenster-Problem

  Alt 31. Jul 2007, 15:02
Zitat von Whookie:
Dein MyForm.BringToFront ist allerdings unnötig, weil ShowModal erst verlassen wird, wenn du das Fenster schließt!!
Ist mir klar, war ein Lapsus.
Aber, wie gesagt, wenn ich dann woanders klicke und dann auf das Nebenfenster klicke, wird das Hauptfenster angezeigt!
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Haupt- und Nebenfenster-Problem

  Alt 31. Jul 2007, 23:00
Delphi-Quellcode:
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.
so wie du das programmiert hats, ist es das gewünschte verhalten.
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?
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Haupt- und Nebenfenster-Problem

  Alt 1. Aug 2007, 01:27
Zitat von computer-glossar.de:
Da es aber das Hauptformular ist, wird es beim Reaktivieren deiner Applikation mit angezeigt.
Ja , genau das ist ja das Problem: Da nämlich beide Fenster - Haupt- und Nebenfenster - maximiert sind, wird beim Reaktivieren dann nur das Hauptfenster angezeigt. Stattdessen sollte aber das modale Nebenfenster angezeigt werden!

Ich habe jetzt das Problem dadurch umgangen, dass ich jetzt vor dem Aufruf von Form2.ShowModal Form1.WindowState := wsMinimized aufrufe, und nach dem Schließen des Nebenfensters wieder Form1.WindowState := wsMaximized , also so:

Delphi-Quellcode:
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;
Wer weiß eine bessere Lösung?
  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 15: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