unit spkte_AppearanceEditor; {$MODE Delphi} interface uses LCLIntf, LCLType, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls, Buttons, Spin, LCLVersion, SpkGUITools, SpkXMLParser, SpkToolbar, spkt_Buttons, spkt_Pane, spkt_Tab, spkt_Appearance; type { TfrmAppearanceEditWindow } TfrmAppearanceEditWindow = class(TForm) SmallImages: TImageList; LargeImages: TImageList; Images_150: TImageList; Label15: TLabel; Label16: TLabel; Label19: TLabel; Label20: TLabel; PaneHSpacer: TBevel; ItemHSpacer: TBevel; edPaneHotTrackBrightnessChange: TSpinEdit; edItemHotTrackBrightnessChange: TSpinEdit; TabVSpacer: TBevel; bInactiveTabHeaderFontColor: TSpeedButton; bItemActiveInnerDarkColor: TSpeedButton; bItemActiveGradientFromColor: TSpeedButton; bItemActiveGradientToColor: TSpeedButton; bItemActiveCaptionColor: TSpeedButton; bItemActiveInnerLightColor: TSpeedButton; bItemHotTrackInnerDarkColor: TSpeedButton; bItemHotTrackFrameColor: TSpeedButton; bItemActiveFrameColor: TSpeedButton; bItemHotTrackGradientFromColor: TSpeedButton; bItemHotTrackGradientToColor: TSpeedButton; bItemHotTrackCaptionColor: TSpeedButton; bItemHotTrackInnerLightColor: TSpeedButton; bItemIdleInnerDarkColor: TSpeedButton; bItemIdleGradientFromColor: TSpeedButton; bItemIdleGradientToColor: TSpeedButton; bItemIdleCaptionColor: TSpeedButton; bItemIdleInnerLightColor: TSpeedButton; bPaneBorderDarkColor: TSpeedButton; bPaneBorderLightColor: TSpeedButton; bPaneGradientFromColor: TSpeedButton; bPaneGradientToColor: TSpeedButton; bPaneCaptionBackgroundColor: TSpeedButton; bPaneCaptionFontColor: TSpeedButton; bItemIdleFrameColor: TSpeedButton; bTabGradientFromColor: TSpeedButton; bTabGradientToColor: TSpeedButton; bActiveTabHeaderFontColor: TSpeedButton; bExportToPascal: TButton; bCopyToClipboard: TButton; cbItemStyle: TComboBox; cbPaneStyle: TComboBox; ColorView: TShape; ItemVSpacer: TBevel; gbPreview: TGroupBox; Label12: TLabel; Label27: TLabel; LblCaptionBackground1: TLabel; LblRGB: TLabel; Images_100: TImageList; Images_200: TImageList; Label18: TLabel; LblInactiveTabHeaderFontColor: TLabel; pInactiveTabHeaderFont: TPanel; ButtonPanel: TPanel; bTabFrameColor: TSpeedButton; SpkTab2: TSpkTab; TabHSpacer: TBevel; tbPreview: TSpkToolbar; SpkTab1: TSpkTab; SpkPane1: TSpkPane; SpkLargeButton1: TSpkLargeButton; SpkLargeButton3: TSpkLargeButton; SpkLargeButton2: TSpkLargeButton; SpkPane2: TSpkPane; SpkSmallButton1: TSpkSmallButton; SpkSmallButton2: TSpkSmallButton; SpkSmallButton3: TSpkSmallButton; SpkPane3: TSpkPane; SpkSmallButton4: TSpkSmallButton; SpkSmallButton5: TSpkSmallButton; SpkSmallButton6: TSpkSmallButton; SpkSmallButton7: TSpkSmallButton; SpkSmallButton8: TSpkSmallButton; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; Label2: TLabel; pTabFrame: TPanel; pTabGradientFrom: TPanel; Label3: TLabel; Label4: TLabel; pTabGradientTo: TPanel; cbTabGradientKind: TComboBox; Label5: TLabel; Label6: TLabel; pTabHeaderFont: TPanel; Label8: TLabel; pPaneBorderDark: TPanel; pPaneBorderLight: TPanel; Label21: TLabel; Label9: TLabel; pPaneGradientFrom: TPanel; pPaneGradientTo: TPanel; Label10: TLabel; Label11: TLabel; cbPaneGradientKind: TComboBox; pPaneCaptionBackground: TPanel; LblPaneCaptionBackground: TLabel; Label13: TLabel; pPaneCaptionFont: TPanel; Label1: TLabel; Label7: TLabel; Label14: TLabel; Label25: TLabel; Label26: TLabel; pItemFont: TPanel; cbItemIdleGradientKind: TComboBox; pItemIdleGradientTo: TPanel; pItemIdleGradientFrom: TPanel; pItemIdleFrame: TPanel; LblIdle: TLabel; Label28: TLabel; pItemIdleCaptionColor: TPanel; Label29: TLabel; pItemIdleInnerDark: TPanel; LblLinkInnerLightColor: TLabel; pItemIdleInnerLight: TPanel; cbItemHottrackGradientKind: TComboBox; pItemHottrackGradientTo: TPanel; pItemHottrackGradientFrom: TPanel; pItemHottrackFrame: TPanel; LblHotTrack: TLabel; pItemHottrackCaptionColor: TPanel; pItemHottrackInnerDark: TPanel; pItemHottrackInnerLight: TPanel; cbItemActiveGradientKind: TComboBox; pItemActiveGradientTo: TPanel; pItemActiveGradientFrom: TPanel; pItemActiveFrame: TPanel; LblActive: TLabel; pItemActiveCaptionColor: TPanel; pItemActiveInnerDark: TPanel; pItemActiveInnerLight: TPanel; bOK: TButton; bCancel: TButton; cdColorDialog: TColorDialog; fdFontDialog: TFontDialog; pActiveTabHeaderFont: TPanel; pPaneCaptionFontColor: TPanel; TabSheet4: TTabSheet; bImport: TButton; bExportToXML: TButton; mXML: TMemo; sTabRectangle: TShape; cbLinkTab: TCheckBox; sPaneRectangle: TShape; cbLinkPane: TCheckBox; cbLinkItem: TCheckBox; sItemRectangle: TShape; TabSheet5: TTabSheet; Label17: TLabel; LbAppearanceStyle: TListbox; procedure bExportToPascalClick(Sender: TObject); procedure bExportToXMLClick(Sender: TObject); procedure bImportClick(Sender: TObject); procedure bInactiveTabHeaderFontColorClick(Sender: TObject); procedure bItemActiveCaptionColorClick(Sender: TObject); procedure bItemActiveFrameColorClick(Sender: TObject); procedure bItemActiveGradientFromColorClick(Sender: TObject); procedure bItemActiveGradientToColorClick(Sender: TObject); procedure bItemActiveInnerDarkColorClick(Sender: TObject); procedure bItemActiveInnerLightColorClick(Sender: TObject); procedure bItemHotTrackCaptionColorClick(Sender: TObject); procedure bItemHotTrackFrameColorClick(Sender: TObject); procedure bItemHotTrackGradientFromColorClick(Sender: TObject); procedure bItemHotTrackGradientToColorClick(Sender: TObject); procedure bItemHotTrackInnerDarkColorClick(Sender: TObject); procedure bItemHotTrackInnerLightColorClick(Sender: TObject); procedure bItemIdleCaptionColorClick(Sender: TObject); procedure bItemIdleFrameColorClick(Sender: TObject); procedure bItemIdleGradientFromColorClick(Sender: TObject); procedure bItemIdleGradientToColorClick(Sender: TObject); procedure bItemIdleInnerDarkColorClick(Sender: TObject); procedure bItemIdleInnerLightColorClick(Sender: TObject); procedure bPaneBorderDarkColorClick(Sender: TObject); procedure bPaneBorderLightColorClick(Sender: TObject); procedure bPaneCaptionBackgroundColorClick(Sender: TObject); procedure bPaneCaptionFontColorClick(Sender: TObject); procedure bPaneGradientFromColorClick(Sender: TObject); procedure bPaneGradientToColorClick(Sender: TObject); procedure bResetClick(Sender: TObject); procedure bTabBorderColorClick(Sender: TObject); procedure bTabGradientFromColorClick(Sender: TObject); procedure bTabGradientToColorClick(Sender: TObject); procedure bActiveTabHeaderFontColorClick(Sender: TObject); procedure bCopyToClipboardClick(Sender: TObject); procedure cbItemActiveGradientKindChange(Sender: TObject); procedure cbItemHottrackGradientKindChange(Sender: TObject); procedure cbItemIdleGradientKindChange(Sender: TObject); procedure cbItemStyleChange(Sender: TObject); procedure cbPaneGradientKindChange(Sender: TObject); procedure cbPaneStyleChange(Sender: TObject); procedure cbTabGradientKindChange(Sender: TObject); procedure cbLinkItemClick(Sender: TObject); procedure cbLinkPaneClick(Sender: TObject); procedure cbLinkTabClick(Sender: TObject); procedure edItemHotTrackBrightnessChangeChange(Sender: TObject); procedure edPaneHotTrackBrightnessChangeChange(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure LbAppearanceStyleClick(Sender: TObject); procedure pActiveTabHeaderFontClick(Sender: TObject); procedure pInactiveTabHeaderFontClick(Sender: TObject); procedure pTabFrameClick(Sender: TObject); procedure pTabGradientFromClick(Sender: TObject); procedure pTabGradientToClick(Sender: TObject); procedure pPaneBorderDarkClick(Sender: TObject); procedure pPaneBorderLightClick(Sender: TObject); procedure pPaneCaptionFontClick(Sender: TObject); procedure pPaneCaptionFontColorClick(Sender: TObject); procedure pPaneGradientFromClick(Sender: TObject); procedure pPaneGradientToClick(Sender: TObject); procedure pPaneCaptionBackgroundClick(Sender: TObject); procedure pItemActiveCaptionColorClick(Sender: TObject); procedure pItemActiveFrameClick(Sender: TObject); procedure pItemActiveGradientFromClick(Sender: TObject); procedure pItemActiveGradientToClick(Sender: TObject); procedure pItemActiveInnerDarkClick(Sender: TObject); procedure pItemActiveInnerLightClick(Sender: TObject); procedure pItemFontClick(Sender: TObject); procedure pItemIdleCaptionColorClick(Sender: TObject); procedure pItemIdleFrameClick(Sender: TObject); procedure pItemIdleGradientFromClick(Sender: TObject); procedure pItemIdleGradientToClick(Sender: TObject); procedure pItemIdleInnerDarkClick(Sender: TObject); procedure pItemIdleInnerLightClick(Sender: TObject); procedure pItemHottrackCaptionColorClick(Sender: TObject); procedure pItemHottrackFrameClick(Sender: TObject); procedure pItemHottrackGradientFromClick(Sender: TObject); procedure pItemHottrackGradientToClick(Sender: TObject); procedure pItemHottrackInnerDarkClick(Sender: TObject); procedure pItemHottrackInnerLightClick(Sender: TObject); procedure pTabHeaderFontClick(Sender: TObject); private procedure SetLinkedFrameColor(AColor : TColor); procedure SetLinkedGradientFromColor(AColor : TColor); procedure SetLinkedGradientToColor(AColor : TColor); procedure SetLinkedGradientKind(AKindIndex : integer); function GetAppearance: TSpkToolbarAppearance; procedure SetAppearance(const Value: TSpkToolbarAppearance); procedure SwitchAttributesLink(const Value : boolean); function ChangeColor(Panel : TPanel) : boolean; procedure SetPanelColor(Panel: TPanel; AColor : TColor); function ChangeFont(Panel : TPanel) : boolean; procedure SetPanelFont(Panel : TPanel; AFont : TFont); procedure SetComboGradientKind(Combo : TComboBox; GradientType : TBackgroundKind); procedure LoadAppearance(AAppearance : TSpkToolbarAppearance); private { Color picker } FScreenBitmap: TBitmap; FScreenshotForm: TForm; function PickColor(APanel: TPanel): Boolean; procedure ScreenshotKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure ScreenshotMouseDown(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; X, Y: integer); procedure ScreenshotMouseMove(Sender: TObject; {%H-}Shift: TShiftState; X, Y: integer); procedure ScreenshotMouseUp(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: integer); private procedure UpdateImages; procedure UpdateSizes; protected {$IF lcl_fullversion >= 1080000} procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy; const AXProportion, AYProportion: Double); override; {$ENDIF} public property Appearance : TSpkToolbarAppearance read GetAppearance write SetAppearance; end; var frmAppearanceEditWindow: TfrmAppearanceEditWindow; implementation {$R *.lfm} uses Types, clipbrd, spkt_Const; var CurrPageIndex: Integer = 0; { TfrmAppearanceEditWindow } {$IF lcl_fullversion >= 1080000} procedure TfrmAppearanceEditWindow.DoAutoAdjustLayout( const AMode: TLayoutAdjustmentPolicy; const AXProportion, AYProportion: Double); begin inherited; end; {$ENDIF} procedure TfrmAppearanceEditWindow.SetAppearance(const Value: TSpkToolbarAppearance); begin tbPreview.Appearance.Assign(Value); end; procedure TfrmAppearanceEditWindow.SetComboGradientKind(Combo: TComboBox; GradientType: TBackgroundKind); begin Combo.ItemIndex := ord(GradientType); end; procedure TfrmAppearanceEditWindow.SetLinkedFrameColor(AColor: TColor); begin tbPreview.Appearance.Tab.BorderColor := AColor; SetPanelColor(pTabFrame, AColor); tbPreview.Appearance.Pane.BorderDarkColor := AColor; SetPanelColor(pPaneBorderDark, AColor); tbPreview.Appearance.Element.IdleFrameColor := AColor; SetPanelColor(pItemIdleFrame, AColor); end; procedure TfrmAppearanceEditWindow.SetLinkedGradientFromColor(AColor: TColor); begin tbPreview.Appearance.Tab.GradientFromColor := AColor; SetPanelColor(pTabGradientFrom, AColor); tbPreview.Appearance.Pane.GradientFromColor := AColor; SetPanelColor(pPaneGradientFrom, AColor); tbPreview.Appearance.Element.IdleGradientFromColor := AColor; SetPanelColor(pItemIdleGradientFrom, AColor); end; procedure TfrmAppearanceEditWindow.SetLinkedGradientKind(AKindIndex: integer); var Kind: TBackgroundKind; begin Kind := TBackgroundKind(AKindIndex); tbPreview.Appearance.Tab.GradientType := Kind; SetComboGradientKind(cbTabGradientKind, Kind); tbPreview.Appearance.Pane.GradientType := Kind; SetComboGradientKind(cbPaneGradientKind, Kind); tbPreview.Appearance.Element.IdleGradientType := Kind; SetComboGradientKind(cbItemIdleGradientKind, Kind); end; procedure TfrmAppearanceEditWindow.SetLinkedGradientToColor(AColor: TColor); begin tbPreview.Appearance.Tab.GradientToColor := AColor; SetPanelColor(pTabGradientTo, AColor); tbPreview.Appearance.Pane.GradientToColor := AColor; SetPanelColor(pPaneGradientTo, AColor); tbPreview.Appearance.Element.IdleGradientToColor := AColor; SetPanelColor(pItemIdleGradientTo, AColor); end; procedure TfrmAppearanceEditWindow.SetPanelColor(Panel: TPanel; AColor: TColor); begin Panel.Color := AColor; if Panel.Color <> AColor then Showmessage('lipa!'); if (GetRValue(AColor) + GetGValue(AColor) + GetBValue(AColor)) div 3 >= 128 then Panel.Font.Color := clBlack else Panel.Font.Color := clWhite; Panel.Caption := '$' + IntToHex(AColor, 8); end; procedure TfrmAppearanceEditWindow.SetPanelFont(Panel: TPanel; AFont: TFont); begin Panel.Font.Assign(AFont); Panel.Caption := AFont.Name + ', ' + IntToStr(AFont.Size); end; procedure TfrmAppearanceEditWindow.bTabBorderColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pTabFrame) then begin tbPreview.Appearance.Tab.BorderColor := pTabFrame.Color; if cbLinkTab.checked then SetLinkedFrameColor(pTabFrame.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bTabGradientFromColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pTabGradientFrom) then begin tbPreview.Appearance.Tab.GradientFromColor := pTabGradientFrom.Color; if cbLinkTab.checked then SetLinkedFrameColor(pTabGradientFrom.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bTabGradientToColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pTabGradientTo) then begin tbPreview.Appearance.Tab.GradientToColor := pTabGradientTo.Color; if cbLinkTab.checked then SetLinkedFrameColor(pTabGradientTo.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bCopyToClipboardClick(Sender: TObject); begin if mXML.Lines.Count > 0 then Clipboard.AsText := mXML.Text; end; procedure TfrmAppearanceEditWindow.bActiveTabHeaderFontColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pActiveTabHeaderFont) then begin tbPreview.Appearance.Tab.TabHeaderFont.Color := pActiveTabHeaderFont.Color; tbPreview.ForceRepaint; end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bExportToPascalClick(Sender: TObject); var L: TStrings; begin L := TStringList.Create; try tbPreview.Appearance.SaveToPascal(L); mXML.Clear; mXML.Lines.Assign(L); finally L.Free; end; end; procedure TfrmAppearanceEditWindow.bExportToXMLClick(Sender: TObject); var Xml: TSpkXMLParser; Node: TSpkXMLNode; begin XML:=TSpkXMLParser.Create; try Node := XML['Appearance', true]; tbPreview.Appearance.SaveToXML(Node); mXML.Clear; mXml.Text:=XML.Generate; finally XML.Free; end; end; procedure TfrmAppearanceEditWindow.bInactiveTabHeaderFontColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pInactiveTabHeaderFont) then begin tbPreview.Appearance.Tab.InactiveTabHeaderFontColor := pInactiveTabHeaderFont.Color; tbPreview.ForceRepaint; end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemActiveCaptionColorClick(Sender: TObject ); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemActiveCaptionColor) then tbPreview.Appearance.Element.ActiveCaptionColor := pItemActiveCaptionColor.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemActiveFrameColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemActiveFrame) then tbPreview.Appearance.Element.ActiveFrameColor := pItemactiveFrame.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemActiveGradientFromColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemActiveGradientFrom) then tbPreview.Appearance.Element.ActiveGradientFromColor := pItemActiveGradientFrom.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemActiveGradientToColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemActiveGradientTo) then tbPreview.Appearance.Element.ActiveGradientToColor := pItemActiveGradientTo.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemActiveInnerDarkColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemActiveInnerDark) then tbPreview.Appearance.Element.ActiveInnerDarkColor := pItemActiveInnerDark.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemActiveInnerLightColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemActiveInnerLight) then tbPreview.Appearance.Element.ActiveInnerLightColor := pItemActiveInnerLight.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemHotTrackCaptionColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemHotTrackCaptionColor) then tbPreview.Appearance.Element.HotTrackCaptionColor := pItemHotTrackCaptionColor.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemHotTrackFrameColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemHotTrackFrame) then tbPreview.Appearance.Element.HotTrackFrameColor := pItemHotTrackFrame.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemHotTrackGradientFromColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemHotTrackGradientFrom) then tbPreview.Appearance.Element.HotTrackGradientFromColor := pItemHotTrackGradientFrom.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemHotTrackGradientToColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemHotTrackGradientTo) then tbPreview.Appearance.Element.HotTrackGradientToColor := pItemHotTrackGradientTo.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemHotTrackInnerDarkColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemHotTrackInnerDark) then tbPreview.Appearance.Element.HotTrackInnerDarkColor := pItemHotTrackInnerDark.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemHotTrackInnerLightColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemHotTrackInnerLight) then tbPreview.Appearance.Element.HotTrackInnerLightColor := pItemHotTrackInnerLight.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemIdleCaptionColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemIdleCaptionColor) then begin tbPreview.Appearance.Element.IdleCaptionColor := pItemIdleCaptionColor.Color; if cbLinkTab.checked then SetLinkedFrameColor(pItemIdleCaptionColor.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemIdleFrameColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemIdleFrame) then begin tbPreview.Appearance.Element.IdleFrameColor := pItemIdleFrame.Color; if cbLinkTab.checked then SetLinkedFrameColor(pItemIdleFrame.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemIdleGradientFromColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemIdleGradientFrom) then begin tbPreview.Appearance.Element.IdleGradientFromColor := pItemIdleGradientFrom.Color; if cbLinkTab.checked then SetLinkedFrameColor(pItemIdleGradientFrom.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemIdleGradientToColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemIdleGradientTo) then begin tbPreview.Appearance.Element.IdleGradientToColor := pItemIdleGradientTo.Color; if cbLinkTab.checked then SetLinkedFrameColor(pItemIdleGradientTo.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemIdleInnerDarkColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemIdleInnerDark) then begin tbPreview.Appearance.Element.IdleInnerDarkColor := pItemIdleInnerDark.Color; if cbLinkTab.checked then SetLinkedFrameColor(pItemIdleInnerDark.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bItemIdleInnerLightColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pItemIdleInnerLight) then begin tbPreview.Appearance.Element.IdleInnerLightColor := pItemIdleInnerLight.Color; if cbLinkPane.Checked then SetLinkedFrameColor(pItemIdleInnerLight.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bPaneBorderDarkColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pPaneBorderDark) then begin tbPreview.Appearance.Pane.BorderDarkColor := pPaneBorderDark.Color; if cbLinkPane.Checked then SetLinkedFrameColor(pPaneBorderDark.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bPaneBorderLightColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pPaneBorderLight) then begin tbPreview.Appearance.Pane.BorderLightColor := pPaneBorderLight.Color; if cbLinkPane.Checked then SetLinkedFrameColor(pPaneBorderLight.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bPaneCaptionBackgroundColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pPaneCaptionBackground) then tbPreview.Appearance.Pane.CaptionBgColor := pPaneCaptionBackground.Color; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bPaneCaptionFontColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pPaneCaptionFontColor) then begin tbPreview.Appearance.Pane.CaptionFont.Color := pPaneCaptionFontColor.Color; tbPreview.ForceRepaint; end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bPaneGradientFromColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pPaneGradientFrom) then begin tbPreview.Appearance.Pane.GradientFromColor := pPaneGradientFrom.Color; if cbLinkPane.Checked then SetLinkedFrameColor(pPaneGradientFrom.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.bPaneGradientToColorClick(Sender: TObject); begin (Sender as TSpeedButton).Down := true; if PickColor(pPaneGradientTo) then begin tbPreview.Appearance.Pane.GradientToColor := pPaneGradientTo.Color; if cbLinkPane.Checked then SetLinkedFrameColor(pPaneGradientTo.Color) end; (Sender as TSpeedButton).Down := false; end; procedure TfrmAppearanceEditWindow.SwitchAttributesLink(const Value: boolean); begin cbLinkTab.checked := Value; cbLinkPane.Checked := Value; cbLinkItem.Checked := Value; sTabRectangle.Visible := Value; sPaneRectangle.Visible := Value; sItemRectangle.Visible := Value; end; procedure TfrmAppearanceEditWindow.cbItemHottrackGradientKindChange(Sender: TObject); begin with tbPreview.Appearance.Element do HotTrackGradientType := TBackgroundKind((Sender as TCombobox).ItemIndex); end; procedure TfrmAppearanceEditWindow.cbItemIdleGradientKindChange(Sender: TObject); begin with tbPreview.Appearance.Element do IdleGradientType := TBackgroundKind((Sender as TCombobox).ItemIndex); if cbLinkItem.Checked then SetLinkedGradientKind((Sender as TComboBox).ItemIndex); end; procedure TfrmAppearanceEditWindow.cbItemStyleChange(Sender: TObject); begin with tbPreview.Appearance.Element do Style := TSpkElementStyle((Sender as TCombobox).ItemIndex); end; procedure TfrmAppearanceEditWindow.cbLinkItemClick(Sender: TObject); begin SwitchAttributesLink(cbLinkItem.Checked); end; procedure TfrmAppearanceEditWindow.cbLinkPaneClick(Sender: TObject); begin SwitchAttributesLink(cbLinkPane.Checked); end; procedure TfrmAppearanceEditWindow.cbLinkTabClick(Sender: TObject); begin SwitchAttributesLink(cbLinkTab.Checked); end; procedure TfrmAppearanceEditWindow.cbTabGradientKindChange(Sender: TObject); begin with tbPreview.Appearance.Tab do GradientType := TBackgroundKind((Sender as TCombobox).ItemIndex); if cbLinkTab.Checked then SetLinkedGradientKind((Sender as TComboBox).ItemIndex); end; function TfrmAppearanceEditWindow.ChangeColor(Panel: TPanel): boolean; begin cdColorDialog.Color := Panel.Color; if cdColorDialog.Execute then begin SetPanelColor(Panel, cdColorDialog.Color); Result := true end else Result := false; end; function TfrmAppearanceEditWindow.ChangeFont(Panel: TPanel): boolean; begin fdFontDialog.Font.Assign(Panel.Font); if fdFontDialog.Execute then begin SetPanelFont(Panel, fdFontDialog.Font); Result := true; end else Result := false; end; procedure TfrmAppearanceEditWindow.edItemHotTrackBrightnessChangeChange( Sender: TObject); begin with tbPreview.Appearance.Element do HotTrackBrightnessChange := (Sender as TSpinEdit).Value; tbPreview.Invalidate; end; procedure TfrmAppearanceEditWindow.edPaneHotTrackBrightnessChangeChange( Sender: TObject); begin with tbPreview.Appearance.Pane do HotTrackBrightnessChange := (Sender as TSpinEdit).Value; tbPreview.Invalidate; end; procedure TfrmAppearanceEditWindow.FormActivate(Sender: TObject); begin UpdateImages; UpdateSizes; end; procedure TfrmAppearanceEditWindow.FormCloseQuery(Sender: TObject; var CanClose: boolean); begin if CanClose then CurrPageIndex := PageControl1.PageIndex; end; procedure TfrmAppearanceEditWindow.FormCreate(Sender: TObject); begin PageControl1.PageIndex := CurrPageIndex; end; procedure TfrmAppearanceEditWindow.FormShow(Sender: TObject); begin LoadAppearance(tbPreview.Appearance); end; function TfrmAppearanceEditWindow.GetAppearance: TSpkToolbarAppearance; begin result := tbPreview.Appearance; end; procedure TfrmAppearanceEditWindow.LbAppearanceStyleClick(Sender: TObject); begin tbPreview.Appearance.Reset(TSpkStyle(LbAppearanceStyle.ItemIndex)); LoadAppearance(tbPreview.Appearance); end; procedure TfrmAppearanceEditWindow.LoadAppearance(AAppearance: TSpkToolbarAppearance); begin with AAppearance do begin with Tab do begin SetPanelColor(pTabFrame, BorderColor); SetPanelColor(pTabGradientFrom, GradientFromColor); SetPanelColor(pTabGradientTo, GradientToColor); SetComboGradientKind(cbTabGradientKind, GradientType); SetPanelFont(pTabHeaderFont, TabHeaderFont); SetPanelColor(pActiveTabHeaderFont, TabHeaderFont.Color); SetPanelColor(pInactiveTabHeaderFont, InactiveTabHeaderFontColor); end; with Pane do begin SetPanelColor(pPaneBorderDark, BorderDarkColor); SetPanelColor(pPaneBorderLight, BorderLightColor); SetPanelColor(pPaneGradientFrom, GradientFromColor); SetPanelColor(pPaneGradientTo, GradientToColor); SetComboGradientKind(cbPaneGradientKind, GradientType); SetPanelColor(pPaneCaptionBackground, CaptionBgColor); SetPanelFont(pPaneCaptionFont, CaptionFont); SetPanelColor(pPaneCaptionFontColor, CaptionFont.Color); cbPaneStyle.ItemIndex := ord(Style); edPaneHotTrackBrightnessChange.Value := HotTrackBrightnessChange; end; with Element do begin SetPanelFont(pItemFont, CaptionFont); SetPanelColor(pItemIdleFrame, IdleFrameColor); SetPanelColor(pItemIdleGradientFrom, IdleGradientFromColor); SetPanelColor(pItemIdleGradientTo, IdleGradientToColor); SetComboGradientKind(cbItemIdleGradientKind, IdleGradientType); SetPanelColor(pItemIdleCaptionColor, IdleCaptionColor); SetPanelColor(pItemIdleInnerDark, IdleInnerDarkColor); SetPanelColor(pItemIdleInnerLight, IdleInnerLightColor); SetPanelColor(pItemHottrackFrame, HottrackFrameColor); SetPanelColor(pItemHottrackGradientFrom, HottrackGradientFromColor); SetPanelColor(pItemHottrackGradientTo, HottrackGradientToColor); SetComboGradientKind(cbItemHottrackGradientKind, HottrackGradientType); SetPanelColor(pItemHottrackCaptionColor, HottrackCaptionColor); SetPanelColor(pItemHottrackInnerDark, HottrackInnerDarkColor); SetPanelColor(pItemHottrackInnerLight, HottrackInnerLightColor); SetPanelColor(pItemActiveFrame, ActiveFrameColor); SetPanelColor(pItemActiveGradientFrom, ActiveGradientFromColor); SetPanelColor(pItemActiveGradientTo, ActiveGradientToColor); SetComboGradientKind(cbItemActiveGradientKind, ActiveGradientType); SetPanelColor(pItemActiveCaptionColor, ActiveCaptionColor); SetPanelColor(pItemActiveInnerDark, ActiveInnerDarkColor); SetPanelColor(pItemActiveInnerLight, ActiveInnerLightColor); cbItemStyle.ItemIndex := ord(Style); edItemHotTrackBrightnessChange.Value := HotTrackBrightnessChange; end; end; end; procedure TfrmAppearanceEditWindow.pItemActiveCaptionColorClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Element.ActiveCaptionColor:=(Sender as TPanel).Color; tbPreview.ForceRepaint; end; end; procedure TfrmAppearanceEditWindow.pItemActiveFrameClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.ActiveFrameColor:=(Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemActiveGradientFromClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.ActiveGradientFromColor:=(Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.bImportClick(Sender: TObject); var XML: TSpkXMLParser; Node: TSpkXMLNode; begin tbPreview.BeginUpdate; XML := TSpkXMLParser.Create; try XML.Parse(PChar(mXML.text)); Node := XML['Appearance', false]; if assigned(Node) then tbPreview.Appearance.LoadFromXML(Node); LoadAppearance(tbPreview.Appearance); finally XML.Free; tbPreview.EndUpdate; tbPreview.ForceRepaint; end; end; procedure TfrmAppearanceEditWindow.bResetClick(Sender: TObject); begin tbPreview.Appearance.Reset; LoadAppearance(tbPreview.Appearance); end; procedure TfrmAppearanceEditWindow.cbItemActiveGradientKindChange(Sender: TObject); begin with tbPreview.Appearance.Element do ActiveGradientType := TBackgroundKind((Sender as TCombobox).ItemIndex); end; procedure TfrmAppearanceEditWindow.pItemActiveGradientToClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.ActiveGradientToColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemActiveInnerDarkClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.ActiveInnerDarkColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemActiveInnerLightClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.ActiveInnerLightColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemHottrackCaptionColorClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Element.HotTrackCaptionColor := (Sender as TPanel).Color; tbPreview.ForceRepaint; end; end; procedure TfrmAppearanceEditWindow.pItemHottrackFrameClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.HotTrackFrameColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemHottrackGradientFromClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.HotTrackGradientFromColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemHottrackGradientToClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.HotTrackGradientToColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemHottrackInnerDarkClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.HotTrackInnerDarkColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemHottrackInnerLightClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.HotTrackInnerLightColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemIdleCaptionColorClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Element.IdleCaptionColor := (Sender as TPanel).Color; tbPreview.ForceRepaint; end; end; procedure TfrmAppearanceEditWindow.pItemIdleFrameClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Element.IdleFrameColor := (Sender as TPanel).Color; if cbLinkItem.Checked then SetLinkedFrameColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pItemIdleGradientFromClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Element.IdleGradientFromColor := (Sender as TPanel).Color; if cbLinkItem.Checked then SetLinkedGradientFromColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pItemIdleGradientToClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Element.IdleGradientToColor := (Sender as TPanel).Color; if cbLinkItem.Checked then SetLinkedGradientToColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pItemIdleInnerDarkClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.IdleInnerDarkColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemIdleInnerLightClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Element.IdleInnerLightColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pItemFontClick(Sender: TObject); begin if ChangeFont(Sender as TPanel) then tbPreview.Appearance.Element.CaptionFont.Assign((Sender as TPanel).Font); tbPreview.ForceRepaint; end; procedure TfrmAppearanceEditWindow.pPaneBorderDarkClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Pane.BorderDarkColor := (Sender as TPanel).Color; if cbLinkPane.Checked then SetLinkedFrameColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pPaneBorderLightClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Pane.BorderLightColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pPaneCaptionBackgroundClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then tbPreview.Appearance.Pane.CaptionBgColor := (Sender as TPanel).Color; end; procedure TfrmAppearanceEditWindow.pPaneCaptionFontClick(Sender: TObject); begin if ChangeFont(Sender as TPanel) then tbPreview.Appearance.Pane.CaptionFont.Assign((Sender as TPanel).Font); tbPreview.ForceRepaint; end; procedure TfrmAppearanceEditWindow.pPaneCaptionFontColorClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Pane.CaptionFont.Color:=((Sender as TPanel).Color); pPaneCaptionFont.Font.color:=((Sender as TPanel).Color); tbPreview.ForceRepaint; end; end; procedure TfrmAppearanceEditWindow.pPaneGradientFromClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Pane.GradientFromColor:=(Sender as TPanel).Color; if cbLinkPane.Checked then SetLinkedGradientFromColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.cbPaneGradientKindChange(Sender: TObject); begin with tbPreview.Appearance.Pane do GradientType := TBackgroundKind((Sender as TCombobox).ItemIndex); if cbLinkPane.Checked then SetLinkedGradientKind((Sender as TComboBox).ItemIndex); end; procedure TfrmAppearanceEditWindow.cbPaneStyleChange(Sender: TObject); begin with tbPreview.Appearance.Pane do Style := TSpkPaneStyle((Sender as TCombobox).ItemIndex); end; procedure TfrmAppearanceEditWindow.pPaneGradientToClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Pane.GradientToColor:=(Sender as TPanel).Color; if cbLinkPane.Checked then SetLinkedGradientToColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pTabFrameClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Tab.BorderColor:=(Sender as TPanel).Color; if cbLinkTab.checked then SetLinkedFrameColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pTabGradientFromClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Tab.GradientFromColor := (Sender as TPanel).Color; if cbLinkTab.Checked then SetLinkedGradientFromColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pTabGradientToClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Tab.GradientToColor := (Sender as TPanel).Color; if cbLinkTab.Checked then SetLinkedGradientToColor((Sender as TPanel).Color); end; end; procedure TfrmAppearanceEditWindow.pTabHeaderFontClick(Sender: TObject); begin if ChangeFont(Sender as TPanel) then begin tbPreview.Appearance.Tab.TabHeaderFont.Assign((Sender as TPanel).Font); tbPreview.ForceRepaint; end; end; procedure TfrmAppearanceEditWindow.pActiveTabHeaderFontClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Tab.TabHeaderFont.Color := (Sender as TPanel).Color; pTabHeaderFont.Font.Color := (Sender as TPanel).Color; tbPreview.ForceRepaint; end; end; procedure TfrmAppearanceEditWindow.pInactiveTabHeaderFontClick(Sender: TObject); begin if ChangeColor(Sender as TPanel) then begin tbPreview.Appearance.Tab.InactiveTabHeaderFontColor := (Sender as TPanel).Color; tbPreview.ForceRepaint; end; end; function TfrmAppearanceEditWindow.PickColor(APanel: TPanel): Boolean; var screenDC: HDC; cvOrigin: TPoint; rgbOrigin: TPoint; P: TPoint; img: TImage; begin FScreenshotForm := TForm.Create(self); FScreenBitmap := TBitmap.Create; try screenDC := GetDC(0); try FScreenBitmap.LoadFromDevice(ScreenDC); finally ReleaseDC(0, screenDC); end; FScreenshotForm.BorderStyle := bsNone; FScreenshotForm.FormStyle := fsStayOnTop; FScreenshotForm.SetBounds(0, 0, Screen.Width, Screen.Height); img := TImage.Create(FScreenshotForm); img.Picture.Bitmap := FScreenBitmap; img.Parent := FScreenshotForm; img.Align := alClient; cvOrigin := ColorView.BoundsRect.TopLeft; P := ColorView.ClientToScreen(Point(0, 0)); ColorView.Parent := FScreenshotForm; ColorView.Top := P.Y; ColorView.Left := P.X; ColorView.Show; rgbOrigin := LblRGB.BoundsRect.TopLeft; P := LblRGB.ClientToScreen(Point(0, 0)); LblRGB.Parent := FScreenshotForm; LblRGB.Top := P.Y; LblRGB.Left := P.X; LblRGB.Show; // Screen.Cursors[1] := LoadCursorFromLazarusResource('picker'); FScreenshotForm.Cursor := crCross; //1; img.Cursor := crCross; //1; FScreenshotForm.OnKeyDown := ScreenshotKeyDown; img.OnMouseUp := ScreenshotMouseUp; img.OnMouseDown := ScreenshotMouseDown; img.OnMouseMove := ScreenshotMouseMove; Result := FScreenshotForm.ShowModal = mrOK; if Result then SetPanelColor(APanel, ColorView.Brush.Color); ColorView.Hide; ColorView.Top := cvOrigin.Y; ColorView.Left := cvOrigin.X; ColorView.Parent := ButtonPanel; LblRGB.Hide; LblRGB.Top := rgbOrigin.Y; LblRGB.Left := rgbOrigin.X; LblRGB.Parent := ButtonPanel; finally FScreenshotForm.Free; FScreenBitmap.Free; end; end; procedure TfrmAppearanceEditWindow.ScreenshotKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_ESCAPE: FScreenshotForm.ModalResult := mrCancel; VK_RETURN: FScreenshotForm.ModalResult := mrOK; end; end; procedure TfrmAppearanceEditWindow.ScreenshotMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer); begin ColorView.Brush.Color := FScreenBitmap.Canvas.Pixels[X, Y]; LblRGB.Caption := '$' + IntToHex(ColorView.Brush.Color, 8); end; procedure TfrmAppearanceEditWindow.ScreenshotMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer); begin ColorView.Brush.Color := FScreenBitmap.Canvas.Pixels[X, Y]; LblRGB.Caption := '$' + IntToHex(ColorView.Brush.Color, 8); end; procedure TfrmAppearanceEditWindow.ScreenshotMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer); begin FScreenshotForm.ModalResult := mrOK; end; procedure TfrmAppearanceEditWindow.UpdateImages; var imglist: TImageList; m: double; ico: TIcon; w, h: Integer; begin // Use correct size of color picker icon if ScreenInfo.PixelsPerInchY >= 180 then begin imglist := Images_200; m := 2.0; end else if ScreenInfo.PixelsPerInchY >= 135 then begin imglist := Images_150; m := 1.5; end else begin imglist := Images_100; m := 1.0; end; ico := TIcon.Create; try ico.Assign(Application.Icon); w := round(LargeImages.Width * m); h := round(LargeImages.Height * m); ico.Current := ico.GetBestIndexForSize(Size(w, h)); LargeImages.Width := ico.Width; LargeImages.Height := ico.Height; LargeImages.AddIcon(ico); w := round(SmallImages.Width * m); h := round(SmallImages.Height * m); ico.Current := ico.GetBestIndexForSize(Size(w, h)); SmallImages.Width := ico.Width; SmallImages.Height := ico.Height; SmallImages.AddIcon(ico); finally ico.Free; end; imglist.GetBitmap(0, bTabFrameColor.Glyph); imglist.GetBitmap(0, bTabGradientFromColor.Glyph); imglist.GetBitmap(0, bTabGradientToColor.Glyph); imglist.GetBitmap(0, bActiveTabHeaderFontColor.Glyph); imglist.GetBitmap(0, bInactiveTabHeaderFontColor.Glyph); imglist.GetBitmap(0, bPaneBorderDarkColor.Glyph); imglist.GetBitmap(0, bPaneBorderLightColor.Glyph); imglist.GetBitmap(0, bPaneGradientFromColor.Glyph); imglist.GetBitmap(0, bPaneGradientToColor.Glyph); imglist.GetBitmap(0, bPaneCaptionBackgroundColor.Glyph); imglist.GetBitmap(0, bPaneCaptionFontColor.Glyph); imglist.GetBitmap(0, bItemIdleCaptionColor.Glyph); imglist.GetBitmap(0, bItemIdleFrameColor.Glyph); imglist.GetBitmap(0, bItemIdleGradientFromColor.Glyph); imglist.GetBitmap(0, bItemIdleGradientToColor.Glyph); imglist.GetBitmap(0, bItemIdleInnerDarkColor.Glyph); imglist.GetBitmap(0, bItemIdleInnerLightColor.Glyph); imglist.GetBitmap(0, bItemHotTrackCaptionColor.Glyph); imglist.GetBitmap(0, bItemHotTrackFrameColor.Glyph); imglist.GetBitmap(0, bItemHotTrackGradientFromColor.Glyph); imglist.GetBitmap(0, bItemHotTrackGradientToColor.Glyph); imglist.GetBitmap(0, bItemHotTrackInnerDarkColor.Glyph); imglist.GetBitmap(0, bItemHotTrackInnerLightColor.Glyph); imglist.GetBitmap(0, bItemActiveCaptionColor.Glyph); imglist.GetBitmap(0, bItemActiveFrameColor.Glyph); imglist.GetBitmap(0, bItemActiveGradientFromColor.Glyph); imglist.GetBitmap(0, bItemActiveGradientToColor.Glyph); imglist.GetBitmap(0, bItemActiveInnerDarkColor.Glyph); imglist.GetBitmap(0, bItemActiveInnerLightColor.Glyph); end; procedure TfrmAppearanceEditWindow.UpdateSizes; var w, h: Integer; procedure AddToHeight(var AHeight: Integer; AControl: TControl); begin inc(AHeight, AControl.Height); with AControl.BorderSpacing do inc(AHeight, Top + Bottom + Around); end; begin // Update layout of controls bOK.AutoSize := false; bOK.Width := bCancel.Width; ColorView.Width := ColorView.Height; h := CbTabGradientKind.Height; {$IF lcl_fullversion < 1080000} w := SpkScaleX(pTabFrame.Width, 96); {$ELSE} w := pTabFrame.Width; {$ENDIF} // h := SpkScaleY(pTabFrame.Height, 96); pTabFrame.Width := w; pTabFrame.Height := h; pTabGradientFrom.Height := h; pTabGradientTo.Height := h; pActiveTabHeaderFont.Height := h; pInactiveTabHeaderFont.Height := h; pTabHeaderFont.Height := h; pPaneBorderDark.Width := w; pPaneBorderDark.Height := h; pPaneBorderLight.Height := h; pPaneGradientFrom.Height := h; pPaneGradientTo.Height := h; pPaneCaptionBackground.Height := h; pPaneCaptionFontColor.Height := h; pPaneCaptionFont.Height := h; pItemIdleFrame.Width := w; pItemHotTrackFrame.Width := w; pItemActiveFrame.Width := w; pItemIdleFrame.Height := h; pItemIdleGradientFrom.Height := h; pItemIdleGradientTo.Height := h; pItemIdleCaptionColor.Height := h; pItemIdleInnerDark.Height := h; pItemIdleInnerLight.Height := h; pItemFont.Height := h; // TabSheet2 requires the largest height h := Height - TabSheet2.ClientHeight; // This is the height outside the tabsheet // Add the heights of all controls AddToHeight(h, cbLinkPane); AddToHeight(h, pPaneBorderDark); AddToHeight(h, pPaneBorderLight); AddToHeight(h, pPaneGradientFrom); AddToHeight(h, pPaneGradientTo); AddToHeight(h, cbPaneGradientKind); AddToHeight(h, pPaneCaptionBackground); AddToHeight(h, edPaneHotTrackBrightnessChange); AddToHeight(h, pPaneCaptionFontColor); AddToHeight(h, pPaneCaptionFont); AddToHeight(h, cbPaneStyle); // Adjust width and height {$IF lcl_fullversion < 1080000} Width := SpkScaleX(Width, 96); Height := SpkScaleY(Height, 96); // Height := h; {$ENDIF} (* Constraints.MinHeight := h; Height := 0; *) Position := poScreenCenter; end; end.