AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"
Thema durchsuchen
Ansicht
Themen-Optionen

Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

Ein Thema von Ralle1 · begonnen am 19. Nov 2013 · letzter Beitrag vom 19. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
Ralle1

Registriert seit: 2. Nov 2011
49 Beiträge
 
Delphi XE3 Professional
 
#1

Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 12:22
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

win81rand.png
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 13:05
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?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 13:53
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Ralle1

Registriert seit: 2. Nov 2011
49 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 14:06
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...).
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 14:13
Und Application.ProcessMessages hilft dir auch nicht?
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 14:24
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 14:26
Und Application.ProcessMessages hilft dir auch nicht?
Sicherlich nicht in dem Fall, da es sich ja um eine lange Abfrage handelt, aber normalerweise macht man solche Abfragen in einem Thread.

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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Ralle1

Registriert seit: 2. Nov 2011
49 Beiträge
 
Delphi XE3 Professional
 
#8

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 15:04
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.
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
534 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 15:32
Auf jeden Fall bedeutet eine threadsichere Implementierung, dass man es komplett umbauen muss.
Was hast Du denn für eine Delphi Version?
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;
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#10

AW: Windows 8.1 Rand verschiebt sich bei "Keine Rückmeldung"

  Alt 19. Nov 2013, 15:34
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:
...
Q.Open; --> OpenQueryInThread(Q);
...
ausgetauscht habe.
Man sollte das nur benutzen, wenn es wirklich länger dauert, da der Thread Verzögerungen verursacht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:17 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