AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Controls im PageControl verschwinden unkontrolliert

Ein Thema von Adrian Z. · begonnen am 25. Mai 2011 · letzter Beitrag vom 26. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Adrian Z.

Registriert seit: 25. Mai 2011
6 Beiträge
 
Delphi 2005 Personal
 
#1

Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 16:25
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 16:32
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Adrian Z.

Registriert seit: 25. Mai 2011
6 Beiträge
 
Delphi 2005 Personal
 
#3

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 17:21
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!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 18:10
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Adrian Z.

Registriert seit: 25. Mai 2011
6 Beiträge
 
Delphi 2005 Personal
 
#5

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 18:37
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?
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 18:58
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#7

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 19:13
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Adrian Z.

Registriert seit: 25. Mai 2011
6 Beiträge
 
Delphi 2005 Personal
 
#8

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 20:14
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?
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 20:59
Ich bin auch an der Lösung dieses Problems interessiert, da dass nicht nur bei (sehr viel) älteren Delphi Versionen vorhanden ist!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

AW: Controls im PageControl verschwinden unkontrolliert

  Alt 25. Mai 2011, 22:16
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.
  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 13:36 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