From 929870eadc962e7c321b2b60fc71439a09d91897 Mon Sep 17 00:00:00 2001 From: juha Date: Sun, 17 May 2015 19:02:30 +0000 Subject: [PATCH] Designer: AskCompNameDialog redone. Issue #28116, patch from Alexey Torgashin git-svn-id: trunk@49073 - --- designer/askcompnamedlg.lfm | 57 ++++++++++++++++++++------------- designer/askcompnamedlg.pas | 64 +++++++++++++------------------------ 2 files changed, 58 insertions(+), 63 deletions(-) diff --git a/designer/askcompnamedlg.lfm b/designer/askcompnamedlg.lfm index f35b8714d1..138964ae3c 100644 --- a/designer/askcompnamedlg.lfm +++ b/designer/askcompnamedlg.lfm @@ -1,17 +1,18 @@ object AskCompNameDialog: TAskCompNameDialog Left = 299 - Height = 91 + Height = 135 Top = 177 Width = 366 + BorderIcons = [biSystemMenu] Caption = 'AskCompNameDialog' - ClientHeight = 91 + ClientHeight = 135 ClientWidth = 366 OnCreate = FormCreate - Position = poDesktopCenter - LCLVersion = '0.9.29' + Position = poScreenCenter + LCLVersion = '1.5' object Label1: TLabel Left = 6 - Height = 18 + Height = 15 Top = 6 Width = 300 Align = alTop @@ -24,8 +25,8 @@ object AskCompNameDialog: TAskCompNameDialog end object NameEdit: TEdit Left = 6 - Height = 22 - Top = 30 + Height = 23 + Top = 27 Width = 354 Align = alTop BorderSpacing.Around = 6 @@ -35,24 +36,36 @@ object AskCompNameDialog: TAskCompNameDialog TabOrder = 0 Text = 'NameEdit' end - object OkButton: TButton + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 26 + Top = 103 + Width = 354 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 2 + ShowButtons = [pbOK, pbCancel] + ShowBevel = False + end + object InfoPanel: TPanel + AnchorSideLeft.Control = NameEdit AnchorSideTop.Control = NameEdit AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner + AnchorSideRight.Control = NameEdit AnchorSideRight.Side = asrBottom - Left = 276 - Height = 20 - Top = 58 - Width = 84 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'OkButton' - Constraints.MinWidth = 75 - Default = True - OnClick = OkButtonClick - ParentShowHint = False - ShowHint = True + Left = 6 + Height = 38 + Top = 56 + Width = 354 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + BevelOuter = bvNone TabOrder = 1 end end diff --git a/designer/askcompnamedlg.pas b/designer/askcompnamedlg.pas index e845b88542..388eefad94 100644 --- a/designer/askcompnamedlg.pas +++ b/designer/askcompnamedlg.pas @@ -26,53 +26,51 @@ interface uses Classes, SysUtils, LCLProc, FileUtil, Forms, Controls, Graphics, - Dialogs, StdCtrls, PropEdits, LazarusIDEStrConsts; + Dialogs, StdCtrls, ButtonPanel, ExtCtrls, PropEdits, LazarusIDEStrConsts; type { TAskCompNameDialog } TAskCompNameDialog = class(TForm) - OkButton: TButton; + ButtonPanel1: TButtonPanel; + InfoPanel: TPanel; NameEdit: TEdit; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure NameEditChange(Sender: TObject); - procedure OkButtonClick(Sender: TObject); private FLookupRoot: TComponent; FNewComponent: TComponent; function GetNewName: TComponentName; - procedure SetLookupRoot(const AValue: TComponent); - procedure SetNewComponent(const AValue: TComponent); procedure SetNewName(const AValue: TComponentName); public function IsValidName(AName: TComponentName; out ErrorMsg: string): boolean; - property LookupRoot: TComponent read FLookupRoot write SetLookupRoot; + property LookupRoot: TComponent read FLookupRoot write FLookupRoot; property NewName: TComponentName read GetNewName write SetNewName; - property NewComponent: TComponent read FNewComponent write SetNewComponent; + property NewComponent: TComponent read FNewComponent write FNewComponent; end; -function ShowComponentNameDialog(LookupRoot: TComponent; NewComponent: TComponent): string; +function ShowComponentNameDialog(ALookupRoot: TComponent; ANewComponent: TComponent): string; implementation +uses Math; + {$R *.lfm} -function ShowComponentNameDialog(LookupRoot: TComponent; NewComponent: TComponent): string; -var - AskCompNameDialog: TAskCompNameDialog; +function ShowComponentNameDialog(ALookupRoot: TComponent; ANewComponent: TComponent): string; begin - AskCompNameDialog:=TAskCompNameDialog.Create(nil); + with TAskCompNameDialog.Create(nil) do try - AskCompNameDialog.LookupRoot:=LookupRoot; - AskCompNameDialog.NewComponent:=NewComponent; - AskCompNameDialog.NewName:=NewComponent.Name; - Result:=NewComponent.Name; // Default name is the component's current name. - if AskCompNameDialog.ShowModal=mrOk then - Result:=AskCompNameDialog.NewName; + LookupRoot:=ALookupRoot; + NewComponent:=ANewComponent; + NewName:=NewComponent.Name; + Result:=NewComponent.Name; // Default name is the component's current name. + if ShowModal=mrOk then + Result:=NewName; finally - AskCompNameDialog.Free; + Free; end; end; @@ -83,34 +81,18 @@ begin Caption:=lisChooseName; Label1.Caption:=lisChooseANameForTheComponent; NameEdit.Hint:=lisTheComponentNameMustBeUniqueInAllComponentsOnTheFo; - OkButton.Caption:=lisMenuOk; - OkButton.Enabled:=false; + ButtonPanel1.OKButton.Caption:=lisOk; + ButtonPanel1.CancelButton.Caption:=lisCancel; + ButtonPanel1.OKButton.Enabled:=false; end; procedure TAskCompNameDialog.NameEditChange(Sender: TObject); var ErrorMsg: string; begin - OkButton.Enabled:=IsValidName(NameEdit.Text,ErrorMsg); - OkButton.ShowHint:=ErrorMsg<>''; - OkButton.Hint:=ErrorMsg; -end; - -procedure TAskCompNameDialog.OkButtonClick(Sender: TObject); -begin - ModalResult:=mrOk; -end; - -procedure TAskCompNameDialog.SetLookupRoot(const AValue: TComponent); -begin - if FLookupRoot=AValue then exit; - FLookupRoot:=AValue; -end; - -procedure TAskCompNameDialog.SetNewComponent(const AValue: TComponent); -begin - if FNewComponent=AValue then exit; - FNewComponent:=AValue; + ButtonPanel1.OKButton.Enabled:=IsValidName(NameEdit.Text,ErrorMsg); + InfoPanel.Caption:=ErrorMsg; + InfoPanel.Color:=IfThen(ErrorMsg<>'', clInfoBk, clDefault); end; function TAskCompNameDialog.GetNewName: TComponentName;