Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Controls im PageControl verschwinden unkontrolliert (https://www.delphipraxis.net/160673-controls-im-pagecontrol-verschwinden-unkontrolliert.html)

Adrian Z. 25. Mai 2011 15:25

Controls im PageControl verschwinden unkontrolliert
 
Hallo allerseits,

ich habe eine Form mit einem PageControl mit 3 Seiten darauf. In dem PageControl befindet sich eine Hotkey-Komponente. Beim Eingeben eines Hotkeys, der mit Strg+Alt beginnt, verschwinden interessanterweise sämtliche Checkboxen und Buttons auf dieser Seite des Pagecontrols. Sobald man mit der Maus über die einzelnen verschwundenen Komponenten fährt, sind sie wieder sichtbar. Labels sind davon nicht betroffen, sie verschwinden nicht. Auch wenn die Hotkey-Komponente nicht den Fokus hat (versuchsweise habe ich sie sogar ganz gelöscht) verschwinden die Controls, wenn man Strg-Alt drückt.

Wie kann ich das verhindern, damit man auch einen Strg-Alt-... Hotkey "problemlos" eingeben kann?

Danke für eure Antworten
Adrian

himitsu 25. Mai 2011 15:32

AW: Controls im PageControl verschwinden unkontrolliert
 
Das scheint ein Verhalten von älteren Delphiversionen im Windows 7 zu sein.
Ist mir im D7 auch schon aufgefallen, allerdings nicht nur in PageControls.

Ich bin mir nicht sicher, aber irgendwo in der DP und/oder im QC gibt es dafür einen Bugfix.

Adrian Z. 25. Mai 2011 16:21

AW: Controls im PageControl verschwinden unkontrolliert
 
Ok danke. Schön, dass der Fehler bekannt ist :-)

Die Seite von QC finde ich leider nicht (die Seite aus der ToolTipText-Hilfe von DP existiert leider nicht) und auf Delphi-Praxis habe ich nichts gefunden.
Wo finde ich den Bugfix?

Danke!

DeddyH 25. Mai 2011 17:10

AW: Controls im PageControl verschwinden unkontrolliert
 
Ich bin nicht sicher, aber ich vermute, das ist von Andreas Hausladen. Geh mal in die Sparte "Software-Projekte der Mitglieder" und such dort nach Themen, die von jbg begonnen wurden. Wenn ich recht habe, müsste es da dabei sein.

Adrian Z. 25. Mai 2011 17:37

AW: Controls im PageControl verschwinden unkontrolliert
 
Ich habe das VCLFixPack 1.2 gefunden und als Unit eingebunden. Leider wird das Problem dadurch noch nicht behoben.
Oder muss ich das IDEFixpack nehmen. Aber das ist doch gar nicht für D2005, oder? Außerdem stand da, dass es die eigenen Projekte nicht verändert.

Was kann ich noch tun?

jbg 25. Mai 2011 17:58

AW: Controls im PageControl verschwinden unkontrolliert
 
Folgender Code muss in Controls.pas::TWinControl.WndProc nach dem "inherited WndProc(Message);" Aufruf.
Delphi-Quellcode:
if Message.Msg = WM_UPDATEUISTATE then
  Invalidate; // Ensure control is repainted

himitsu 25. Mai 2011 18:13

AW: Controls im PageControl verschwinden unkontrolliert
 
Da es etwas "schwer" ist, die VCL-Cuellcodes zu ändern, könnte man es auch so versuchen:
Delphi-Quellcode:
uses Controls;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
  C: TWinControl;
begin
  if Msg.message = WM_UPDATEUISTATE then begin
    C := FindControl(Msg.hwnd);
    if Assigned(C) then
      C.Invalidate;
  end;
end;

Application.OnMessage := ApplicationEvents1Message;
// Wenn schon vorhanden, dann TApplicationEvents auf die Form pappen und dort OnMessage verwenden
// Auf einer Form reicht, da es für alle Controls verwendet wird.
Aber es könnte auch sein, daß es so zu früh ausgelöst wird ... wenn's nicht klappt, dann würd ich da noch was dran verändern.

Adrian Z. 25. Mai 2011 19:14

AW: Controls im PageControl verschwinden unkontrolliert
 
Danke für eure Mühen.
Ich verzweifel langsam.

Die procedure von himitsu wird bei mir zwar aufgerufen, allerdings ist die Message nie WM_UPDATEUISTATE.
Dadurch wird invalidate nicht aufgerufen und die Controls bleiben verschollen. Die Controls.pas kann ich leider nicht ändern, da ich D2005 Personal habe und da sind ja nur die dcu's und nicht die pas-Dateien enthalten.

Noch Ideen?

Aphton 25. Mai 2011 19:59

AW: Controls im PageControl verschwinden unkontrolliert
 
Ich bin auch an der Lösung dieses Problems interessiert, da dass nicht nur bei (sehr viel) älteren Delphi Versionen vorhanden ist!

jbg 25. Mai 2011 21:16

AW: Controls im PageControl verschwinden unkontrolliert
 
Zitat:

Zitat von Aphton (Beitrag 1102924)
Ich bin auch an der Lösung dieses Problems interessiert

Das Abfangen von WM_UPDATEUISTATE, das die VCL sich selbst schickt (der Code fehlt noch oben) ist eigentlich nichts anderes als ein Workaround für ein viel tiefer liegendes Theming Problem. Ich bin gerade dabei zu analsysien, warum alle nicht-Delphi Programme mit CheckBoxen keine Probleme habe. Und meine ersten Nachforschungen ergeben, dass TButtonControl.CNCtlColorStatic die CheckBoxen übermalt, und Windows nur die Unterstriche zeichnet, womit vom Control nicht viel übrig bleibt.
Das ganze Problem beginnt aber schon in TWinControl.DefaultHandler, bei dem CN_CTLCOLORMSGBOX..CN_CTLCOLORSTATIC die Hintergrundfarbe auf den Brush ändern, was bei nicht-gethemeten Anwendungen in Ordnung ist, aber Windows weiß bei gethemeten Anwendungen besser, was wie zu zeichnen ist als die VCL.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.
Seite 1 von 2  1 2      

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