![]() |
TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Hallo,
ich verwende ein TPageControl und zeichne die einzelnen Tabs selber; ich setze also OwnerDraw auf True und hänge an den OnDrawTab meinen Code. Funktionierte bisher völlig problemlos - bis ich auf Vista 64-bit umgestiegen bin; dort werden die Tabs nicht gezeichnet, sie bleiben leer, nix ist zu sehen. Mit Vista 32-bit läuft's einwandfrei. Ein Debugger-Breakpoint in der OnDrawTab-Methode wird nicht erreicht, d.h. unter Vista 64-bit wird die OnDrawTab-Methode gar nicht aufgerufen!!! Dasselbe passiert beim TTabControl. Ich setze Delphi 7 ein und verwende im Projekt ein XPManifest. Was mache ich falsch - bzw. was macht Vista 64-bit anders als die anderen Windows-Mutationen? Ich bin für jeden Hinweis dankbar! |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Aktuellen Grafikkartentreiber installiert (meine Standardfrage bei Vista nachdem ich hier schon genügend Probleme damit hatte)
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Zitat:
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Zitat:
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Zitat:
Schließlich funktioniert ein TPageControl mit OwnerDraw = False problemlos. Der OnDrawTab-Event wird unter Vista 64-bit einfach nicht aufgerufen, was mir ein Problem zwischen der Win32 VCL von Delphi 7 und Vista 64-bit zu sein scheint. Ich hab sogar die Vermutung, dass man das Problem auf jedem beliebigen 64-bit Windows reproduzieren könnte ... mir steht aber nur Vista 64-bit zur Verfügung. |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Zitat:
Zitat:
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Das Formular enthält jeweils ein PageControl und TabControl mit OwnerDraw = True (oben) und OwnerDraw = False (unten). |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ein Screenshot.
Bitte prüfe einmal wohin du das projekt gespeichert hast. Im Programmverzeichnis von Delphi 7? Schieb es einmal in einen anderen Ordner - auf dem Desktop zum Beispiel. |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Unter meiner VM-Ware installation werden die Tab-Laschen bei OwnerDraw = True nicht gezeichnet.
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Zitat:
Unter welchem Windows hast du die Demo laufen lassen? |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
windows vista ultimate sp1
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Zitat:
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
64 bit
|
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Zitat:
Ein "Herumspielen" mit dem Kompatibilitäts-Modus hat auch nix gebracht. Ich versuche jetzt einen Upgrade von Delphi7 Prof. auf ein jüngeres Delphi und hoffe, das das etwas bringt ... Jedenfalls vielen Dank für eure Bemühungen!! |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Ich habe das Projekt jetzt mit dem Delphi 2007 RAD Studio compiliert und siehe da,
die Tab-Reiter sind dann auch unter Vista 64-Bit sichtbar. Ganz offensichtlich existiert da in Delphi 7 (resp. der win32 vcl) ein Bug, der dazu führt, dass der OnDrawTab unter einem 64-Bit Betriebssystem nicht aufgerufen wird. |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Hi
Aber was ist nun mit D7. Werde wegen dem Bug nicht das komplette Projekt auf D2007 umstellen. Gibt es eine Lösung ??? |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Und was spricht gegen umstellen?
Falls du D2007 hast kannst du ja versuchen im Quellcode zu erkennen was geändert wurde und diese Fixes nach D7 rückportieren. |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Hi
Hab ich ja versucht. Das Problem ist, dass die Unterschiede im TTabControl marginal sind. Es wurde vieles in TWincontrol und TControl geändert. Und diese wiederrum kann ich nicht nachführen, da das andere Komponenten beeinflußt. |
Re: TabControl mit OwnerDraw klappt nicht unter Vista 64-bit
Es sind einige kleine Änderungen in der Unit Controls.pas erforderlich
(siehe auch: ![]()
Delphi-Quellcode:
procedure TWinControl.WMCompareItem(var Message: TWMCompareItem);
begin if not DoControlMsg(Message.CompareItemStruct^.hwndItem, Message) then inherited; end; procedure TWinControl.WMDeleteItem(var Message: TWMDeleteItem); begin if not DoControlMsg(Message.DeleteItemStruct^.hwndItem, Message) then inherited; end; procedure TWinControl.WMDrawItem(var Message: TWMDrawItem); begin if not DoControlMsg(Message.DrawItemStruct^.hwndItem, Message) then inherited; end; procedure TWinControl.WMMeasureItem(var Message: TWMMeasureItem); begin if not DoControlMsg(Message.IDCtl, Message) then inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 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