![]() |
TPageControl ändern der BevelKind bei TabPosition tbLeft
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
man nehme eine TPageControl, gibt dieser eine NewPage und ändert die TabPosition auf tbLeft. Dann merkt man schnell, dass die Anzeigefläche rechts neben den Tabs ein BevelKind von bkRaised aufweist. Bei TabPosition tbTop ist das nicht der Fall. Weißt jemand wie man diese entfernen kann? Ich bin davon überzeugt, dass die Ursache in VCL zu finden sein muss, da bei einer SysTabControl32 (WC_TABCONTROL) mit TCS_VERTICAL dies nicht der Fall ist. "Beweise" sind im Anhang zu finden. Vielen Dank. |
AW: TPageControl ändern der BevelKind bei TabPosition tbLeft
Zitat:
|
AW: TPageControl ändern der BevelKind bei TabPosition tbLeft
Da wurde ich falsch verstanden, glaube ich. Ich bin der Meinung, dass eben TPageControl eine normale SysTabControl32 ist. Und bei einer normalen SysTabControl32 das eben nicht passiert.
Sondern VCL irgendwas noch hinzufügt. Das TPageControl ist ein SysTabControl32.
Code:
Und WC_TABCONTROL ist in Winapi.CommCtrl.pas als
TPageControl = class(TCustomTabControl)
... procedure TCustomTabControl.CreateParams(var Params: TCreateParams); ... begin ... CreateSubClass(Params, WC_TABCONTROL); ...
Code:
definiert.
const
{$EXTERNALSYM WC_TABCONTROL} WC_TABCONTROL = 'SysTabControl32'; Ich dachte immer: Die Controls die von TWinControl abstammen sind alles native Windows Controls. In Vcl.ComCtrls sind alles native Common Controls aus ComCtl32.dll. TPageControl = SysTabControl32 TToolBar = ToolbarWindow32 TMonthCalendar = SysMonthCal32 ... |
AW: TPageControl ändern der BevelKind bei TabPosition tbLeft
Zitat:
Zitat:
Zitat:
Zitat:
Es geht mir darum, die Sourcen des funktionierenden Beispiels mit denen der VCL zu vergleichen. Deswegen weine Frage danach. |
AW: TPageControl ändern der BevelKind bei TabPosition tbLeft
Man beachte, dass die Darstellung der common controls von Windows Themes und den Desktop-Settings (Aero oder classic) beeinflußt wird und TPagecontrol (auch auf der API Ebene) Tabs links und rechts nicht so gut unterstützt wie oben und unten. Wenn man das Standard-Windows Theme verwendet (default) wird ein TTabcontrol oder TPagecontrol etwas anders gezeichnet wenn die Tabs vertikal sind. Das fällt besonders bei TTabcontrol auf, da sich auch die Hintergrundfarbe der client area ändert. Verwendet man einen der custom styles passiert das nicht.
Da TCustomTabcontrol on TWinControl abstammt erbt es auch den ganzen zusätzlichen Code zur Unterstützung der Style-Engine sowie Desktop composition, und es nicht gerade einfach, da zu erkennen was nun von Windows gezeichnet wird und was von der VCL... |
AW: TPageControl ändern der BevelKind bei TabPosition tbLeft
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Ich zitiere aus ![]() Zitat:
Code:
den Style auf TCS_VERTICAL ändert, dann behält dieser den ursprünglichen BorderStyle bei und es sieht schön (für den Geschmack des Projektleiters) aus.
var
TempStyle: NativeInt; begin TempStyle := GetWindowLong(PCContent.Handle, GWL_STYLE); TempStyle := TempStyle or TCS_VERTICAL; SetWindowLong(PCContent.Handle, GWL_STYLE, TempStyle); end; Und ja, wenn es komplett neu gezeichnet bzw. neu erstellt wird, z. B. durch ReCreate, dann sieht es hier auch wieder bescheiden aus. Ich habe einen Screenshot für TabPosition := tpLeft zur Design- und Laufzeit angehängt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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 by Thomas Breitkreuz