From: Remko B. <rem...@us...> - 2003-11-23 20:46:26
|
Update of /cvsroot/jvcl/dev/JVCL3/run In directory sc8-pr-cvs1:/tmp/cvs-serv16113 Modified Files: JvSpeedbar.pas JvSpeedButton.pas JvToolEdit.pas Log Message: JvSpeedButton reviewed; Split in 2 components (TJvSpeedButton; TJvImageSpeedButton) TJvImageSpeedButton not yet registered. Index: JvSpeedbar.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvSpeedbar.pas,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** JvSpeedbar.pas 5 Nov 2003 13:33:54 -0000 1.11 --- JvSpeedbar.pas 23 Nov 2003 20:46:22 -0000 1.12 *************** *** 688,693 **** procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; ! procedure PaintGlyph(Canvas: TCanvas; ARect: TRect; AState: TJvButtonState; ! DrawMark: Boolean); override; procedure Paint; override; public --- 688,693 ---- procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; ! procedure PaintImage(Canvas: TCanvas; ARect: TRect; const Offset: TPoint; ! AState: TJvButtonState; DrawMark: Boolean); override; procedure Paint; override; public *************** *** 854,868 **** end; ! procedure TJvSpeedBarButton.PaintGlyph(Canvas: TCanvas; ARect: TRect; AState: TJvButtonState; DrawMark: Boolean); begin if FItem.SpeedBar <> nil then begin ! TJvxButtonGlyph(ButtonGlyph).DrawEx(Canvas, ARect, Caption, Layout, Margin, Spacing, DrawMark, FItem.SpeedBar.Images, FItem.FImageIndex, AState, DrawTextBiDiModeFlags(Alignments[Alignment])); end else ! inherited PaintGlyph(Canvas, ARect, AState, DrawMark); end; --- 854,868 ---- end; ! procedure TJvSpeedBarButton.PaintImage(Canvas: TCanvas; ARect: TRect; const Offset: TPoint; AState: TJvButtonState; DrawMark: Boolean); begin if FItem.SpeedBar <> nil then begin ! TJvxButtonGlyph(ButtonGlyph).DrawEx(Canvas, ARect, Offset, Caption, Layout, Margin, Spacing, DrawMark, FItem.SpeedBar.Images, FItem.FImageIndex, AState, DrawTextBiDiModeFlags(Alignments[Alignment])); end else ! inherited PaintImage(Canvas, ARect, Offset, AState, DrawMark); end; Index: JvSpeedButton.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvSpeedButton.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** JvSpeedButton.pas 5 Nov 2003 13:33:54 -0000 1.3 --- JvSpeedButton.pas 23 Nov 2003 20:46:22 -0000 1.4 *************** *** 46,76 **** TJvButtonState = (rbsUp, rbsDisabled, rbsDown, rbsExclusive, rbsInactive); ! TJvSpeedButton = class(TJvGraphicControl) private ! FAllowAllUp: boolean; ! FAllowTimer, FOver: boolean; ! FDown: boolean; ! FDragging: boolean; ! FDrawImage: TBitmap; FDropDownMenu: TPopupMenu; [...4081 lines suppressed...] + end; + + procedure TJvxButtonGlyph.SetGrayNewStyle(const Value: Boolean); + begin + if Value <> FGrayNewStyle then + begin + Invalidate; + FGrayNewStyle := Value; + end; + end; + + procedure TJvxButtonGlyph.SetNumGlyphs(Value: TJvNumGlyphs); + begin + if (Value <> FNumGlyphs) and (Value > 0) then + begin + Invalidate; + FNumGlyphs := Value; + end; end; Index: JvToolEdit.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvToolEdit.pas,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** JvToolEdit.pas 23 Nov 2003 19:21:27 -0000 1.23 --- JvToolEdit.pas 23 Nov 2003 20:46:22 -0000 1.24 *************** *** 39,45 **** Windows, Classes, StdCtrls, Controls, Messages, SysUtils, Forms, Graphics, Menus, Buttons, Dialogs, FileCtrl, Mask, ! {$IFDEF COMPILER6_UP} RTLConsts, Variants, ! {$ENDIF} JvComponent, JvSpeedButton, JvJCLUtils, JvTypes; --- 39,45 ---- Windows, Classes, StdCtrls, Controls, Messages, SysUtils, Forms, Graphics, Menus, Buttons, Dialogs, FileCtrl, Mask, ! {$IFDEF COMPILER6_UP} RTLConsts, Variants, ! {$ENDIF} JvComponent, JvSpeedButton, JvJCLUtils, JvTypes; *************** *** 85,91 **** // (rom) renamed from FStandart FStandard: Boolean; // Polaris ! {$IFDEF JVCLThemesEnabled} FDrawThemedDropDownBtn: Boolean; ! {$ENDIF} constructor Create(AOwner: TComponent); override; procedure Click; override; --- 85,91 ---- // (rom) renamed from FStandart FStandard: Boolean; // Polaris ! {$IFDEF JVCLThemesEnabled} FDrawThemedDropDownBtn: Boolean; ! {$ENDIF} constructor Create(AOwner: TComponent); override; procedure Click; override; *************** *** 115,154 **** FOnKeyDown: TKeyEvent; (* -- RDB -- *) ! procedure SetEditRect; ! procedure RecreateGlyph; ! procedure UpdateBtnBounds; ! procedure EditButtonClick(Sender: TObject); ! function GetMinHeight: Integer; ! function GetTextHeight: Integer; // procedure SetShowCaret; // Polaris - function GetGlyph: TBitmap; - procedure SetGlyph(Value: TBitmap); - function GetPopupVisible: Boolean; - function GetNumGlyphs: TNumGlyphs; - procedure SetNumGlyphs(Value: TNumGlyphs); - function GetButtonWidth: Integer; - procedure SetButtonWidth(Value: Integer); - function GetButtonHint: string; - procedure SetButtonHint(const Value: string); function GetButtonFlat: Boolean; ! procedure SetButtonFlat(const Value: Boolean); function GetDirectInput: Boolean; ! // procedure SetDirectInput(Value: Boolean); // Polaris procedure SetAlignment(Value: TAlignment); function IsCustomGlyph: Boolean; function BtnWidthStored: Boolean; ! procedure SetGlyphKind(Value: TGlyphKind); ! procedure CMEnabledChanged(var Msg: TMessage); message CM_ENABLEDCHANGED; ! procedure CMFontChanged(var Msg: TMessage); message CM_FONTCHANGED; procedure CMCancelMode(var Msg: TCMCancelMode); message CM_CANCELMODE; procedure CMEnter(var Msg: TMessage); message CM_ENTER; procedure CNCtlColor(var Msg: TMessage); message CN_CTLCOLOREDIT; ! procedure WMSize(var Msg: TWMSize); message WM_SIZE; procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS; - procedure WMSetFocus(var Msg: TMessage); message WM_SETFOCUS; procedure WMPaste(var Msg: TWMPaste); message WM_PASTE; ! procedure WMCut(var Msg: TWMCut); message WM_CUT; ! procedure CMCtl3DChanged(var Msg: TMessage); message CM_CTL3DCHANGED; ! procedure CMBiDiModeChanged(var Msg: TMessage); message CM_BIDIMODECHANGED; (* ++ RDB ++ *) procedure UpdateEdit; --- 115,159 ---- FOnKeyDown: TKeyEvent; (* -- RDB -- *) ! // procedure SetDirectInput(Value: Boolean); // Polaris // procedure SetShowCaret; // Polaris function GetButtonFlat: Boolean; ! function GetButtonHint: string; ! function GetButtonWidth: Integer; function GetDirectInput: Boolean; ! function GetGlyph: TBitmap; ! function GetMinHeight: Integer; ! function GetNumGlyphs: TNumGlyphs; ! function GetPopupVisible: Boolean; ! function GetTextHeight: Integer; procedure SetAlignment(Value: TAlignment); + procedure SetButtonFlat(const Value: Boolean); + procedure SetButtonHint(const Value: string); + procedure SetButtonWidth(Value: Integer); + procedure SetEditRect; + procedure SetGlyph(Value: TBitmap); + procedure SetGlyphKind(Value: TGlyphKind); + procedure SetNumGlyphs(Value: TNumGlyphs); + + procedure UpdateBtnBounds; function IsCustomGlyph: Boolean; + procedure EditButtonClick(Sender: TObject); + procedure RecreateGlyph; function BtnWidthStored: Boolean; ! ! procedure CMBiDiModeChanged(var Msg: TMessage); message CM_BIDIMODECHANGED; procedure CMCancelMode(var Msg: TCMCancelMode); message CM_CANCELMODE; + procedure CMCtl3DChanged(var Msg: TMessage); message CM_CTL3DCHANGED; + procedure CMEnabledChanged(var Msg: TMessage); message CM_ENABLEDCHANGED; procedure CMEnter(var Msg: TMessage); message CM_ENTER; + procedure CMFontChanged(var Msg: TMessage); message CM_FONTCHANGED; procedure CNCtlColor(var Msg: TMessage); message CN_CTLCOLOREDIT; ! procedure WMCut(var Msg: TWMCut); message WM_CUT; procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS; procedure WMPaste(var Msg: TWMPaste); message WM_PASTE; ! procedure WMSetFocus(var Msg: TMessage); message WM_SETFOCUS; ! procedure WMSize(var Msg: TWMSize); message WM_SIZE; ! procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT; ! procedure WMNCCalcSize(var Msg: TWMNCCalcSize); message WM_NCCALCSIZE; ! procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST; (* ++ RDB ++ *) procedure UpdateEdit; *************** *** 180,184 **** function EditCanModify: Boolean; override; function GetReadOnly: Boolean; virtual; ! procedure SetReadOnly(Value: Boolean);virtual; procedure KeyDown(var Key: Word; Shift: TShiftState); override; procedure KeyPress(var Key: Char); override; --- 185,189 ---- function EditCanModify: Boolean; override; function GetReadOnly: Boolean; virtual; ! procedure SetReadOnly(Value: Boolean); virtual; procedure KeyDown(var Key: Word; Shift: TShiftState); override; procedure KeyPress(var Key: Char); override; *************** *** 563,571 **** const ! {$IFDEF DEFAULT_POPUP_CALENDAR} dcsDefault = csPopup; ! {$ELSE} dcsDefault = csDialog; ! {$ENDIF DEFAULT_POPUP_CALENDAR} type --- 568,576 ---- const ! {$IFDEF DEFAULT_POPUP_CALENDAR} dcsDefault = csPopup; ! {$ELSE} dcsDefault = csDialog; ! {$ENDIF DEFAULT_POPUP_CALENDAR} type *************** *** 816,820 **** if BorderStyle = bsNone then I := 0 ! else if Ctl3D then I := 1 else --- 821,826 ---- if BorderStyle = bsNone then I := 0 ! else ! if Ctl3D then I := 1 else *************** *** 861,865 **** else ButtonWidth := Editor.ClientWidth - R.Right - 2; ! if ButtonWidth < 0 then ButtonWidth := 0; Result := PaintEdit(Editor, AText, AAlignment, Editor.PopupVisible, --- 867,872 ---- else ButtonWidth := Editor.ClientWidth - R.Right - 2; ! if ButtonWidth < 0 then ! ButtonWidth := 0; Result := PaintEdit(Editor, AText, AAlignment, Editor.PopupVisible, *************** *** 880,884 **** ExStyle: DWORD; const ! AlignStyle: array[Boolean, TAlignment] of DWORD = ((WS_EX_LEFT, WS_EX_RIGHT, WS_EX_LEFT), (WS_EX_RIGHT, WS_EX_LEFT, WS_EX_LEFT)); --- 887,891 ---- ExStyle: DWORD; const ! AlignStyle: array [Boolean, TAlignment] of DWORD = ((WS_EX_LEFT, WS_EX_RIGHT, WS_EX_LEFT), (WS_EX_RIGHT, WS_EX_LEFT, WS_EX_LEFT)); *************** *** 997,1001 **** {$ENDIF} begin ! {$IFDEF JVCLThemesEnabled} if ThemeServices.ThemesEnabled then begin --- 1004,1008 ---- {$ENDIF} begin ! {$IFDEF JVCLThemesEnabled} if ThemeServices.ThemesEnabled then begin *************** *** 1005,1016 **** ThemedState := tcDropDownButtonDisabled else ! if FState = rbsDown then ! ThemedState := tcDropDownButtonPressed ! else ! if MouseInControl then ! ThemedState := tcDropDownButtonHot ! else ! ThemedState := tcDropDownButtonNormal; ! R := BoundsRect; Details := ThemeServices.GetElementDetails(ThemedState); ThemeServices.DrawElement(Canvas.Handle, Details, R); --- 1012,1023 ---- ThemedState := tcDropDownButtonDisabled else ! if FState in [rbsDown, rbsExclusive] then ! ThemedState := tcDropDownButtonPressed ! else ! if MouseInControl or IsDragging then ! ThemedState := tcDropDownButtonHot ! else ! ThemedState := tcDropDownButtonNormal; ! R := ClientRect; Details := ThemeServices.GetElementDetails(ThemedState); ThemeServices.DrawElement(Canvas.Handle, Details, R); *************** *** 1020,1024 **** end else ! {$ENDIF} begin inherited Paint; --- 1027,1031 ---- end else ! {$ENDIF} begin inherited Paint; *************** *** 1308,1312 **** procedure TJvCustomComboEdit.CreateParams(var Params: TCreateParams); const ! Alignments: array[TAlignment] of Longword = (ES_LEFT, ES_RIGHT, ES_CENTER); begin inherited CreateParams(Params); --- 1315,1319 ---- procedure TJvCustomComboEdit.CreateParams(var Params: TCreateParams); const ! Alignments: array [TAlignment] of Longword = (ES_LEFT, ES_RIGHT, ES_CENTER); begin inherited CreateParams(Params); *************** *** 1357,1361 **** if P.X < 0 then P.X := 0 ! else if P.X + FPopup.Width > Screen.Width then P.X := Screen.Width - FPopup.Width; if Text <> '' then --- 1364,1369 ---- if P.X < 0 then P.X := 0 ! else ! if P.X + FPopup.Width > Screen.Width then P.X := Screen.Width - FPopup.Width; if Text <> '' then *************** *** 1571,1575 **** // else if (Value <> ButtonWidth) and (Value < ClientWidth) then begin //Polaris ! else if (Value <> ButtonWidth) and ((Assigned(Parent) and (Value < ClientWidth)) or (not Assigned(Parent) and (Value < Width))) then --- 1579,1584 ---- // else if (Value <> ButtonWidth) and (Value < ClientWidth) then begin //Polaris ! else ! if (Value <> ButtonWidth) and ((Assigned(Parent) and (Value < ClientWidth)) or (not Assigned(Parent) and (Value < Width))) then *************** *** 1603,1607 **** begin FButton.Flat := Value; ! {$IFDEF JVCLThemesEnabled} { When XP Themes are enabled, ButtonFlat = False, GlyphKind = gkDropDown then the glyph is the default themed dropdown button. When ButtonFlat = True, we --- 1612,1616 ---- begin FButton.Flat := Value; ! {$IFDEF JVCLThemesEnabled} { When XP Themes are enabled, ButtonFlat = False, GlyphKind = gkDropDown then the glyph is the default themed dropdown button. When ButtonFlat = True, we *************** *** 1610,1614 **** if ThemeServices.ThemesEnabled and (GlyphKind = gkDropDown) then RecreateGlyph; ! {$ENDIF} end; --- 1619,1623 ---- if ThemeServices.ThemesEnabled and (GlyphKind = gkDropDown) then RecreateGlyph; ! {$ENDIF} end; *************** *** 1633,1637 **** if FGlyphKind in [gkDropDown, gkEllipsis] then FButton.NumGlyphs := 1 ! else if FGlyphKind = gkDefault then FButton.NumGlyphs := FDefNumGlyphs else --- 1642,1647 ---- if FGlyphKind in [gkDropDown, gkEllipsis] then FButton.NumGlyphs := 1 ! else ! if FGlyphKind = gkDefault then FButton.NumGlyphs := FDefNumGlyphs else *************** *** 1643,1657 **** Loc: TRect; LLeft: Integer; begin AdjustHeight; ! {$IFDEF JVCLThemesEnabled} { If flat and themes are enabled, move the left edge of the edit rectangle to the right, otherwise the theme edge paints over the border } ! if not Ctl3D and (BorderStyle = bsSingle) and ThemeServices.ThemesEnabled then ! LLeft := 3 else ! {$ENDIF} LLeft := 0; ! SetRect(Loc, LLeft, 0, ClientWidth - FBtnControl.Width {Polaris - 2}, ClientHeight + 1); SendMessage(Handle, EM_SETRECTNP, 0, Longint(@Loc)); //Polaris --- 1653,1684 ---- Loc: TRect; LLeft: Integer; + LTop: Integer; begin AdjustHeight; ! {$IFDEF JVCLThemesEnabled} { If flat and themes are enabled, move the left edge of the edit rectangle to the right, otherwise the theme edge paints over the border } ! if ThemeServices.ThemesEnabled then ! begin ! LTop := 0; ! LLeft := 0; ! if BorderStyle = bsSingle then ! begin ! if not Ctl3D then ! LLeft := 3 ! else ! begin ! LLeft := 1; ! LTop := 1; ! end; ! end; ! end else ! {$ENDIF} ! begin LLeft := 0; ! LTop := 0; ! end; ! SetRect(Loc, LLeft, LTop, ClientWidth - FBtnControl.Width {Polaris - 2}, ClientHeight - 1); SendMessage(Handle, EM_SETRECTNP, 0, Longint(@Loc)); //Polaris *************** *** 1664,1680 **** begin if NewStyleControls then ! {$IFDEF JVCLThemesEnabled} if ThemeServices.ThemesEnabled then begin ! if Ctl3D and (BorderStyle = bsSingle) then ! { Actually same rectangle as without xp themes } ! BtnRect := Bounds(Width - FButton.Width - 4, 0, ! FButton.Width, Height - 4) else ! BtnRect := Bounds(Width - FButton.Width - 1, 1, ! FButton.Width, Height - 2) end else ! {$ENDIF JVCLThemesEnabled} begin if Ctl3D and (BorderStyle = bsSingle) then --- 1691,1712 ---- begin if NewStyleControls then ! {$IFDEF JVCLThemesEnabled} if ThemeServices.ThemesEnabled then begin ! if BorderStyle = bsSingle then ! begin ! if Ctl3D then ! BtnRect := Bounds(Width - FButton.Width - 2, 0, ! FButton.Width, Height - 2) ! else ! BtnRect := Bounds(Width - FButton.Width - 1, 1, ! FButton.Width, Height - 2); ! end else ! BtnRect := Bounds(Width - FButton.Width, 0, ! FButton.Width, Height); end else ! {$ENDIF JVCLThemesEnabled} begin if Ctl3D and (BorderStyle = bsSingle) then *************** *** 1868,1872 **** procedure TJvCustomComboEdit.SetShowCaret; const ! CaretWidth: array[Boolean] of Byte = (1, 2); begin CreateCaret(Handle, 0, CaretWidth[fsBold in Font.Style], GetTextHeight); --- 1900,1904 ---- procedure TJvCustomComboEdit.SetShowCaret; const ! CaretWidth: array [Boolean] of Byte = (1, 2); begin CreateCaret(Handle, 0, CaretWidth[fsBold in Font.Style], GetTextHeight); *************** *** 1958,1962 **** Result := ButtonWidth <> Max(Glyph.Width div FButton.NumGlyphs + 6, DefEditBtnWidth) ! else if FGlyphKind = gkDropDown then Result := ButtonWidth <> GetSystemMetrics(SM_CXVSCROLL) else --- 1990,1995 ---- Result := ButtonWidth <> Max(Glyph.Width div FButton.NumGlyphs + 6, DefEditBtnWidth) ! else ! if FGlyphKind = gkDropDown then Result := ButtonWidth <> GetSystemMetrics(SM_CXVSCROLL) else *************** *** 1981,1985 **** if (FGlyphKind = gkDefault) and (Glyph <> nil) then ButtonWidth := Max(Glyph.Width div FButton.NumGlyphs + 6, FButton.Width) ! else if FGlyphKind = gkDropDown then begin ButtonWidth := GetSystemMetrics(SM_CXVSCROLL); --- 2014,2019 ---- if (FGlyphKind = gkDefault) and (Glyph <> nil) then ButtonWidth := Max(Glyph.Width div FButton.NumGlyphs + 6, FButton.Width) ! else ! if FGlyphKind = gkDropDown then begin ButtonWidth := GetSystemMetrics(SM_CXVSCROLL); *************** *** 2027,2031 **** begin ! {$IFDEF JVCLThemesEnabled} { When XP Themes are enabled, ButtonFlat = False, GlyphKind = gkDropDown then the glyph is the default themed dropdown button. When ButtonFlat = True, we --- 2061,2065 ---- begin ! {$IFDEF JVCLThemesEnabled} { When XP Themes are enabled, ButtonFlat = False, GlyphKind = gkDropDown then the glyph is the default themed dropdown button. When ButtonFlat = True, we *************** *** 2034,2038 **** if ThemeServices.ThemesEnabled then FButton.FDrawThemedDropDownBtn := (FGlyphKind = gkDropDown) and not ButtonFlat; ! {$ENDIF} case FGlyphKind of --- 2068,2072 ---- if ThemeServices.ThemesEnabled then FButton.FDrawThemedDropDownBtn := (FGlyphKind = gkDropDown) and not ButtonFlat; ! {$ENDIF} case FGlyphKind of *************** *** 2050,2056 **** end; gkDropDown: ! {$IFDEF JVCLThemesEnabled} if ButtonFlat or not ThemeServices.ThemesEnabled then ! {$ENDIF} begin FButton.Glyph.Handle := LoadBitmap(0, PChar(32738)); --- 2084,2090 ---- end; gkDropDown: ! {$IFDEF JVCLThemesEnabled} if ButtonFlat or not ThemeServices.ThemesEnabled then ! {$ENDIF} begin FButton.Glyph.Handle := LoadBitmap(0, PChar(32738)); *************** *** 2156,2160 **** procedure TJvFileDirEdit.WMDropFiles(var Msg: TWMDropFiles); var ! AFileName: array[0..255] of Char; I, Num: Cardinal; begin --- 2190,2194 ---- procedure TJvFileDirEdit.WMDropFiles(var Msg: TWMDropFiles); var ! AFileName: array [0..255] of Char; I, Num: Cardinal; begin *************** *** 2586,2590 **** try UpdateFormat; ! {$IFDEF DEFAULT_POPUP_CALENDAR} FPopup := TJvPopupWindow(CreatePopupCalendar(Self, BiDiMode, // Polaris --- 2620,2624 ---- try UpdateFormat; ! {$IFDEF DEFAULT_POPUP_CALENDAR} FPopup := TJvPopupWindow(CreatePopupCalendar(Self, BiDiMode, // Polaris *************** *** 2592,2596 **** TJvPopupWindow(FPopup).OnCloseUp := PopupCloseUp; TJvPopupWindow(FPopup).Color := FPopupColor; ! {$ENDIF DEFAULT_POPUP_CALENDAR} GlyphKind := gkDefault; { force update } finally --- 2626,2630 ---- TJvPopupWindow(FPopup).OnCloseUp := PopupCloseUp; TJvPopupWindow(FPopup).Color := FPopupColor; ! {$ENDIF DEFAULT_POPUP_CALENDAR} GlyphKind := gkDefault; { force update } finally *************** *** 3009,3013 **** Key := 0; end ! else if (Shift = []) and DirectInput then begin case Key of --- 3043,3048 ---- Key := 0; end ! else ! if (Shift = []) and DirectInput then begin case Key of *************** *** 3034,3038 **** Key := #0; end ! else if DirectInput then case Key of 'T', 't': --- 3069,3074 ---- Key := #0; end ! else ! if DirectInput then case Key of 'T', 't': *************** *** 3134,3141 **** raise Exception.CreateFmt(SDateOutOfRange, [FormatDateTime(FDateFormat, Value), FormatDateTime(FDateFormat, FMinDate), FormatDateTime(FDateFormat, FMaxDate)]) ! else if (FMinDate <> NullDate) and (Value < FMinDate) then raise Exception.CreateFmt(SDateOutOfMin, [FormatDateTime(FDateFormat, Value), FormatDateTime(FDateFormat, FMinDate)]) ! else if (FMaxDate <> NullDate) and (Value > FMaxDate) then raise Exception.CreateFmt(SDateOutOfMax, [FormatDateTime(FDateFormat, Value), FormatDateTime(FDateFormat, FMaxDate)]); --- 3170,3179 ---- raise Exception.CreateFmt(SDateOutOfRange, [FormatDateTime(FDateFormat, Value), FormatDateTime(FDateFormat, FMinDate), FormatDateTime(FDateFormat, FMaxDate)]) ! else ! if (FMinDate <> NullDate) and (Value < FMinDate) then raise Exception.CreateFmt(SDateOutOfMin, [FormatDateTime(FDateFormat, Value), FormatDateTime(FDateFormat, FMinDate)]) ! else ! if (FMaxDate <> NullDate) and (Value > FMaxDate) then raise Exception.CreateFmt(SDateOutOfMax, [FormatDateTime(FDateFormat, Value), FormatDateTime(FDateFormat, FMaxDate)]); *************** *** 3160,3164 **** if Controls[I] is TJvCustomDateEdit then TJvCustomDateEdit(Controls[I]).UpdateMask ! else if Controls[I] is TWinControl then IterateControls(TWinControl(Controls[I])); end; --- 3198,3203 ---- if Controls[I] is TJvCustomDateEdit then TJvCustomDateEdit(Controls[I]).UpdateMask ! else ! if Controls[I] is TWinControl then IterateControls(TWinControl(Controls[I])); end; *************** *** 3171,3175 **** end; ! procedure DestroyLocals; begin FileBitmap.Free; --- 3210,3214 ---- end; ! procedure DestroyLocals; begin FileBitmap.Free; *************** *** 3177,3180 **** --- 3216,3273 ---- DateBitmap.Free; DateBitmap := nil; + end; + + procedure TJvCustomComboEdit.WMNCPaint(var Msg: TWMNCPaint); + {$IFDEF JVCLThemesEnabled} + var + DC: HDC; + DrawRect: TRect; + Details: TThemedElementDetails; + {$ENDIF JVCLThemesEnabled} + begin + {$IFDEF JVCLThemesEnabled} + if ThemeServices.ThemesEnabled and Ctl3D and (BorderStyle = bsSingle) then + begin + DC := GetWindowDC(Handle); + try + GetWindowRect(Handle, DrawRect); + OffsetRect(DrawRect, -DrawRect.Left, -DrawRect.Top); + with DrawRect do + ExcludeClipRect(DC, Left + 1, Top + 1, Right - 1, Bottom - 1); + + Details := ThemeServices.GetElementDetails(teEditTextNormal); + ThemeServices.DrawElement(DC, Details, DrawRect); + finally + ReleaseDC(Handle, DC); + end; + Msg.Result := 0; + end + else + {$ENDIF JVCLThemesEnabled} + inherited; + end; + + procedure TJvCustomComboEdit.WMNCCalcSize(var Msg: TWMNCCalcSize); + begin + {$IFDEF JVCLThemesEnabled} + if ThemeServices.ThemesEnabled and Ctl3D and (BorderStyle = bsSingle) then + with Msg.CalcSize_Params^ do + InflateRect(rgrc[0], 1, 1); + {$ENDIF JVCLThemesEnabled} + inherited; + end; + + procedure TJvCustomComboEdit.WMNCHitTest(var Msg: TWMNCHitTest); + var + P: TPoint; + begin + inherited; + if Msg.Result = HTCLIENT then + begin + P := Point(FBtnControl.Left, FBtnControl.Top); + Windows.ClientToScreen(Handle, P); + if Msg.XPos > P.X then + Msg.Result := HTCAPTION; + end; end; |