Mattias Gaertner wrote:
On Tue, 14 Mar 2006 18:21:32 +0100
darekm <[EMAIL PROTECTED]> wrote:
tLabel should care about WordWrap property
attached patch repair it
Thanks. Applied.
Mattias
Thanks
but I find new item:
Index: include/customlabel.inc
===================================================================
--- include/customlabel.inc (wersja 8956)
+++ include/customlabel.inc (kopia robocza)
@@ -39,7 +39,8 @@
R := Rect(0,0, Width, Height);
OldFont:=SelectObject(DC, Font.Handle);
Flags:=DT_CalcRect;
- if WordWrap then inc(Flags,DT_WordBreak);
+ if WordWrap then inc(Flags,DT_WordBreak)
+ else inc(Flags,DT_SingleLine);
DrawText(DC, PChar(Caption), Length(Caption), R, Flags);
SelectObject(DC, OldFont);
// add one to be able to display disabled label
Darek
PS. What's about my previously patch (tComboBox)
now I have much more investigation:
1. for tSpeedButton: caption is paint in improper place (row for
caption 'zoom' and 'insert' is not the same for fonts other than defaults
2. added some improvements for debugging
3. repaired function FindLineEnd(LineStart: integer) for text in UTF8
4. for tComboBox select signal is fired only one time per click
Can can somebody test it.
I have one more patch (tComboBox grab capture and not release them, but
I must stopping without finish this changes)
Index: interfaces/gtk/gtkproc.inc
===================================================================
--- interfaces/gtk/gtkproc.inc (wersja 8956)
+++ interfaces/gtk/gtkproc.inc (kopia robocza)
@@ -1042,6 +1042,7 @@
var
PS : PPaintStruct;
begin
+ writeln('gtkpaintmessagetoPaint');
Result.Msg:=LM_PAINT;
New(PS);
PS^.hDC:=0;
@@ -3443,11 +3444,12 @@
function DeliverMessage(const Target: Pointer; var AMessage): Integer;
begin
if Target=nil then DebugLn('[DeliverMessage] Target = nil');
- {$IFDEF VerboseDeliverMessage}
- DebugLn('DeliverMessage ',DbgS(Target),
+ {.$IFDEF VerboseDeliverMessage}
+ if TLMessage(AMessage).Msg<>LM_MOUSEMOVE then
+ DebugLn('DeliverMessage ',DbgS(Target),
' ',TComponent(Target).Name,':',TObject(Target).ClassName,
' Message=',GetMessageName(TLMessage(AMessage).Msg));
- {$ENDIF}
+ {.$ENDIF}
if (TLMessage(AMessage).Msg=LM_PAINT)
or (TLMessage(AMessage).Msg=LM_INTERNALPAINT)
or (TLMessage(AMessage).Msg=LM_GtkPaint) then
@@ -4415,15 +4417,16 @@
if OldMouseCaptureWidget<>CurMouseCaptureWidget then begin
// the mouse grab changed
// -> this means the gtk itself has changed the mouse grab
- {$IFDEF VerboseMouseCapture}
+ {.$IFDEF VerboseMouseCapture}
DebugLn('UpdateMouseCaptureControl Capture changed from ',
'[',GetWidgetDebugReport(OldMouseCaptureWidget),']',
' to [',GetWidgetDebugReport(CurMouseCaptureWidget),']');
- {$ENDIF}
+ {.$ENDIF}
// notify the new capture control
MouseCaptureWidget:=CurMouseCaptureWidget;
MouseCaptureType:=mctGTK;
+ exit;
if MouseCaptureWidget<>nil then begin
// the MouseCaptureWidget is probably not a main widget
SendMessage(HWnd(MouseCaptureWidget), LM_CAPTURECHANGED, 0,
@@ -4445,9 +4448,9 @@
CaptureWidget: PGtkWidget;
NowIndex: Cardinal;
begin
- {$IFDEF VerboseMouseCapture}
+ {.$IFDEF VerboseMouseCapture}
DebugLn('CaptureMouseForWidget START ',GetWidgetDebugReport(Widget));
- {$ENDIF}
+ {.$ENDIF}
if not (Owner in [mctGTKIntf,mctLCL]) then exit;
// not every widget can capture the mouse
CaptureWidget:=GetDefaultMouseCaptureWidget(Widget);
Index: interfaces/gtk/gtklistsl.inc
===================================================================
--- interfaces/gtk/gtklistsl.inc (wersja 8956)
+++ interfaces/gtk/gtklistsl.inc (kopia robocza)
@@ -19,6 +19,8 @@
*****************************************************************************
}
+{.$DEFINE EventTrace}
+
const
GtkListItemGtkListTag = 'GtkList';
GtkListItemLCLListTag = 'LCLList';
@@ -209,6 +211,9 @@
//ItemIndex: LongInt;
Mess: TLMessage;
begin
+ {$IFDEF EventTrace}
+ Debugln('gtkListItemSelectAfterCB');
+ {$ENDIF}
// get context
GtkList:=PGtkList(gtk_object_get_data(PGtkObject(Data),GtkListItemGtkListTag));
if GtkList=nil then
@@ -317,6 +322,9 @@
ListItem: PGtkListItem;
begin
UpdateItemCache;
+ {$IFDEF EventTrace}
+ Debugln( 'connect ',strings[index]);
+ {$ENDIF}
ListItem:=FCachedItems[Index];
ConnectItemCallbacks(ListItem);
end;
@@ -329,6 +337,9 @@
var
ChildWidget: Pointer;
begin
+ {$IFDEF EventTrace}
+ Debugln('connect itemCallback');
+ {$ENDIF}
gtk_object_set_data(PGtkObject(li),GtkListItemLCLListTag,Self);
gtk_object_set_data(PGtkObject(li),GtkListItemGtkListTag,FGtkList);
//DebugLn('TGtkListStringList.ConnectItemCallbacks Self=',DbgS(Self),
@@ -348,10 +359,6 @@
g_signal_connect_after(G_OBJECT(ChildWidget), 'toggled',
G_CALLBACK(@gtkListItemToggledCB), li);
end;
- if FOwner is TCustomComboBox then begin
- gtk_signal_connect_after(PGtkObject(li), 'select',
- TGTKSignalFunc(@gtkListItemSelectAfterCB),li);
- end;
end;
{------------------------------------------------------------------------------
@@ -366,6 +373,9 @@
i := FCachedCount - 1;
while i >= 0 do
begin
+ {$IFDEF EventTrace}
+ DebugLn('connect ',strings[i]);
+ {$ENDIF}
ConnectItemCallbacks(FCachedItems[i]);
Dec(i);
end;
@@ -401,11 +411,6 @@
gtk_signal_disconnect_by_func(
PGtkObject(ChildWidget), TGTKSignalFunc(@gtkListItemToggledCB), AItem);
end;
- if FOwner is TCustomComboBox
- then begin
- gtk_signal_disconnect_by_func(
- PGtkObject(AItem), TGTKSignalFunc(@gtkListItemSelectAfterCB), AItem);
- end;
end;
{------------------------------------------------------------------------------
@@ -887,6 +892,9 @@
{$IFDEF DebugLCLComponents}
DebugGtkWidgets.MarkCreated(li,dbgsName(Owner)+' Index='+dbgs(Index)+'
Count='+dbgs(Count));
{$ENDIF}
+ {$IFDEF EventTrace}
+ Debugln('insertListItem',s);
+ {$ENDIF}
ConnectItemCallbacks(PGtkListItem(li));
// grow capacity
UpdateItemCache;
Index: interfaces/gtk/gtkwinapi.inc
===================================================================
--- interfaces/gtk/gtkwinapi.inc (wersja 8956)
+++ interfaces/gtk/gtkwinapi.inc (kopia robocza)
@@ -2795,13 +2795,13 @@
end;
Self.WordWrap(DC, Str, MaxLength, Lines, NumLines);
- LineWidth := 0;
- If (Lines <> nil) then begin
+ If (Lines <> nil) and ((NumLines>1) or ((Flags and DT_WordBreak)
=DT_WordBreak)) then begin
+ LineWidth := 0;
For J := 0 to NumLines - 1 do begin
GetTextExtentPoint(DC, Lines[J], StrLen(Lines[J]), AP);
LineWidth := Max(LineWidth, AP.cX);
end;
- end;
+ end else lineWidth:=MaxLength;
LineWidth := Min(MaxLength, LineWidth);
theRect.Right := theRect.Left + LineWidth;
@@ -7982,6 +7982,7 @@
{$ENDIF}
if AMessage.Msg=LM_GtkPAINT then begin
OldGtkPaintMsg:=TLMGtkPaint(AMessage);
+
GtkPaintData:=OldGtkPaintMsg.Data;
// convert LM_GtkPAINT to LM_PAINT
AMessage := TLMessage(GtkPaintMessageToPaintMessage(
Index: interfaces/gtk/gtkcallback.inc
===================================================================
--- interfaces/gtk/gtkcallback.inc (wersja 8956)
+++ interfaces/gtk/gtkcallback.inc (kopia robocza)
@@ -19,7 +19,13 @@
// {$DEFINE ASSERT_IS_ON}
{$ENDIF}
+{$IFDEF RELEASE}
+
{$DEFINE ASSERT_IS_ON}
+{$ELSE}
+{$DEFINE EventTrace}
+{.$DEFINE VerboseMouseBugfix}
+{$ENDIF}
function DeliverPaintMessage(const Target: Pointer; var TheMessage): GBoolean;
var
@@ -133,7 +139,9 @@
begin
Result := CallBackDefaultReturn;
+ {$IFDEF EventTrace}
EventTrace('realize', nil);
+ {$ENDIF}
if (Data<>nil) then begin
if TObject(Data) is TCustomForm then begin
@@ -182,7 +190,9 @@
Result := CallBackDefaultReturn;
if Data=nil then ;
+ {$IFDEF EventTrace}
EventTrace('realizeafter', nil);
+ {$ENDIF}
HiddenLCLObject:=GetHiddenLCLObject(Widget);
if HiddenLCLObject=nil then begin
@@ -255,7 +265,9 @@
begin
Result := True;
+ {$IFDEF EventTrace}
EventTrace('show', data);
+ {$ENDIF}
if Widget=nil then ;
FillChar(Mess,SizeOf(Mess),0);
Mess.Msg := LM_SHOWWINDOW;
@@ -270,7 +282,9 @@
begin
Result := True;
+ {$IFDEF EventTrace}
EventTrace('hide', data);
+ {$ENDIF}
if Widget=nil then ;
FillChar(Mess,SizeOf(Mess),0);
Mess.Msg := LM_SHOWWINDOW;
@@ -283,7 +297,9 @@
Mess: TLMActivate;
begin
Result:= True;
+ {$IFDEF EventTrace}
EventTrace('activate', data);
+ {$ENDIF}
if LockOnChange(PgtkObject(Widget),0) > 0 then Exit;
@@ -307,8 +323,9 @@
LCLMenuItem: TMenuItem;
begin
Result := CallBackDefaultReturn;
-
+ {$IFDEF EventTrace}
EventTrace('toggled', AData);
+ {$ENDIF}
LCLMenuItem := TMenuItem(AData);
// some sanity checks
@@ -332,8 +349,9 @@
begin
if ComponentIsDestroyingHandle(TWinControl(Data))
or (LockOnChange(PgtkObject(Widget),0)>0) then exit;
+ {$IFDEF EventTrace}
EventTrace('changed', data);
-
+ {$ENDIF}
Mess.Msg := LM_CHANGED;
DeliverMessage(Data, Mess);
@@ -347,7 +365,9 @@
Result := CallBackDefaultReturn;
if LockOnChange(PgtkObject(Widget),0)>0 then exit;
+ {$IFDEF EventTrace}
EventTrace('changed_editbox', data);
+ {$ENDIF}
Mess.Msg := CM_TEXTCHANGED;
DeliverMessage(Data, Mess);
@@ -375,7 +395,9 @@
begin
//DebugLn('gtktoggledCB ',DbgSName(TObject(Data)));
Result := CallBackDefaultReturn;
+ {$IFDEF EventTrace}
EventTrace('toggled', data);
+ {$ENDIF}
if LockOnChange(PgtkObject(Widget),0) > 0 then Exit;
if GtkWidgetIsA(Widget,gtk_toggle_button_get_type) then begin
@@ -395,7 +417,9 @@
DesignOnlySignal: boolean;
begin
Result := CallBackDefaultReturn;
+ {$IFDEF EventTrace}
EventTrace('DrawAfter', data);
+ {$ENDIF}
if not (csDesigning in TComponent(Data).ComponentState) then begin
DesignOnlySignal:=GetDesignOnlySignalFlag(Widget,dstDrawAfter);
@@ -420,7 +444,10 @@
DesignOnlySignal: boolean;
begin
Result := CallBackDefaultReturn;
+ {$IFDEF EventTrace}
EventTrace('ExposeAfter', data);
+ {$ENDIF}
+ exit;
if (Event^.Count > 0) then exit;
if not (csDesigning in TComponent(Data).ComponentState) then begin
@@ -431,7 +458,7 @@
DebugLn('gtkExposeAfter',
' Widget=',DbgS(Widget),'=',GetWidgetClassName(Widget),
' ',TComponent(Data).Name,
- '
',Event^.area.x,',',Event^.area.y,',',Event^.area.width,',',Event^.area.height,
+ '
',dbgs(Event^.area.x),',',dbgs(Event^.area.y),',',dbgs(Event^.area.width),',',dbgs(Event^.area.height),
'');
{$ENDIF}
end;
@@ -450,7 +477,9 @@
CurFocusWidget: PGtkWidget;
{$ENDIF}
begin
+ {$IFDEF EventTrace}
EventTrace('activate after', data);
+ {$ENDIF}
if (Widget=nil) or (Event=nil) then ;
FillChar(Mess,SizeOf(Mess),#0);
{$IFDEF VerboseFocus}
@@ -504,7 +533,9 @@
LCLObject: TControl;
{$ENDIF}
begin
+ {$IFDEF EventTrace}
EventTrace('deactivate after', data);
+ {$ENDIF}
if (Widget=nil) or (Event=nil) then ;
{$IFDEF VerboseFocus}
write('gtkfrmdeactivate Widget=',DbgS(Widget),' ',Event^.theIn,
@@ -629,12 +660,10 @@
{$ENDIF}
UpdateMouseCaptureControl;
-
//TODO: fill in old focus
FillChar(Mess,SizeOf(Mess),0);
Mess.msg := LM_SETFOCUS;
DeliverMessage(Data, Mess);
-
Result:=true;
end;
@@ -646,7 +675,7 @@
CurFocusWidget: PGtkWidget;
{$ENDIF}
begin
- EventTrace('killfocus', data);
+ EventTrace('killfocusCB', data);
if (Widget=nil) or (Event=nil) then ;
{$IFDEF VerboseFocus}
write('GTKillFocusCB Widget=',DbgS(Widget),' Event^.theIn=',Event^.theIn);
@@ -691,7 +720,8 @@
{$ENDIF}
begin
if (Widget=nil) or (Event=nil) then ;
- EventTrace('killfocus', data);
+ EventTrace('killfocusCBAfter', data);
+
{$IFDEF VerboseFocus}
write('GTKillFocusCBAfter Widget=',DbgS(Widget),'
Event^.theIn=',Event^.theIn);
LCLObject:=TObject(data);
@@ -726,8 +756,10 @@
FillChar(Mess,SizeOf(Mess),0);
Mess.msg := LM_KILLFOCUS;
+
//TODO: fill in new focus
Assert(False, Format('Trace:TODO: [gtkkillfocusCB] %s finish',
[TObject(Data).ClassName]));
+
DeliverMessage(Data, Mess);
Result:=true;
@@ -757,7 +789,9 @@
exit;
end;
- EventTrace('destroy', data);
+ {$IFDEF EventTrace}
+ EventTrace('destroyCB', data);
+ {$ENDIF}
//DebugLn('gtkdestroyCB Data="',DbgSName(TObject(Data)),'"
LCLObject="',DbgSName(Info^.LCLObject),'" ',GetWidgetDebugReport(Widget));
FillChar(Mess,SizeOf(Mess),0);
Mess.msg := LM_DESTROY;
@@ -786,7 +820,9 @@
begin
Result := CallBackDefaultReturn;
if (Widget=nil) then ;
+ {$IFDEF EventTrace}
EventTrace('resize', data);
+ {$ENDIF}
// Mess.msg := LM_RESIZE;
// TControl(data).WindowProc(TLMessage(Mess));
Assert(False, 'Trace:TODO: [gtkresizeCB] fix (or remove) to new LM_SIZE');
@@ -799,7 +835,9 @@
begin
Result := CallBackDefaultReturn;
if (Widget=nil) then ;
+ {$IFDEF EventTrace}
EventTrace('month changed', data);
+ {$ENDIF}
FillChar(Mess,SizeOf(Mess),0);
Mess.Msg := LM_MONTHCHANGED;
DeliverPostMessage(Data, Mess);
@@ -1281,7 +1319,9 @@
//if GetFixedWidget(Widget)<>nil then
// DebugLn('DDD2
ClientWindow=',DbgS(PGtkWidget(GetFixedWidget(Widget))^.Window));
+ {$IFDEF EventTrace}
EventTrace('Mouse button Press', data);
+ {$ENDIF}
UpdateMouseCaptureControl;
@@ -3049,7 +3089,9 @@
Data: Pointer); cdecl;
begin
if (Widget=nil) or (Data=nil) or (previous_style=nil) then ;
+ {$IFDEF EventTrace}
EventTrace('style-set', nil);
+ {$ENDIF}
//ReleaseAllStyles;
end;
@@ -3058,15 +3100,28 @@
var
Mess: TLMessage;
begin
- //debugln('gtkListBoxSelectionChangedAfter ',GetWidgetDebugReport(Widget));
Result := CallBackDefaultReturn;
-
+ {$IFDEF EventTrace}
EventTrace('gtkListBoxSelectionChangedAfter', data);
+ {$ENDIF}
FillChar(Mess,SizeOf(Mess),0);
Mess.msg := LM_SelChange;
DeliverMessage(Data, Mess);
end;
+function gtkListSelectChild(widget: PGtkWidget;child : PGtkWidget; data:
gPointer
+ ): GBoolean; cdecl;
+var
+ Mess: TLMessage;
+begin
+ Result := CallBackDefaultReturn;
+ {$IFDEF EventTrace}
+ EventTrace('gtkListBoxSelectChild', data);
+ {$ENDIF}
+ FillChar(Mess,SizeOf(Mess),0);
+ Mess.msg := LM_SelChange;
+ DeliverMessage(Data, Mess);
+end;
{$I gtkDragCallback.inc}
{$I gtkListViewCallback.inc}
Index: interfaces/gtk/gtkobject.inc
===================================================================
--- interfaces/gtk/gtkobject.inc (wersja 8956)
+++ interfaces/gtk/gtkobject.inc (kopia robocza)
@@ -23,6 +23,7 @@
// {$C+}
// {$DEFINE ASSERT_IS_ON}
{$ENDIF}
+{.$DEFINE VerboseSizeMsg}
{------------------------------------------------------------------------------
Procedure: GLogFunc
@@ -1298,7 +1299,6 @@
begin
Caption := ACaption;
LabelFromAmpersands(Caption, Pattern, AccelKey);
-
gtk_label_set_text(ALabel, PChar(Caption));
{$ifdef gtk1}
@@ -3985,7 +3985,10 @@
if ALCLObject is TCustomListBox then begin
ConnectSenderSignalAfter(PgtkObject(gCore),
'selection_changed', @gtkListBoxSelectionChangedAfter);
- end;
+ end else if ALCLObject is TCustomCombobox then
+ ConnectSenderSignal (PGtkObject(
+ PGtkCombo(gObject)^.list), 'unselect_child',
@gtkListSelectChild)
+ else
end;
(*
@@ -4228,6 +4231,7 @@
Begin
SetCallback(LM_CHANGED, AGTKObject, ALCLObject);
SetCallback(LM_COMMAND, AGTKObject, ALCLObject);
+ SetCallback(LM_SELCHANGE, AGTKObject, ALCLObject);
End;
csListBox:
@@ -6962,12 +6966,14 @@
function FindLineEnd(LineStart: integer): integer;
var
+ LineStop,
LineWidth, WordWidth, WordEnd, CharWidth: integer;
begin
// first search line break or text break
Result:=LineStart;
while not (AText[Result] in [#0,#10,#13]) do inc(Result);
if Result<=LineStart+1 then exit;
+ lineStop:=Result;
// get current line width in pixel
LineWidth:=GetLineWidthInPixel(LineStart,Result-LineStart);
@@ -6996,6 +7002,7 @@
CharWidth:=GetLineWidthInPixel(Result,1);
inc(LineWidth,CharWidth);
if LineWidth>MaxWidthInPixel then break;
+ if result=lineStop then break;
inc(Result);
until false;
// at least one char
Index: interfaces/gtk/gtkproc.pp
===================================================================
--- interfaces/gtk/gtkproc.pp (wersja 8956)
+++ interfaces/gtk/gtkproc.pp (kopia robocza)
@@ -280,6 +280,8 @@
function gtkListBoxSelectionChangedAfter(widget: PGtkWidget;
data: gPointer): GBoolean; cdecl;
+function gtkListSelectChild(widget: PGtkWidget;child : PGtkWidget;
+ data: gPointer): GBoolean; cdecl;
// gtkDragCallback.inc headers
Function edit_drag_data_received(widget: pgtkWidget;
Index: lmessages.pp
===================================================================
--- lmessages.pp (wersja 8956)
+++ lmessages.pp (kopia robocza)
@@ -773,6 +773,22 @@
// RECEIVED from the interface, here are no defines
// of messages send to the interface
//-------------
+
+ LM_ACTIVATE : Result:='LM_ACTIVATE';
+ LM_SETFOCUS : Result:='LM_SETFOCUS';
+ LM_KILLFOCUS : Result:='LM_KILLFOCUS';
+ LM_SHOWWINDOW : Result:='LM_SHOWWINDOW';
+ LM_SIZE : Result:='LM_SIZE';
+ LM_MOVE : Result:='LM_MOVE';
+
+// LM_MOUSEFIRST : Result:='LM_MOUSEFIRST';
+ LM_MOUSEMOVE : Result:='LM_MOUSEMOVE';
+ LM_LBUTTONDOWN : Result:='LM_LBUTTONDOWN';
+ LM_LBUTTONUP : Result:='LM_LBUTTONUP';
+ LM_CAPTURECHANGED : Result:='LM_CAPTURECHANGED';
+ LM_SELCHANGE : Result:='LM_SELCHANGE';
+
+
LM_USER :Result:='LM_USER';
//WM_USER :Result:='';
LM_DESTROY :Result:='LM_DESTROY';
Index: include/speedbutton.inc
===================================================================
--- include/speedbutton.inc (wersja 8956)
+++ include/speedbutton.inc (kopia robocza)
@@ -365,6 +365,7 @@
------------------------------------------------------------------------------}
procedure TCustomSpeedButton.Paint;
var
+ fRect,
PaintRect: TRect;
GlyphWidth, GlyphHeight: Integer;
Offset, OffsetCap: TPoint;
@@ -372,6 +373,7 @@
//BrushStyle : TBrushStyle;
M, S : integer;
TXTStyle : TTextStyle;
+ Flags,
SIndex : Longint;
TMP : String;
//xBevel : tBevelCut;
@@ -424,8 +426,22 @@
if Caption <> '' then begin
TMP := Caption;
+ TXTStyle := Canvas.TextStyle;
+ TXTStyle.Opaque := False;
+ TXTStyle.Clipping := True;
+ TXTStyle.ShowPrefix := True;
+ TXTStyle.Alignment := taLeftJustify;
+ TXTStyle.Layout := tlTop;
+ TXTStyle.SystemFont := Canvas.Font.IsDefault;//Match System Default Style
SIndex := DeleteAmpersands(TMP);
- TextSize:= Canvas.TextExtent(TMP);
+ fRect:=PaintRect;
+ Flags:=DT_CalcRect;
+ if not TXTStyle.SingleLine then inc(Flags,DT_WordBreak)
+ else inc(Flags,DT_SingleLine);
+
+ DrawText(canvas.Handle,pChar(TMP),Length(TMP),fRect,flags);
+ TextSize.cy:=fRect.bottom-fRect.top;
+ TextSize.cx:=fRect.right-fRect.left;
If SIndex > 0 then
If SIndex <= Length(TMP) then begin
FShortcut := Ord(TMP[SIndex]);
@@ -485,31 +501,25 @@
Offset.X:= ClientSize.cx - M - GlyphWidth;
Offset.Y:= (ClientSize.cy - GlyphHeight + 1) div 2;
OffsetCap.X:= Offset.X - S - TextSize.cx;
- OffsetCap.Y:= (ClientSize.cy - TextSize.cy) div 2;
+ OffsetCap.Y:= (ClientSize.cy -TextSize.cy) div 2;
end;
blGlyphTop : begin
Offset.X:= (ClientSize.cx - GlyphWidth + 1) div 2;
Offset.Y:= M;
- OffsetCap.X:= (ClientSize.cx - TextSize.cx + 1) div 2;
+ OffsetCap.X:= (ClientSize.cx + 1) div 2;
OffsetCap.Y:= Offset.Y + GlyphHeight + S;
end;
blGlyphBottom : begin
Offset.X:= (ClientSize.cx - GlyphWidth + 1) div 2;
Offset.Y:= ClientSize.cy - M - GlyphHeight;
- OffsetCap.X:= (ClientSize.cx - TextSize.cx + 1) div 2;
- OffsetCap.Y:= Offset.Y - S - TextSize.cy;
+ OffsetCap.X:= (ClientSize.cx + 1) div 2;
+ OffsetCap.Y:= Offset.Y - S ;
end;
end;
FGlyph.Draw(Canvas, PaintRect, Offset, FState, Transparent, 0);
if Caption <> '' then begin
- TXTStyle := Canvas.TextStyle;
- TXTStyle.Opaque := False;
- TXTStyle.Clipping := True;
- TXTStyle.ShowPrefix := True;
- TXTStyle.Alignment := taLeftJustify;
- TXTStyle.Layout := tlTop;
- TXTStyle.SystemFont := Canvas.Font.IsDefault;//Match System Default Style
+
With PaintRect, OffsetCap do begin
Left := Left + X;
Top := Top + Y;