AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierbar
Thema durchsuchen
Ansicht
Themen-Optionen

Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierbar

Ein Thema von Peter Müller · begonnen am 15. Feb 2015 · letzter Beitrag vom 23. Feb 2015
Antwort Antwort
Peter Müller

Registriert seit: 15. Mär 2006
Ort: Stuttgart
22 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierbar

  Alt 15. Feb 2015, 23:02
Hallo zusammen,

wenn ich ein modales Fenster im Programm anzeige und das Programm wird minimiert oder von einem anderen Programm überdeckt, dann kann ich es durch Anklicken in der Taskleiste nicht mehr anzeigen. Beim Klicken passiert einfach überhaupt nichts. Verwende Delphi XE2, das Projekt wurde von Delphi 2(!) übernommen. Hat mir bitte jemand eine Idee?

Folgenden Lösungsvorschlag aus dem Internet habe ich bereits ausprobiert, dann muss man allerdings bis zu 3 Mal in der Taskleiste klicken, bis das Fenster wieder da ist:
Delphi-Quellcode:
const
  WM_REENABLE = WM_USER + $100;

  procedure WMEnable(var Message: TWMEnable); Message WM_ENABLE;
  procedure WMReenable(var Message: TMessage); Message WM_REENABLE;

procedure TForm1.WMEnable(var Message: TWMEnable);
begin
  if not Message.Enabled then PostMessage(Self.Handle, WM_REENABLE, 1, 0);
end;

procedure TForm1.WMReenable(var Message: TMessage);
begin
  EnableWindow(Self.Handle, True);
end;
Vielen Dank

Peter
"Der Erfolg besteht manchmal in der Kunst, das für sich zu behalten, was man nicht weiß." Sir Peter Ustinov
  Mit Zitat antworten Zitat
Peter Müller

Registriert seit: 15. Mär 2006
Ort: Stuttgart
22 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 22. Feb 2015, 21:43
Hallo zusammen,

habe noch ein bisschen experimentiert:
Das Problem tritt auch bei einem komplett neuen Projekt mit nur zwei Formularen auf, von denen eins mit ShowModal angezeigt wird, nicht jedoch, wenn ich z. B. die Druckereinrichtung über TPrinterSetupDialog oder einen TOpenDialog öffne. Bei diesen reicht einmaliges Klicken in der Taskleiste.

Was machen denn die Systemdialoge anders?

Vielen Dank

Peter
"Der Erfolg besteht manchmal in der Kunst, das für sich zu behalten, was man nicht weiß." Sir Peter Ustinov
  Mit Zitat antworten Zitat
Peter Müller

Registriert seit: 15. Mär 2006
Ort: Stuttgart
22 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 22. Feb 2015, 22:48
Hallo zusammen,

hab inzwischen herausgefunden, wie es funktioniert. Falls es mal jemand brauchen sollte, hier die Lösung:

Form1 ist das Hauptformular, Form2 das modale Formular. Man nehme eine TApplicationEvents-Komponente und den nachfolgenden Kode unter ApplicationEvents1Activate.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Dialogs, Vcl.Forms, Vcl.StdCtrls, Vcl.AppEvnts;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    ApplicationEvents1: TApplicationEvents;
    procedure Button1Click(Sender: TObject);
    procedure ApplicationEvents1Activate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Form2: TForm;

implementation

{$R *.dfm}

uses PassWord;

procedure TForm1.ApplicationEvents1Activate(Sender: TObject);
begin
  if (Form2 <> Nil) and (fsModal in Form2.FormState) and Form2.Showing then Form2.BringToFront;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TPasswordDlg.Create(Self);
  Form2.Parent := Self;
  if Form2.ShowModal = mrOK then begin
// mache was...
  end;
end;

end.
Viele Grüße

Peter
"Der Erfolg besteht manchmal in der Kunst, das für sich zu behalten, was man nicht weiß." Sir Peter Ustinov
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 22. Feb 2015, 22:58
Form2.Parent := Self; ist hier der eigentliche Auslöser, aber da du ja den Code erst jetzt hier zeigst, konnte dir auch niemand helfen.

Anyway, du hast ja eine Lösung, obwohl du dies mit dem Parent setzen nochmals überdenken solltest.

BTW: Bei den System-Dialogen wird der Parent nicht gesetzt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 23. Feb 2015, 01:28
Aber modale Fenster benötigen ein Fensterhandle, damit Windows weiß zu welchem Fenster das modale Fenster modal ein soll. Also wird doch so etwas wie ein Parent gesetzt. Dem zu folge müsste es nicht heißen: Form2.Parent := Form1; ?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.339 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 23. Feb 2015, 05:50
Wenn das Projekt von Delphi 2 übernommen wurde, fehlt da schlicht Application.MainFormOnTaskbar := True; im Projektquelltext. Das wird bei neuen Projekten standardmäßig aktiviert. Vergleiche einfach einmal den Projektquelltext in der .dpr (Strg + V auf das Projekt in der Projektverwaltung) mit dem eines neuen Projekts.
Dann funktioniert es eigentlich ohne Verrenkungen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 23. Feb 2015, 06:22
Aber modale Fenster benötigen ein Fensterhandle, damit Windows weiß zu welchem Fenster das modale Fenster modal ein soll. Also wird doch so etwas wie ein Parent gesetzt. Dem zu folge müsste es nicht heißen: Form2.Parent := Form1; ?
Da die Modalität durch Delphi selber geschieht (eine tolle Schleife mit Application.ProcessMessages ,...) ist es eh Schnurz.

Und nein, bitte nicht Form2.Parent := Form1; mit der globalen Form-Variablen Form1 innerhalb der Klassen-Methoden von TForm1 arbeiten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 23. Feb 2015, 09:44
Ups. Self wäre natürlich richtig gewesen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Peter Müller

Registriert seit: 15. Mär 2006
Ort: Stuttgart
22 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Modales Fenster nach Minimieren in Taskleiste nicht mehr durch Klicken aktivierba

  Alt 23. Feb 2015, 16:49
Wenn das Projekt von Delphi 2 übernommen wurde, fehlt da schlicht Application.MainFormOnTaskbar := True; im Projektquelltext. Das wird bei neuen Projekten standardmäßig aktiviert. Vergleiche einfach einmal den Projektquelltext in der .dpr (Strg + V auf das Projekt in der Projektverwaltung) mit dem eines neuen Projekts.
Dann funktioniert es eigentlich ohne Verrenkungen.
Das hatte Delphi XE2 bereits selbst eingebaut, da hatte ich zuerst danach geschaut.

Danke an Sir Rufo für den Tipp, dass ich den Parent einfach nicht setzen soll, dann funktioniert es auch ganz ohne Tricks mit Vista, 7 usw.

Peter
"Der Erfolg besteht manchmal in der Kunst, das für sich zu behalten, was man nicht weiß." Sir Peter Ustinov
  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 08:38 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