diff --git a/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi b/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi index 8f2b20cd1..a2a74bb38 100644 --- a/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi +++ b/components/rx/trunk/Demos/RxDBGrid/RxDBGridDemo.lpi @@ -54,7 +54,7 @@ - + @@ -62,7 +62,7 @@ - + @@ -71,12 +71,11 @@ - - - - + + + @@ -103,14 +102,15 @@ + - - + + - - + + @@ -505,8 +505,8 @@ - - + + @@ -515,8 +515,8 @@ - - + + @@ -685,9 +685,9 @@ - - - + + + @@ -803,8 +803,8 @@ - - + + @@ -836,124 +836,135 @@ + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + + + + + @@ -982,29 +993,6 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm b/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm index 3193ef291..cf338a775 100644 --- a/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm +++ b/components/rx/trunk/Demos/RxDBGrid/rxdbgridmainunit.lfm @@ -27,6 +27,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Title.ShowHint = True Width = 50 FieldName = 'DEVELOPER_ID' + Constraints.MinWidth = 50 + Constraints.MaxWidth = 0 ImageList = ImageList1 KeyList.Strings = ( '1=0' @@ -51,6 +53,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Footer.Alignment = taRightJustify Footer.DisplayFormat = 'Count: %d' Footer.ValueType = fvtCount + Constraints.MinWidth = 0 + Constraints.MaxWidth = 0 Filter.Font.Style = [fsItalic] Filter.DropDownRows = 0 Filter.Color = clLime @@ -67,6 +71,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Title.ShowHint = True Width = 136 FieldName = 'Developer' + Constraints.MinWidth = 10 + Constraints.MaxWidth = 0 Filter.Font.Style = [fsItalic] Filter.DropDownRows = 0 Filter.Color = clLime @@ -83,6 +89,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Title.ShowHint = True Width = 110 FieldName = 'NAME' + Constraints.MinWidth = 0 + Constraints.MaxWidth = 0 Filter.Font.Style = [fsItalic] Filter.DropDownRows = 0 Filter.Color = clLime @@ -105,6 +113,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Footer.DisplayFormat = '#,##0.00' Footer.FieldName = 'PRICE' Footer.ValueType = fvtSum + Constraints.MinWidth = 0 + Constraints.MaxWidth = 0 Filter.Font.Style = [fsItalic] Filter.DropDownRows = 0 Filter.Color = clLime @@ -134,6 +144,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Title.ShowHint = True Width = 136 FieldName = 'Date_Present' + Constraints.MinWidth = 0 + Constraints.MaxWidth = 0 Filter.Font.Style = [fsItalic] Filter.DropDownRows = 0 Filter.EmptyValue = '(Нет)' @@ -149,6 +161,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Title.ShowHint = True Width = 141 FieldName = 'DEVELOPER_ID' + Constraints.MinWidth = 0 + Constraints.MaxWidth = 0 Filter.Font.Style = [fsItalic] Filter.DropDownRows = 0 Filter.EmptyValue = '(Нет)' @@ -167,6 +181,8 @@ object RxDBGridMainForm: TRxDBGridMainForm Title.Caption = 'Rait' Title.Orientation = toHorizontal FieldName = 'RAIT' + Constraints.MinWidth = 0 + Constraints.MaxWidth = 0 Filter.Font.Style = [fsItalic] Filter.DropDownRows = 0 Filter.EmptyValue = '(Нет)' diff --git a/components/rx/trunk/languages/rxdconst.ru.po b/components/rx/trunk/languages/rxdconst.ru.po index c08cd5aba..a81cf1df5 100644 --- a/components/rx/trunk/languages/rxdconst.ru.po +++ b/components/rx/trunk/languages/rxdconst.ru.po @@ -227,7 +227,7 @@ msgstr "Копировать только метаданные..." #: rxdconst.srxdbgridcopycellvalue msgid "Copy cell value" -msgstr "" +msgstr "Копировать значение ячейки" #: rxdconst.srxdbgridemptifilter msgid "(Empty)" diff --git a/components/rx/trunk/rxdbgrid.pas b/components/rx/trunk/rxdbgrid.pas index 5c8ec0047..342e1b093 100644 --- a/components/rx/trunk/rxdbgrid.pas +++ b/components/rx/trunk/rxdbgrid.pas @@ -155,6 +155,24 @@ type property Items[Index: integer]: TRxDBGridKeyStroke read GetItem write SetItem; default; end; + { TRxDBGridCollumnConstraint } + + TRxDBGridCollumnConstraints = class(TPersistent) + private + FMaxWidth: integer; + FMinWidth: integer; + FOwner: TPersistent; + procedure SetMaxWidth(AValue: integer); + procedure SetMinWidth(AValue: integer); + protected + procedure AssignTo(Dest: TPersistent); override; + public + constructor Create(AOwner: TPersistent); + published + property MinWidth:integer read FMinWidth write SetMinWidth; + property MaxWidth:integer read FMaxWidth write SetMaxWidth; + end; + { TRxDBGridFooterOptions } TRxDBGridFooterOptions = class(TPersistent) @@ -387,6 +405,7 @@ type FDirectInput: boolean; FEditButtons: TRxColumnEditButtons; FFooter: TRxColumnFooter; + FConstraints:TRxDBGridCollumnConstraints; FFilter: TRxColumnFilter; FImageList: TImageList; FKeyList: TStrings; @@ -395,8 +414,10 @@ type FSortOrder: TSortMarker; FSortPosition: integer; FWordWrap: boolean; + function GetConstraints: TRxDBGridCollumnConstraints; function GetFooter: TRxColumnFooter; function GetKeyList: TStrings; + procedure SetConstraints(AValue: TRxDBGridCollumnConstraints); procedure SetEditButtons(AValue: TRxColumnEditButtons); procedure SetFilter(const AValue: TRxColumnFilter); procedure SetFooter(const AValue: TRxColumnFooter); @@ -406,6 +427,7 @@ type procedure SetWordWrap(AValue: boolean); protected function CreateTitle: TGridColumnTitle; override; + procedure ColumnChanged; override; public constructor Create(ACollection: TCollection); override; destructor Destroy; override; @@ -414,6 +436,7 @@ type property SortPosition: integer read FSortPosition; published property Footer: TRxColumnFooter read GetFooter write SetFooter; + property Constraints:TRxDBGridCollumnConstraints read GetConstraints write SetConstraints; property ImageList: TImageList read FImageList write SetImageList; property KeyList: TStrings read GetKeyList write SetKeyList; property NotInKeyListIndex: integer read FNotInKeyListIndex @@ -726,6 +749,7 @@ type property FooterRowCount: integer read GetFooterRowCount write SetFooterRowCount default 0; deprecated; property OnFiltred: TNotifyEvent read FOnFiltred write FOnFiltred; +// property Constraints:TRxDBGridCollumnConstraints read GetConstraints write SetConstraints; //from DBGrid property Align; @@ -912,6 +936,37 @@ type procedure EditingDone; override; end; +{ TRxDBGridCollumnConstraint } + +procedure TRxDBGridCollumnConstraints.SetMaxWidth(AValue: integer); +begin + if FMaxWidth=AValue then Exit; + FMaxWidth:=AValue; +end; + +procedure TRxDBGridCollumnConstraints.SetMinWidth(AValue: integer); +begin + if FMinWidth=AValue then Exit; + FMinWidth:=AValue; +end; + +procedure TRxDBGridCollumnConstraints.AssignTo(Dest: TPersistent); +begin + if Dest is TRxDBGridCollumnConstraints then + begin + TRxDBGridCollumnConstraints(Dest).FMinWidth:=FMinWidth; + TRxDBGridCollumnConstraints(Dest).FMaxWidth:=FMaxWidth; + end + else + inherited AssignTo(Dest); +end; + +constructor TRxDBGridCollumnConstraints.Create(AOwner: TPersistent); +begin + inherited Create; + FOwner:=AOwner; +end; + { TRxFilterItems } function TRxFilterItems.AcceptRecord: boolean; @@ -4641,6 +4696,11 @@ begin Result := FKeyList; end; +procedure TRxColumn.SetConstraints(AValue: TRxDBGridCollumnConstraints); +begin + FConstraints.Assign(AValue); +end; + procedure TRxColumn.SetEditButtons(AValue: TRxColumnEditButtons); begin FEditButtons.Assign(AValue); @@ -4656,6 +4716,11 @@ begin Result := FFooter; end; +function TRxColumn.GetConstraints: TRxDBGridCollumnConstraints; +begin + Result:=FConstraints; +end; + procedure TRxColumn.SetFooter(const AValue: TRxColumnFooter); begin FFooter.Assign(AValue); @@ -4701,10 +4766,18 @@ begin Result := TRxColumnTitle.Create(Self); end; +procedure TRxColumn.ColumnChanged; +begin + inherited ColumnChanged; + if Assigned(FConstraints) and (FConstraints.MinWidth <> 0) and (FConstraints.MinWidth > Width) then + Width:=FConstraints.MinWidth; +end; + constructor TRxColumn.Create(ACollection: TCollection); begin inherited Create(ACollection); FNotInKeyListIndex := -1; + FConstraints:=TRxDBGridCollumnConstraints.Create(Self); FFooter := TRxColumnFooter.Create(Self); FFilter := TRxColumnFilter.Create(Self); FDirectInput := true; @@ -4721,6 +4794,7 @@ begin end; FreeAndNil(FFooter); FreeAndNil(FFilter); + FreeAndNil(FConstraints); inherited Destroy; end;