diff --git a/components/rx/docs/rxfpc.xml b/components/rx/docs/rxfpc.xml
index cf5451671..71b9efb08 100644
--- a/components/rx/docs/rxfpc.xml
+++ b/components/rx/docs/rxfpc.xml
@@ -2,8 +2,10 @@
Данный пакет содержит в себе вспомогательные классы и утилиты, которые необходимы во время разработки программы. Все эти данные не используются во время работы готовой программы, поэтому этот код не включается в финальные версии программ.
Процедура возвращает имя и домен пользователя операционной системы владельца указанного файла.
@@ -2457,6 +2467,7 @@ Description + const DirName: @@ -2466,6 +2477,7 @@ Description + string): @@ -2475,6 +2487,7 @@ Description + string;Функция проверяет все разделители каталогов в указанном имени файла/каталога и, если нужно, меняет их на значение константыDirectorySeparator.
@@ -2498,6 +2511,7 @@ Description + string;Функция GetUserName возвращает имя оператора, залогиненго в системе
diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas index 1f42c3c48..877e5b8a2 100644 --- a/components/rx/rxdbgrid.pas +++ b/components/rx/rxdbgrid.pas @@ -2400,10 +2400,21 @@ var P:TBookmark; DS:TDataSet; i:integer; -// J:integer; + APresent:boolean; begin if (not ((rdgFooterRows in OptionsRx) and DatalinkActive)) or (Columns.Count = 0) then Exit; + //Дополнительно проверим - а стоит ли делать пробег по данным - есть ли агрегатные функции + APresent:=false; + for i:=0 to Columns.Count - 1 do + begin + APresent:=TRxColumn(Columns[i]).Footer.FValueType in [fvtSum, fvtAvg, fvtMax, fvtMin]; + if APresent then break; + end; + + if not APresent then + exit; + inc(FInProcessCalc); DS:=DataSource.DataSet;; P := Ds.GetBookMark; diff --git a/components/rx/rxtbrsetup.lfm b/components/rx/rxtbrsetup.lfm index 1f2199fed..af6467257 100644 --- a/components/rx/rxtbrsetup.lfm +++ b/components/rx/rxtbrsetup.lfm @@ -2,11 +2,11 @@ object ToolPanelSetupForm: TToolPanelSetupForm Left = 383 Height = 487 Top = 176 - Width = 659 + Width = 657 ActiveControl = PageControl1 Caption = 'Tool panel setup' ClientHeight = 487 - ClientWidth = 659 + ClientWidth = 657 FormStyle = fsStayOnTop OnClose = FormClose OnCreate = FormCreate @@ -18,7 +18,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm Left = 0 Height = 435 Top = 0 - Width = 659 + Width = 657 ActivePage = TabSheet1 Align = alClient TabIndex = 0 @@ -26,15 +26,15 @@ object ToolPanelSetupForm: TToolPanelSetupForm object TabSheet1: TTabSheet Caption = 'Visible buttons' ClientHeight = 404 - ClientWidth = 655 + ClientWidth = 653 object Label1: TLabel AnchorSideLeft.Control = BitBtn3 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = TabSheet1 - Left = 355 + Left = 350 Height = 18 Top = 6 - Width = 117 + Width = 118 BorderSpacing.Around = 6 Caption = 'Avaliable buttons' FocusControl = ListBtnAvaliable @@ -45,7 +45,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm Left = 8 Height = 18 Top = 6 - Width = 103 + Width = 102 BorderSpacing.Around = 6 Caption = 'Visible buttons' FocusControl = ListBtnVisible @@ -57,10 +57,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Side = asrBottom AnchorSideRight.Control = BitBtn6 AnchorSideRight.Side = asrBottom - Left = 306 + Left = 309 Height = 30 - Top = 152 - Width = 43 + Top = 148 + Width = 35 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.InnerBorder = 2 @@ -75,10 +75,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Side = asrBottom AnchorSideRight.Control = BitBtn6 AnchorSideRight.Side = asrBottom - Left = 306 - Height = 33 - Top = 113 - Width = 43 + Left = 309 + Height = 31 + Top = 111 + Width = 35 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 @@ -94,10 +94,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Side = asrBottom AnchorSideRight.Control = BitBtn6 AnchorSideRight.Side = asrBottom - Left = 306 + Left = 309 Height = 38 - Top = 69 - Width = 43 + Top = 67 + Width = 35 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.InnerBorder = 2 @@ -110,10 +110,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideLeft.Control = TabSheet1 AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = ListBtnAvaliable - Left = 306 - Height = 33 + Left = 309 + Height = 31 Top = 30 - Width = 43 + Width = 35 AutoSize = True BorderSpacing.InnerBorder = 2 Caption = '>>' @@ -129,10 +129,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideRight.Control = TabSheet1 AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = cbShowCaption - Left = 355 + Left = 350 Height = 275 Top = 30 - Width = 294 + Width = 297 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 Items.Strings = ( @@ -159,7 +159,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm Left = 14 Height = 275 Top = 30 - Width = 286 + Width = 289 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 ItemHeight = 0 @@ -175,7 +175,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm Left = 3 Height = 62 Top = 336 - Width = 643 + Width = 641 Alignment = taLeftJustify Anchors = [akLeft, akRight, akBottom] BorderSpacing.Around = 6 @@ -189,7 +189,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm Left = 6 Height = 19 Top = 311 - Width = 113 + Width = 112 Anchors = [akLeft, akBottom] BorderSpacing.Around = 6 Caption = 'Show caption' @@ -200,14 +200,14 @@ object ToolPanelSetupForm: TToolPanelSetupForm object TabSheet2: TTabSheet Caption = 'Options' ClientHeight = 404 - ClientWidth = 655 + ClientWidth = 653 object cbShowHint: TCheckBox AnchorSideLeft.Control = TabSheet2 AnchorSideTop.Control = cbTransp AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 159 + Top = 148 Width = 88 BorderSpacing.Around = 6 Caption = 'Show hint' @@ -219,8 +219,8 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 134 - Width = 102 + Top = 123 + Width = 101 BorderSpacing.Around = 6 Caption = 'Transparent' TabOrder = 1 @@ -231,8 +231,8 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 109 - Width = 102 + Top = 98 + Width = 101 BorderSpacing.Around = 6 Caption = 'Flat buttons' TabOrder = 2 @@ -243,12 +243,13 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Control = TabSheet2 AnchorSideRight.Control = TabSheet2 AnchorSideRight.Side = asrBottom - Left = 335 - Height = 97 + Left = 334 + Height = 86 Top = 6 - Width = 314 + Width = 313 Anchors = [akTop, akLeft, akRight] AutoFill = False + AutoSize = True BorderSpacing.Around = 6 Caption = 'Button align' ChildSizing.LeftRightSpacing = 6 @@ -257,8 +258,8 @@ object ToolPanelSetupForm: TToolPanelSetupForm ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 - ClientHeight = 76 - ClientWidth = 306 + ClientHeight = 69 + ClientWidth = 313 Items.Strings = ( 'None' 'Left' @@ -272,9 +273,9 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Control = TabSheet2 AnchorSideRight.Control = Panel2 Left = 6 - Height = 90 + Height = 86 Top = 6 - Width = 314 + Width = 313 Anchors = [akTop, akLeft, akRight] AutoFill = True AutoSize = True @@ -289,7 +290,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 ClientHeight = 69 - ClientWidth = 306 + ClientWidth = 313 Items.Strings = ( 'Standart' 'Windows XP' @@ -304,7 +305,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm AnchorSideTop.Control = TabSheet2 AnchorSideBottom.Control = TabSheet2 AnchorSideBottom.Side = asrBottom - Left = 326 + Left = 325 Height = 392 Top = 6 Width = 3 @@ -318,7 +319,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm Left = 6 Height = 40 Top = 441 - Width = 647 + Width = 645 TabOrder = 1 ShowButtons = [pbClose, pbHelp] end diff --git a/components/rx/rxtbrsetup.lrs b/components/rx/rxtbrsetup.lrs index eded17722..8bdd6666a 100644 --- a/components/rx/rxtbrsetup.lrs +++ b/components/rx/rxtbrsetup.lrs @@ -2,51 +2,51 @@ LazarusResources.Add('TToolPanelSetupForm','FORMDATA',[ 'TPF0'#19'TToolPanelSetupForm'#18'ToolPanelSetupForm'#4'Left'#3#127#1#6'Heigh' - +'t'#3#231#1#3'Top'#3#176#0#5'Width'#3#147#2#13'ActiveControl'#7#12'PageContr' + +'t'#3#231#1#3'Top'#3#176#0#5'Width'#3#145#2#13'ActiveControl'#7#12'PageContr' +'ol1'#7'Caption'#6#16'Tool panel setup'#12'ClientHeight'#3#231#1#11'ClientWi' - +'dth'#3#147#2#9'FormStyle'#7#11'fsStayOnTop'#7'OnClose'#7#9'FormClose'#8'OnC' + +'dth'#3#145#2#9'FormStyle'#7#11'fsStayOnTop'#7'OnClose'#7#9'FormClose'#8'OnC' +'reate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#8'OnResize'#7#10'For' +'mResize'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.29'#0#12'T' +'PageControl'#12'PageControl1'#4'Left'#2#0#6'Height'#3#179#1#3'Top'#2#0#5'Wi' - +'dth'#3#147#2#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'TabInde' + +'dth'#3#145#2#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'TabInde' +'x'#2#0#8'TabOrder'#2#0#0#9'TTabSheet'#9'TabSheet1'#7'Caption'#6#15'Visible ' - +'buttons'#12'ClientHeight'#3#148#1#11'ClientWidth'#3#143#2#0#6'TLabel'#6'Lab' + +'buttons'#12'ClientHeight'#3#148#1#11'ClientWidth'#3#141#2#0#6'TLabel'#6'Lab' +'el1'#22'AnchorSideLeft.Control'#7#7'BitBtn3'#19'AnchorSideLeft.Side'#7#9'as' - +'rBottom'#21'AnchorSideTop.Control'#7#9'TabSheet1'#4'Left'#3'c'#1#6'Height'#2 - +#18#3'Top'#2#6#5'Width'#2'u'#20'BorderSpacing.Around'#2#6#7'Caption'#6#17'Av' + +'rBottom'#21'AnchorSideTop.Control'#7#9'TabSheet1'#4'Left'#3'^'#1#6'Height'#2 + +#18#3'Top'#2#6#5'Width'#2'v'#20'BorderSpacing.Around'#2#6#7'Caption'#6#17'Av' +'aliable buttons'#12'FocusControl'#7#16'ListBtnAvaliable'#11'ParentColor'#8#0 +#0#6'TLabel'#6'Label2'#21'AnchorSideTop.Control'#7#9'TabSheet1'#4'Left'#2#8#6 - +'Height'#2#18#3'Top'#2#6#5'Width'#2'g'#20'BorderSpacing.Around'#2#6#7'Captio' + +'Height'#2#18#3'Top'#2#6#5'Width'#2'f'#20'BorderSpacing.Around'#2#6#7'Captio' +'n'#6#15'Visible buttons'#12'FocusControl'#7#14'ListBtnVisible'#11'ParentCol' +'or'#8#0#0#7'TBitBtn'#7'BitBtn3'#22'AnchorSideLeft.Control'#7#7'BitBtn6'#21 +'AnchorSideTop.Control'#7#7'BitBtn4'#18'AnchorSideTop.Side'#7#9'asrBottom'#23 +'AnchorSideRight.Control'#7#7'BitBtn6'#20'AnchorSideRight.Side'#7#9'asrBotto' - +'m'#4'Left'#3'2'#1#6'Height'#2#30#3'Top'#3#152#0#5'Width'#2'+'#7'Anchors'#11 + +'m'#4'Left'#3'5'#1#6'Height'#2#30#3'Top'#3#148#0#5'Width'#2'#'#7'Anchors'#11 +#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSpacing.' +'InnerBorder'#2#2#7'Caption'#6#2'<<'#9'NumGlyphs'#2#0#7'OnClick'#7#12'BitBtn' +'3Click'#8'TabOrder'#2#0#0#0#7'TBitBtn'#7'BitBtn4'#22'AnchorSideLeft.Control' +#7#7'BitBtn6'#21'AnchorSideTop.Control'#7#7'BitBtn5'#18'AnchorSideTop.Side'#7 +#9'asrBottom'#23'AnchorSideRight.Control'#7#7'BitBtn6'#20'AnchorSideRight.Si' - +'de'#7#9'asrBottom'#4'Left'#3'2'#1#6'Height'#2'!'#3'Top'#2'q'#5'Width'#2'+'#7 + +'de'#7#9'asrBottom'#4'Left'#3'5'#1#6'Height'#2#31#3'Top'#2'o'#5'Width'#2'#'#7 +'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#17'BorderSpacing.' +'Top'#2#6#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#1'<'#9'NumGlyphs'#2 +#0#7'OnClick'#7#12'BitBtn4Click'#8'TabOrder'#2#1#0#0#7'TBitBtn'#7'BitBtn5'#22 +'AnchorSideLeft.Control'#7#7'BitBtn6'#21'AnchorSideTop.Control'#7#7'BitBtn6' +#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#7'BitBt' - +'n6'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'2'#1#6'Height'#2'&'#3 - +'Top'#2'E'#5'Width'#2'+'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'Bo' + +'n6'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'5'#1#6'Height'#2'&'#3 + +'Top'#2'C'#5'Width'#2'#'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'Bo' +'rderSpacing.Top'#2#6#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#1'>'#9 +'NumGlyphs'#2#0#7'OnClick'#7#12'BitBtn5Click'#8'TabOrder'#2#2#0#0#7'TBitBtn' +#7'BitBtn6'#22'AnchorSideLeft.Control'#7#9'TabSheet1'#19'AnchorSideLeft.Side' - +#7#9'asrCenter'#21'AnchorSideTop.Control'#7#16'ListBtnAvaliable'#4'Left'#3'2' - +#1#6'Height'#2'!'#3'Top'#2#30#5'Width'#2'+'#8'AutoSize'#9#25'BorderSpacing.I' + +#7#9'asrCenter'#21'AnchorSideTop.Control'#7#16'ListBtnAvaliable'#4'Left'#3'5' + +#1#6'Height'#2#31#3'Top'#2#30#5'Width'#2'#'#8'AutoSize'#9#25'BorderSpacing.I' +'nnerBorder'#2#2#7'Caption'#6#2'>>'#9'NumGlyphs'#2#0#7'OnClick'#7#12'BitBtn6' +'Click'#8'TabOrder'#2#3#0#0#8'TListBox'#16'ListBtnAvaliable'#22'AnchorSideLe' +'ft.Control'#7#7'BitBtn3'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSi' +'deTop.Control'#7#6'Label1'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorS' +'ideRight.Control'#7#9'TabSheet1'#20'AnchorSideRight.Side'#7#9'asrBottom'#24 - +'AnchorSideBottom.Control'#7#13'cbShowCaption'#4'Left'#3'c'#1#6'Height'#3#19 - +#1#3'Top'#2#30#5'Width'#3'&'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8 + +'AnchorSideBottom.Control'#7#13'cbShowCaption'#4'Left'#3'^'#1#6'Height'#3#19 + +#1#3'Top'#2#30#5'Width'#3')'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8 +'akBottom'#0#20'BorderSpacing.Around'#2#6#13'Items.Strings'#1#6#3'111'#6#3'2' +'22'#6#3'333'#6#2'44'#6#3'555'#6#3'666'#6#3'777'#0#10'ItemHeight'#2#0#7'OnCl' +'ick'#7#21'ListBtnAvaliableClick'#10'OnDrawItem'#7#16'ListBox1DrawItem'#5'St' @@ -54,59 +54,60 @@ LazarusResources.Add('TToolPanelSetupForm','FORMDATA',[ +'le'#22'AnchorSideLeft.Control'#7#6'Label2'#21'AnchorSideTop.Control'#7#6'La' +'bel2'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#7 +'BitBtn6'#24'AnchorSideBottom.Control'#7#13'cbShowCaption'#4'Left'#2#14#6'He' - +'ight'#3#19#1#3'Top'#2#30#5'Width'#3#30#1#7'Anchors'#11#5'akTop'#6'akLeft'#7 + +'ight'#3#19#1#3'Top'#2#30#5'Width'#3'!'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7 +'akRight'#8'akBottom'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#7'On' +'Click'#7#21'ListBtnAvaliableClick'#10'OnDrawItem'#7#16'ListBox1DrawItem'#5 +'Style'#7#16'lbOwnerDrawFixed'#8'TabOrder'#2#5#8'TopIndex'#2#255#0#0#6'TPane' +'l'#6'Panel1'#24'AnchorSideBottom.Control'#7#9'TabSheet1'#21'AnchorSideBotto' +'m.Side'#7#9'asrBottom'#4'Left'#2#3#6'Height'#2'>'#3'Top'#3'P'#1#5'Width'#3 - +#131#2#9'Alignment'#7#13'taLeftJustify'#7'Anchors'#11#6'akLeft'#7'akRight'#8 + +#129#2#9'Alignment'#7#13'taLeftJustify'#7'Anchors'#11#6'akLeft'#7'akRight'#8 +'akBottom'#0#20'BorderSpacing.Around'#2#6#10'BevelOuter'#7#9'bvLowered'#11'F' +'ullRepaint'#8#8'TabOrder'#2#6#0#0#9'TCheckBox'#13'cbShowCaption'#22'AnchorS' +'ideLeft.Control'#7#9'TabSheet1'#24'AnchorSideBottom.Control'#7#6'Panel1'#4 - +'Left'#2#6#6'Height'#2#19#3'Top'#3'7'#1#5'Width'#2'q'#7'Anchors'#11#6'akLeft' + +'Left'#2#6#6'Height'#2#19#3'Top'#3'7'#1#5'Width'#2'p'#7'Anchors'#11#6'akLeft' ,#8'akBottom'#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'Show caption'#8 +'OnChange'#7#19'cbShowCaptionChange'#8'TabOrder'#2#7#0#0#0#9'TTabSheet'#9'Ta' +'bSheet2'#7'Caption'#6#7'Options'#12'ClientHeight'#3#148#1#11'ClientWidth'#3 - +#143#2#0#9'TCheckBox'#10'cbShowHint'#22'AnchorSideLeft.Control'#7#9'TabSheet' + +#141#2#0#9'TCheckBox'#10'cbShowHint'#22'AnchorSideLeft.Control'#7#9'TabSheet' +'2'#21'AnchorSideTop.Control'#7#8'cbTransp'#18'AnchorSideTop.Side'#7#9'asrBo' - +'ttom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3#159#0#5'Width'#2'X'#20'BorderSpac' + +'ttom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3#148#0#5'Width'#2'X'#20'BorderSpac' +'ing.Around'#2#6#7'Caption'#6#9'Show hint'#8'TabOrder'#2#0#0#0#9'TCheckBox'#8 +'cbTransp'#22'AnchorSideLeft.Control'#7#9'TabSheet2'#21'AnchorSideTop.Contro' +'l'#7#9'cbFlatBtn'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Heigh' - +'t'#2#19#3'Top'#3#134#0#5'Width'#2'f'#20'BorderSpacing.Around'#2#6#7'Caption' - +#6#11'Transparent'#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'cbFlatBtn'#22'AnchorSi' - +'deLeft.Control'#7#9'TabSheet2'#21'AnchorSideTop.Control'#7#11'RadioGroup1' - +#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'm' - +#5'Width'#2'f'#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'Flat buttons'#8 - +'TabOrder'#2#2#0#0#11'TRadioGroup'#11'RadioGroup1'#22'AnchorSideLeft.Control' - +#7#6'Panel2'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control' - +#7#9'TabSheet2'#23'AnchorSideRight.Control'#7#9'TabSheet2'#20'AnchorSideRigh' - +'t.Side'#7#9'asrBottom'#4'Left'#3'O'#1#6'Height'#2'a'#3'Top'#2#6#5'Width'#3 - +':'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoFill'#8#20'BorderS' - +'pacing.Around'#2#6#7'Caption'#6#12'Button align'#28'ChildSizing.LeftRightSp' - +'acing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#28'ChildSizing.ShrinkHorizo' - +'ntal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChil' - +'ds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizi' - +'ng.ControlsPerLine'#2#1#12'ClientHeight'#2'L'#11'ClientWidth'#3'2'#1#13'Ite' - +'ms.Strings'#1#6#4'None'#6#4'Left'#6#5'Rignt'#0#8'TabOrder'#2#3#7'TabStop'#9 - +#0#0#11'TRadioGroup'#11'RadioGroup2'#22'AnchorSideLeft.Control'#7#9'TabSheet' - +'2'#21'AnchorSideTop.Control'#7#9'TabSheet2'#23'AnchorSideRight.Control'#7#6 - +'Panel2'#4'Left'#2#6#6'Height'#2'Z'#3'Top'#2#6#5'Width'#3':'#1#7'Anchors'#11 - +#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoFill'#9#8'AutoSize'#9#20'BorderSpacin' - +'g.Around'#2#6#7'Caption'#6#14'Tool bar style'#28'ChildSizing.LeftRightSpaci' - +'ng'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizont' - +'al'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crs' - +'HomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds' - +#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7 - +#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'Cl' - +'ientHeight'#2'E'#11'ClientWidth'#3'2'#1#13'Items.Strings'#1#6#8'Standart'#6 - +#10'Windows XP'#6#6'Native'#0#8'TabOrder'#2#4#7'TabStop'#9#0#0#6'TPanel'#6'P' - +'anel2'#22'AnchorSideLeft.Control'#7#9'TabSheet2'#19'AnchorSideLeft.Side'#7#9 - +'asrCenter'#21'AnchorSideTop.Control'#7#9'TabSheet2'#24'AnchorSideBottom.Con' - +'trol'#7#9'TabSheet2'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3'F'#1 - +#6'Height'#3#136#1#3'Top'#2#6#5'Width'#2#3#7'Anchors'#11#5'akTop'#6'akLeft'#8 - +'akBottom'#0#20'BorderSpacing.Around'#2#6#8'TabOrder'#2#5#0#0#0#0#12'TButton' - +'Panel'#12'ButtonPanel1'#4'Left'#2#6#6'Height'#2'('#3'Top'#3#185#1#5'Width'#3 - +#135#2#8'TabOrder'#2#1#11'ShowButtons'#11#7'pbClose'#6'pbHelp'#0#0#0#0 + +'t'#2#19#3'Top'#2'{'#5'Width'#2'e'#20'BorderSpacing.Around'#2#6#7'Caption'#6 + +#11'Transparent'#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'cbFlatBtn'#22'AnchorSide' + +'Left.Control'#7#9'TabSheet2'#21'AnchorSideTop.Control'#7#11'RadioGroup1'#18 + +'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'b'#5 + +'Width'#2'e'#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'Flat buttons'#8'Ta' + +'bOrder'#2#2#0#0#11'TRadioGroup'#11'RadioGroup1'#22'AnchorSideLeft.Control'#7 + +#6'Panel2'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7 + +#9'TabSheet2'#23'AnchorSideRight.Control'#7#9'TabSheet2'#20'AnchorSideRight.' + +'Side'#7#9'asrBottom'#4'Left'#3'N'#1#6'Height'#2'V'#3'Top'#2#6#5'Width'#3'9' + +#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoFill'#8#8'AutoSize'#9 + +#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'Button align'#28'ChildSizing.L' + +'eftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#28'ChildSizing.Sh' + +'rinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'cr' + +'sScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27 + +'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'E'#11'ClientWidth'#3'9' + +#1#13'Items.Strings'#1#6#4'None'#6#4'Left'#6#5'Rignt'#0#8'TabOrder'#2#3#7'Ta' + +'bStop'#9#0#0#11'TRadioGroup'#11'RadioGroup2'#22'AnchorSideLeft.Control'#7#9 + +'TabSheet2'#21'AnchorSideTop.Control'#7#9'TabSheet2'#23'AnchorSideRight.Cont' + +'rol'#7#6'Panel2'#4'Left'#2#6#6'Height'#2'V'#3'Top'#2#6#5'Width'#3'9'#1#7'An' + +'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoFill'#9#8'AutoSize'#9#20'Bo' + +'rderSpacing.Around'#2#6#7'Caption'#6#14'Tool bar style'#28'ChildSizing.Left' + +'RightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.Enlar' + +'geHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical' + +#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsSca' + +'leChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizin' + +'g.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLin' + +'e'#2#1#12'ClientHeight'#2'E'#11'ClientWidth'#3'9'#1#13'Items.Strings'#1#6#8 + +'Standart'#6#10'Windows XP'#6#6'Native'#0#8'TabOrder'#2#4#7'TabStop'#9#0#0#6 + +'TPanel'#6'Panel2'#22'AnchorSideLeft.Control'#7#9'TabSheet2'#19'AnchorSideLe' + +'ft.Side'#7#9'asrCenter'#21'AnchorSideTop.Control'#7#9'TabSheet2'#24'AnchorS' + +'ideBottom.Control'#7#9'TabSheet2'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4 + +'Left'#3'E'#1#6'Height'#3#136#1#3'Top'#2#6#5'Width'#2#3#7'Anchors'#11#5'akTo' + +'p'#6'akLeft'#8'akBottom'#0#20'BorderSpacing.Around'#2#6#8'TabOrder'#2#5#0#0 + +#0#0#12'TButtonPanel'#12'ButtonPanel1'#4'Left'#2#6#6'Height'#2'('#3'Top'#3 + +#185#1#5'Width'#3#133#2#8'TabOrder'#2#1#11'ShowButtons'#11#7'pbClose'#6'pbHe' + +'lp'#0#0#0#0 ]); diff --git a/components/rx/rxtoolbar.pas b/components/rx/rxtoolbar.pas index 567a56688..7c2240458 100644 --- a/components/rx/rxtoolbar.pas +++ b/components/rx/rxtoolbar.pas @@ -224,6 +224,7 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Customize(HelpCtx: Longint); + procedure SetBounds(aLeft, aTop, aWidth, aHeight: integer); override; published property Items:TToolbarItems read GetItems write SetItems; property ImageList:TImageList read FImageList write SetImageList; @@ -715,6 +716,7 @@ procedure TToolbarButton.SetBounds(aLeft, aTop, aWidth, aHeight: integer); var TextSize:TSize; ImgH, ImgW:integer; + tmpCanvas: TCanvas; begin if Assigned(Parent) and not (csLoading in TToolPanel(Parent).ComponentState) then begin @@ -750,19 +752,26 @@ begin if ShowCaption then begin - TextSize:=Canvas.TextExtent(Caption); - if (Layout in [blGlyphLeft, blGlyphRight]) and Assigned(FImageList) then - begin - aWidth:=ImgW + 4 + TextSize.cx; - aHeight:=Max(TextSize.cy + 8, ImgH); - end - else - begin - aWidth:=Max(8 + TextSize.cx, ImgW); - aHeight:=ImgH + TextSize.cy + 4; + tmpCanvas := GetWorkingCanvas(Canvas); + + try + TextSize:=tmpCanvas.TextExtent(Caption); + if (Layout in [blGlyphLeft, blGlyphRight]) and Assigned(FImageList) then + begin + aWidth:=ImgW + 4 + TextSize.cx; + aHeight:=Max(TextSize.cy + 8, ImgH); + end + else + begin + aWidth:=Max(8 + TextSize.cx, ImgW); + aHeight:=ImgH + TextSize.cy + 4; + end; + if aHeight < TToolPanel(Parent).BtnHeight then + aHeight:=TToolPanel(Parent).BtnHeight; + finally + if TmpCanvas<>Canvas then + FreeWorkingCanvas(tmpCanvas); end; - if aHeight < TToolPanel(Parent).BtnHeight then - aHeight:=TToolPanel(Parent).BtnHeight; end else begin @@ -1009,11 +1018,16 @@ procedure TToolPanel.ReAlignToolBtn; var i, L:integer; begin +{ for i:=0 to FToolbarItems.Count - 1 do + begin + FToolbarItems[i].FButton.Align:=alNone; + end; + } L:=BorderWidth; for i:=0 to FToolbarItems.Count - 1 do begin FToolbarItems[i].FButton.Left:=L; - FToolbarItems[i].FButton.Align:=BtnAl2Align[FButtonAllign]; +// FToolbarItems[i].FButton.Align:=BtnAl2Align[FButtonAllign]; L:=L + FToolbarItems[i].FButton.Width; end; end; @@ -1057,7 +1071,7 @@ var i, H:integer; begin - +{ if not AutoSizeCanStart then exit; if csDesigning in ComponentState then exit; @@ -1078,7 +1092,7 @@ begin end // Exclude(FControlFlags,cfAutoSizeNeeded); end - else + else } inherited DoAutoSize; end; @@ -1091,13 +1105,13 @@ begin end; procedure TToolPanel.RequestAlign; -var - i, L:integer; +{var + i, L:integer;} begin inherited RequestAlign; { if (Parent = nil) or (csDestroying in ComponentState) or (csLoading in ComponentState) or (not Parent.HandleAllocated) then exit; - if not Parent.HandleAllocated then exit; +// if not Parent.HandleAllocated then exit; ReAlignToolBtn;} end; @@ -1105,12 +1119,18 @@ procedure TToolPanel.Loaded; var i, L:integer; begin - if csDesigning in ComponentState then +{ if csDesigning in ComponentState then begin for i:=0 to FToolbarItems.Count - 1 do FToolbarItems[i].UpdateLeftAfterLoad; - end; + end; } inherited Loaded; + for i:=0 to FToolbarItems.Count - 1 do + begin + FToolbarItems[i].UpdateLeftAfterLoad; + FToolbarItems[i].FButton.Align:=BtnAl2Align[FButtonAllign]; + end; + ReAlignToolBtn; end; constructor TToolPanel.Create(AOwner: TComponent); @@ -1128,7 +1148,7 @@ begin FDefButtonHeight:=DefButtonHeight; FToolBarStyle:=tbsStandart; BorderWidth:=4; - ControlStyle:=ControlStyle - [csSetCaption]; + ControlStyle:=ControlStyle - [csSetCaption] + [csAcceptsControls]; Caption:=''; end; @@ -1154,6 +1174,15 @@ begin SetCustomizing(true); end; +procedure TToolPanel.SetBounds(aLeft, aTop, aWidth, aHeight: integer); +begin + if Assigned(FImageList) then + aHeight:=FImageList.Height+8 + BorderWidth * 2 + else + aHeight:=FDefButtonHeight + BorderWidth * 2; + inherited SetBounds(aLeft, aTop, aWidth, aHeight); +end; + { TToolbarItem } procedure TToolbarItem.SetAction(const AValue: TBasicAction); @@ -1345,8 +1374,11 @@ end; constructor TToolbarItem.Create(ACollection: TCollection); var i, W:integer; + TB:TToolPanel; begin inherited Create(ACollection); + TB:=TToolbarItems(ACollection).FToolPanel; + FButton:=TToolbarButton.Create(TToolbarItems(ACollection).FToolPanel); FButton.Align:=BtnAl2Align[TToolbarItems(ACollection).FToolPanel.ButtonAllign]; @@ -1361,15 +1393,19 @@ begin FButton.FFullPush:=true; // if not (csLoading in TToolbarItems(ACollection).FToolPanel.ComponentState) then // FButton.Align:=BtnAl2Align[TToolbarItems(ACollection).FToolPanel.ButtonAllign]; -{ if TToolbarItems(ACollection).FToolPanel.ButtonAllign = tbaLeft then + + if (not (csLoading in TB.ComponentState)) and (csDesigning in TB.ComponentState) then begin - W:=0; - for i:=0 to ACollection.Count - 1 do + if TToolbarItems(ACollection).FToolPanel.ButtonAllign = tbaLeft then begin - W:=Max(W, TToolbarItems(ACollection).Items[I].Width + TToolbarItems(ACollection).Items[I].Left); + W:=0; + for i:=0 to ACollection.Count - 1 do + begin + W:=Max(W, TToolbarItems(ACollection).Items[I].Width + TToolbarItems(ACollection).Items[I].Left); + end; + Left:=W+1; end; - Left:=W+1; - end;} + end; end; destructor TToolbarItem.Destroy;