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;