
Originally Posted by
Eduardo-
I'm using some of your controls in a project so thank you very much.
I want to ask you what's the purpose of having two properties in the ScrollBar control: RightToLeft and RightToLeftLayout that need to be both set to True to set the direction RTL?
It's a complex story. Every control has it's unique treatment.
In general, when a RightToLeft = True then apply WS_EX_RTLREADING and if RightToLeft and RightToLeftLayout = True then apply only WS_EX_LAYOUTRTL.
Here is my internal documentation about the RightToLeft handling for each control:
Code:
> CoolBar
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; CDDS_PREPAINT in NM_CUSTOMDRAW SetTextAlign
Extra : RightToLeftLayout property
> LinkLabel
dwMask : CDDS_PREPAINT in NM_CUSTOMDRAW SetTextAlign
Extra : InitReverse .Alignment; ToolTip
> DTPicker
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; EditHandle: WS_EX_RTLREADING
Extra : RightToLeftLayout property; Reverse .CalendarRightAligned;
> MonthView
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL
Extra : RightToLeftLayout property
> Pager
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL
Extra : RightToLeftLayout property
> ListView
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; WS_EX_RTLREADING
Extra : RightToLeftLayout property; ToolTip; HDF_RTLREADING
> ComboBoxW/FontCombo
dwMask : WS_EX_RTLREADING Or WS_EX_RIGHT Or WS_EX_LEFTSCROLLBAR
Extra : Clear ES_RIGHT in .hWndEdit
> ImageCombo
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; WS_EX_RTLREADING Or WS_EX_RIGHT Or WS_EX_LEFTSCROLLBAR
Extra : RightToLeftLayout property; Clear ES_RIGHT in .hWndEdit
> ToolBar
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; TB_SETDRAWTEXTFLAGS DT_RTLREADING
Extra : RightToLeftLayout property; TPM_RIGHTALIGN+TPM_LAYOUTRTL in ShowButtonMenuItems; ToolTip; Call ReCreateToolBar
> Slider
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL
Extra : RightToLeftLayout property; ToolTip; Call ReCreateSlider
> UpDown
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL
Extra : RightToLeftLayout property
> ProgressBar
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL
Extra : RightToLeftLayout property
> CommandLink
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; WS_EX_RTLREADING
Extra : RightToLeftLayout property
> Animation
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL
Extra : RightToLeftLayout property; Call ReCreateAnimation
> TreeView
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; TVS_RTLREADING
Extra : RightToLeftLayout property
> StatusBar
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; 0
Extra : RightToLeftLayout property; ToolTip; DrawPanel SetTextAlign
> TabStrip
dwMask : RightToLeftLayout = True WS_EX_LAYOUTRTL; WS_EX_RTLREADING
Extra : RightToLeftLayout property; MapWindowPoints; ToolTip; Call ReCreateTabStrip
> SpinBox
dwMask : Edit: WS_EX_RTLREADING; UpDown: 0
Extra : InitReverse/Reverse .Alignment; InitReverse/Reverse .TextAlignment; Remove .Orientation
> CheckBoxW
dwMask : WS_EX_RTLREADING
Extra : InitReverse .Alignment; InitReverse/Reverse .TextAlignment; InitReverse/Reverse .ImageListAlignment
> CommandButtonW
dwMask : WS_EX_RTLREADING
Extra : Reverse .Alignment; InitReverse/Reverse .ImageListAlignment; InitReverse/Reverse .SplitButtonAlignment
> LabelW
dwMask : DT_RTLREADING
Extra : InitReverse .Alignment
> ListBoxW
dwMask : WS_EX_RTLREADING Or WS_EX_RIGHT Or WS_EX_LEFTSCROLLBAR
Extra : vbListBoxCheckbox SetTextAlign
> FrameW
dwMask : WS_EX_RTLREADING
Extra : InitReverse/Reverse .Alignment
> TextBoxW
dwMask : WS_EX_RTLREADING Or WS_EX_LEFTSCROLLBAR
Extra : InitReverse .Alignment
> RichTextBox
dwMask : WS_EX_RTLREADING Or WS_EX_RIGHT Or WS_EX_LEFTSCROLLBAR
Extra : Call ReCreateRichTextBox()
> OptionButtonW
dwMask : WS_EX_RTLREADING
Extra : InitReverse .Alignment; InitReverse/Reverse .TextAlignment; InitReverse/Reverse .ImageListAlignment

Originally Posted by
Eduardo-
I think it might be because you updated OLEGuids.tlb and I'm using an old version.
Yes, just copy/paste the new OLEGuids.tlb and replace the old one.