Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

´Windows-Task-Manager-Vorschau-Miniaturen

11 views
Skip to first unread message

Matthias Hanft

unread,
Jan 29, 2021, 4:21:48 PM1/29/21
to
Hallo,

vermutlich ist das eher eine Windows- als eine Delphi-Angelegenheit:

Ich habe hier (m)ein Delphi-7-Programm mit einem Hauptfenster, das
immer wieder mal (meist modale) andere Fenster anzeigt und dann
wieder schließt.

Wenn man eine Zeitlang mit dem Programm gearbeitet und derweil auch
mehrere ganz andere Programme offen hat und dann immer wieder mit
ALT-TAB zwischen den verschiedenen Programmen wechselt, sieht man,
während man die ALT-Taste beim Tabben festhält, ja Miniaturansichten
der gerade offenen Programme.

Und da wird bei meinem Programm nicht etwa das gerade benutzte
Fenster (oder das Hauptfenster) angezeigt, sondern ein ganz anderes
Fenster - z.B. ein modales Fenster, das *irgendwann* mal offen war.

Ist jetzt zwar nicht weltbewegend, aber zumindest Kategorie
"unschön" - und bei anderen Programmen klappt das ja auch: Die
zeigen ja u.U. sogar eine *bewegte* Miniatur des aktuellen
Live-Bildschirms an. So viel Schnickschnack will ich ja gar
nicht haben, aber wenn's z.B. eine Windows-API mit einem Call
à la SetPreviewForm(Form.Handle) oder so gäbe, würde ich die
gerne aufrufen, damit die Vorschau die gerade aktuelle Form
anzeigt.

Gibt's da was?

Danke & Gruß Matthias.

Ole Jansen

unread,
Feb 1, 2021, 3:09:13 AM2/1/21
to
Am 29.01.2021 um 22:21 schrieb Matthias Hanft:
> Hallo,
>
> vermutlich ist das eher eine Windows- als eine Delphi-Angelegenheit:
>
> Ich habe hier (m)ein Delphi-7-Programm mit einem Hauptfenster, das
> immer wieder mal (meist modale) andere Fenster anzeigt und dann
> wieder schließt.

Ist es eine "klassische" oder eine .NET Anwendung?
Betrifft es nur die mit TAB angezeigte Vorschau
oder auch die Thumbnail-Vorschau in der Taskleiste?

O.J.

Matthias Hanft

unread,
Feb 1, 2021, 12:27:14 PM2/1/21
to
Ole Jansen schrieb:
>
> Ist es eine "klassische" oder eine .NET Anwendung?

Ganz klassisch - eine ganz normale Forms-Anwendung ohne
weitere Besonderheiten.

> Betrifft es nur die mit TAB angezeigte Vorschau
> oder auch die Thumbnail-Vorschau in der Taskleiste?

Auch die Taskleiste (also wenn man mit der Maus drüber
geht - oder meintest du was anderes?). *Die* beiden Bilder
scheinen also übereinzustimmen. Im Moment wird gerade bei
beiden die Miniatur einer modalen Form angezeigt, die ich
irgendwann heute Vormittag mal offen hatte.

Ah - *das* ist anscheinend das System: Für die Windows-
Vorschauen wird für den *gesamten* Rest der Programmlaufzeit
offenbar stets die *erste* vom Programm mit Form.Show oder
Form.ShowModal angezeigte Form verwendet!

Hilft das bei der Diagnose irgendwie weiter?

Gruß Matthias.

Ole Jansen

unread,
Feb 2, 2021, 3:01:26 AM2/2/21
to
Am 01.02.2021 um 18:27 schrieb Matthias Hanft:
> Ole Jansen schrieb:
>>
>> Ist es eine "klassische" oder eine .NET Anwendung?
>
> Ganz klassisch - eine ganz normale Forms-Anwendung ohne
> weitere Besonderheiten.

Also VCL.

>> Betrifft es nur die mit TAB angezeigte Vorschau
>> oder auch die Thumbnail-Vorschau in der Taskleiste?
>
> Auch die Taskleiste (also wenn man mit der Maus drüber
> geht - oder meintest du was anderes?). *Die* beiden Bilder
> scheinen also übereinzustimmen. Im Moment wird gerade bei
> beiden die Miniatur einer modalen Form angezeigt, die ich
> irgendwann heute Vormittag mal offen hatte.

Ist die Eigenschaft: Application.MainFormOnTaskbar := True;
gesetzt?

> Ah - *das* ist anscheinend das System: Für die Windows-
> Vorschauen wird für den *gesamten* Rest der Programmlaufzeit
> offenbar stets die *erste* vom Programm mit Form.Show oder
> Form.ShowModal angezeigte Form verwendet!

Um Windows zu bewegen die Thumbnail Ansicht neu zu zeichnen
muss das betreffende Formular zur zur Laufzeit erzeug und
ggf. freigegeben/zerstört werden. So z.B.

procedure TForm1.Button1Click(Sender: TObject);
begin
with SomeDialog.Create(Self) do
begin
PopupParent := Self;
ShowModal;
Release;
end;
end;

Du könntest z.B. auch DestroyWindow im modalen Formular
aufrufen wenn es geschlossen wird.

Embarcadero kann da nicht viel machen, fürchte ich?

> Hilft das bei der Diagnose irgendwie weiter?

Es wäre evtl. ein Workarround. Falls nach dem Schliessen des
Fensters noch auf Inhalte zugegriffen werden funktioniert
das natürlich nicht.

Weitere Verwirrungen kann es geben wenn die Applikation
Eigentümer oder Popup Parent ist und nicht das Hauptformular.
Dann werden die Dialoge in der Vorschau evtl. unter dem
Hauptfenster gezeichnet und Du siehst sie nicht.

Viele Grüße,

O.J.

Matthias Eißing

unread,
Feb 2, 2021, 6:48:32 AM2/2/21
to
Am 02.02.21 um 09:01 schrieb Ole Jansen:
> Ist die Eigenschaft: Application.MainFormOnTaskbar := True;
> gesetzt?

Er schrieb von Delphi 7.

NB: Die Delphi Community Edition ist kostenfrei für
nicht/gering-kommerzielle Zwecke.
https://www.embarcadero.com/de/products/delphi/starter

--
cu://Matthias.Eißing.de

Ole Jansen

unread,
Feb 2, 2021, 7:35:12 AM2/2/21
to
Am 02.02.2021 um 12:48 schrieb Matthias Eißing:
> Am 02.02.21 um 09:01 schrieb Ole Jansen:
>> Ist die Eigenschaft: Application.MainFormOnTaskbar := True;
>> gesetzt?
>
> Er schrieb von Delphi 7.
>

Uups, hatte das mit Delphi 2007 verwexelt...

Matthias Hanft

unread,
Feb 2, 2021, 9:39:28 AM2/2/21
to
Matthias Eißing schrieb:
>
> NB: Die Delphi Community Edition ist kostenfrei für
> nicht/gering-kommerzielle Zwecke.
> https://www.embarcadero.com/de/products/delphi/starter

Ja, hab ich gesehen. Da fall' ich nur leider (oder gottseidank,
wie man's nimmt) nicht drunter (sondern arg drüber) :-)

BDS 2006 hab ich damals noch gekauft, bin aber nie so richtig warm
damit geworden. (Das kommt davon, wenn man mit der goldenen Regel
bricht, dass nur *ungerade* Delphi-Versionen brauchbar sind.)

Danach gabs (für mich) eigentlich keinen Grund, noch weiter upzu-
graden, weil sogar mit D7 heute noch alles geht, was man braucht
(bzw. was *ich* brauche). Der einzige Grund, ein aktuelles Delphi
(oder wie es diese Woche heißt) neu zu kaufen, wäre nativer 64-
Bit-Code für Windows *und* Linux (was mit der aktuellen Version
ja anscheinend möglich ist). Aber das ist offenbar nur in der
"Enterprise"-Version für 3.399 € drin (+999 € pro Jahr), und
dafür ist mein Bedarf nicht groß genug, solange ich meine Projekte
auch irgendwie anders lösen kann (und wenn's simple PHP-Skripte
sind).

Abgesehen davon würde es ja auch nicht in fünf Minuten funktio-
nieren, D7-Code in ein aktuelles Delphi zu laden und zu glauben,
dass man das 1:1 erzeugen kann (schon alleine wegen der irgendwann
erfolgten ANSI/UTF8-Umstellung).

> Ist die Eigenschaft: Application.MainFormOnTaskbar := True;
> gesetzt?

Macht die vielleicht nur irgendeinen KERNEL32.DLL-Aufruf? Den kann
ich ja notfalls auch nachbauen.

> Um Windows zu bewegen die Thumbnail Ansicht neu zu zeichnen
> muss das betreffende Formular zur zur Laufzeit erzeug und
> ggf. freigegeben/zerstört werden. So z.B.

Ok, das könnte ich mal probieren. Aktuell lasse ich einfach alle
Formulare automatisch erzeugen und mache dann nur ShowModal und
sonst nix. Viel Aufwand wärs ja nicht, da noch ein Create/Destroy
drumherum zu machen, wenn das hilft.

Gruß Matthias.
0 new messages