![]() |
Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Wenn ich ein Formular als Wartendialog einblende, um eine längere Wartezeit zu überbrücken, kriegt man es (leider) hin, dass Windows an dieser Stelle "Keine Rückmeldung" liefert. (das war in meiner Anwendung allerdings schon immer so und damit können/müssen wir derzeit leben). Seit Windows 8.1 führt dies aber zu einem schwarzen Balken am Formularrand und eine Verschiebung des Formularinhalts. Siehe Screenshot im Anhang. Selbes Verhalten habe ich auch schon im Delphi (XE2) in dem Dialog "Compilieren" festgestellt. Jemand eine Idee woran das liegt und vor allem, wie man es unterbinden kann? Danke Anhang 40195 |
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Wie soll man das nachstellen können? "Keine Rückmeldung" kommt wenn die Message-Loop nicht abgearbeitet (oder zumindest angefasst, oder?) wird. Was tust du? Sleep?
|
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Entweder sauber umsetzen, so dass die GUI nicht hängt.
Oder zumindest kein eigenes Formular als Wartefenster davorblenden... das macht mit diversen Tools Probleme, die das Fensterhandling optimieren wollen (ob das sinnvoll ist, sei mal dahingestellt, ich finde nicht, aber es gibt so etwas eben). Woran das liegt ist einfach: Die Randeinstellungen werden teilweise zurückgesetzt, wenn das Programm nicht mehr reagiert. Das liegt aber nicht an Windows 8.1, das hatte ich so auch schon bei Windows 7. Der entstehende Rand war nur nicht schwarz... Der Fehler liegt aber im Programm. Das Programm entspricht so eben nicht den Richtlinien für Windows Programme. |
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Mir ist schon klar, dass es grundsätzlich falsch ist. Lässt sich aber leider an einigen Stellen nicht vermeiden.
Ich warte auf die Rückmeldung eines Firebirdservers bei einem ziemlich aufwändigen Select (unterm Strich aber das gleiche wie Sleep...). |
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Und Application.ProcessMessages hilft dir auch nicht?
|
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Woe soll denn das gehen? Bei synchronem Fetch kann man so was nicht machen, es sei denn der Server unterstützt entsprechende Callbacks. Eine Möglichkeit wäre eventuell einen Thread dafür zu starten, der sich dann selber beendet wenn die Query gelaufen ist.
|
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Zitat:
Man kann ja mit WaitForSingleObject oder ähnlichen Methoden warten bis die Abfrage fertig ist, dann braucht man auch keine große Synchronisation, wenn man das gut genug kapselt. Man kann dann aber an der Stelle immer 100 Millisekunden oder so als Timeout nehmen und warten und dann Application.ProcessMessages aufrufen bis der Thread fertig mit dem Laden ist. Wie man das an der Stelle konkret machen kann um das threadsicher zu implementieren lässt sich so allgemein schlecht sagen. |
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Auf jeden Fall bedeutet eine threadsichere Implementierung, dass man es komplett umbauen muss. Und da gilt für mich derzeit "never touch the running system"A
Deswegen hatte ich ursprünglich auf Symptonbekämpfung bei dem schwarzen Rand gehofft. |
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Zitat:
Mit einem anonymen Thread verbunden mit einer anonymen Methode 5 Min. Aufwand. Ausser es ist alles mit der VCL verfrickelt.
Delphi-Quellcode:
TThread.CreateAnonymousThread(
procedure // Mach etwas zeitintensives und synchroniere das Resultat wohin auch immer begin end).Start; |
AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Hallo,
ich habe mir eine Procedure OpenQueryInThread(...) geschrieben. Diese erstellt einen geeigneten Thread und wartet dann. Wenn ich dann dafür sorge, dass im gerade offenen Dialog nichts mehr gemacht werden kann, habe ich bisher keine Probleme festgestellt, wenn ich
Delphi-Quellcode:
ausgetauscht habe.
...
Q.Open; --> OpenQueryInThread(Q); ... Man sollte das nur benutzen, wenn es wirklich länger dauert, da der Thread Verzögerungen verursacht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 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