diff --git a/components/rx/trunk/demos/RxDBVerticalGrid/project1.lps b/components/rx/trunk/demos/RxDBVerticalGrid/project1.lps
index 09b4f9cc2..e177b59db 100644
--- a/components/rx/trunk/demos/RxDBVerticalGrid/project1.lps
+++ b/components/rx/trunk/demos/RxDBVerticalGrid/project1.lps
@@ -9,7 +9,7 @@
-
+
@@ -19,9 +19,9 @@
-
-
-
+
+
+
@@ -34,20 +34,19 @@
-
+
-
+
-
-
+
+
-
@@ -91,11 +90,10 @@
-
+
-
@@ -176,12 +174,12 @@
-
-
-
-
+
+
+
+
-
+
@@ -507,11 +505,10 @@
-
+
-
@@ -554,123 +551,127 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
diff --git a/components/rx/trunk/demos/RxDBVerticalGrid/unit1.lfm b/components/rx/trunk/demos/RxDBVerticalGrid/unit1.lfm
index 97f8a8b87..e998cd2e3 100644
--- a/components/rx/trunk/demos/RxDBVerticalGrid/unit1.lfm
+++ b/components/rx/trunk/demos/RxDBVerticalGrid/unit1.lfm
@@ -11,8 +11,8 @@ object Form1: TForm1
LCLVersion = '2.1.0.0'
object RxDBVerticalGrid1: TRxDBVerticalGrid
Left = 899
- Height = 646
- Top = 103
+ Height = 565
+ Top = 184
Width = 307
Align = alClient
Color = clWindow
@@ -172,8 +172,8 @@ object Form1: TForm1
end
object RxDBGrid1: TRxDBGrid
Left = 0
- Height = 646
- Top = 103
+ Height = 565
+ Top = 184
Width = 894
ColumnDefValues.BlobText = '(данные)'
TitleButtons = False
@@ -378,12 +378,12 @@ object Form1: TForm1
end
object Panel1: TPanel
Left = 0
- Height = 103
+ Height = 184
Top = 0
Width = 1206
Align = alTop
AutoSize = True
- ClientHeight = 103
+ ClientHeight = 184
ClientWidth = 1206
TabOrder = 2
object Button1: TButton
@@ -446,35 +446,69 @@ object Form1: TForm1
object CheckBox2: TCheckBox
AnchorSideLeft.Control = RadioGroup1
AnchorSideLeft.Side = asrBottom
- AnchorSideTop.Control = CheckBox1
- AnchorSideTop.Side = asrBottom
+ AnchorSideTop.Control = Panel1
Left = 254
Height = 23
- Top = 36
+ Top = 7
Width = 114
BorderSpacing.Around = 6
Caption = 'Show images'
OnChange = CheckBox1Change
TabOrder = 3
end
- object CheckBox1: TCheckBox
- AnchorSideLeft.Control = RadioGroup1
+ object CheckGroup1: TCheckGroup
+ AnchorSideLeft.Control = CheckBox2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
- Left = 254
- Height = 23
+ Left = 374
+ Height = 170
Top = 7
- Width = 112
+ Width = 559
+ AutoFill = True
+ AutoSize = True
BorderSpacing.Around = 6
- Caption = 'Show header'
- OnChange = CheckBox1Change
+ Caption = 'Options'
+ ChildSizing.LeftRightSpacing = 6
+ ChildSizing.TopBottomSpacing = 6
+ ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
+ ChildSizing.EnlargeVertical = crsHomogenousChildResize
+ ChildSizing.ShrinkHorizontal = crsScaleChilds
+ ChildSizing.ShrinkVertical = crsScaleChilds
+ ChildSizing.Layout = cclLeftToRightThenTopToBottom
+ ChildSizing.ControlsPerLine = 3
+ ClientHeight = 150
+ ClientWidth = 557
+ Columns = 3
+ Items.Strings = (
+ 'rxvgFixedVertLine'
+ 'rxvgFixedHorzLine'
+ 'rxvgVertLine'
+ 'rxvgHorzLine'
+ 'rxvgRowSelect'
+ 'rxvgAlwaysShowEditor'
+ 'rxvgThumbTracking'
+ 'rxvgDblClickAutoSize'
+ 'rxvgSmoothScroll'
+ 'rxvgHeaderHotTracking'
+ 'rxvgHeaderPushedLook'
+ 'rxvgFixedColSizing'
+ 'rxvgCellHints'
+ 'rxvgTruncCellHints'
+ 'rxvgCellEllipsis'
+ 'rxvgRowHighlight'
+ 'rxvgColumnTitle'
+ )
+ OnItemClick = CheckGroup1ItemClick
TabOrder = 4
+ Data = {
+ 110000000202020202020202020202020202020202
+ }
end
end
object Splitter1: TSplitter
Left = 894
- Height = 646
- Top = 103
+ Height = 565
+ Top = 184
Width = 5
end
object dsData: TDataSource
diff --git a/components/rx/trunk/demos/RxDBVerticalGrid/unit1.pas b/components/rx/trunk/demos/RxDBVerticalGrid/unit1.pas
index 9a6747923..ef10b2b5c 100644
--- a/components/rx/trunk/demos/RxDBVerticalGrid/unit1.pas
+++ b/components/rx/trunk/demos/RxDBVerticalGrid/unit1.pas
@@ -16,8 +16,8 @@ type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
- CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
+ CheckGroup1: TCheckGroup;
dsData: TDataSource;
ImageList1: TImageList;
MenuItem1: TMenuItem;
@@ -56,6 +56,7 @@ type
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure CheckBox1Change(Sender: TObject);
+ procedure CheckGroup1ItemClick(Sender: TObject; Index: integer);
procedure FormCreate(Sender: TObject);
private
procedure FillDataBase;
@@ -76,8 +77,28 @@ uses LazUTF8, LazFileUtils;
procedure TForm1.FormCreate(Sender: TObject);
begin
FillDataBase;
- CheckBox1.Checked:=rxvgColumnTitle in RxDBVerticalGrid1.Options;
CheckBox2.Checked:=RxDBVerticalGrid1.Rows[11].ShowBlobImagesAndMemo;
+
+ CheckGroup1.OnItemClick:=nil;
+ CheckGroup1.Checked[0]:=rxvgFixedVertLine in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[1]:=rxvgFixedHorzLine in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[2]:=rxvgVertLine in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[3]:=rxvgHorzLine in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[4]:=rxvgRowSelect in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[5]:=rxvgAlwaysShowEditor in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[6]:=rxvgThumbTracking in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[7]:=rxvgDblClickAutoSize in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[8]:=rxvgSmoothScroll in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[9]:=rxvgHeaderHotTracking in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[10]:=rxvgHeaderPushedLook in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[11]:=rxvgFixedColSizing in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[12]:=rxvgCellHints in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[13]:=rxvgTruncCellHints in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[14]:=rxvgCellEllipsis in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[15]:=rxvgRowHighlight in RxDBVerticalGrid1.Options;
+ CheckGroup1.Checked[16]:=rxvgColumnTitle in RxDBVerticalGrid1.Options;
+
+ CheckGroup1.OnItemClick:=@CheckGroup1ItemClick;
end;
procedure TForm1.Button1Click(Sender: TObject);
@@ -94,12 +115,6 @@ end;
procedure TForm1.CheckBox1Change(Sender: TObject);
begin
- if CheckBox1.Checked then
- RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgColumnTitle]
- else
- RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgColumnTitle]
- ;
-
case RadioGroup1.ItemIndex of
0:RxDBVerticalGrid1.Rows[11].Alignment:=taLeftJustify;
1:RxDBVerticalGrid1.Rows[11].Alignment:=taRightJustify;
@@ -107,6 +122,95 @@ begin
end;
RxDBVerticalGrid1.Rows[11].ShowBlobImagesAndMemo:=CheckBox2.Checked;
RxDBVerticalGrid1.Rows[12].ShowBlobImagesAndMemo:=CheckBox2.Checked;
+end;
+
+procedure TForm1.CheckGroup1ItemClick(Sender: TObject; Index: integer);
+begin
+ if CheckGroup1.Checked[0] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgFixedVertLine]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgFixedVertLine]
+ ;
+
+ if CheckGroup1.Checked[1] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgFixedHorzLine]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgFixedHorzLine];
+
+ if CheckGroup1.Checked[2] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgVertLine]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgVertLine];
+
+ if CheckGroup1.Checked[3] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgHorzLine]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgHorzLine];
+
+ if CheckGroup1.Checked[4] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgRowSelect]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgRowSelect];
+
+ if CheckGroup1.Checked[5] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgAlwaysShowEditor]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgAlwaysShowEditor];
+
+ if CheckGroup1.Checked[6] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgThumbTracking]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgThumbTracking];
+
+ if CheckGroup1.Checked[7] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgDblClickAutoSize]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgDblClickAutoSize];
+
+ if CheckGroup1.Checked[8] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgSmoothScroll]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgSmoothScroll];
+
+ if CheckGroup1.Checked[9] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgHeaderHotTracking]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgHeaderHotTracking];
+
+ if CheckGroup1.Checked[10] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgHeaderPushedLook]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgHeaderPushedLook];
+
+ if CheckGroup1.Checked[11] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgFixedColSizing]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgFixedColSizing];
+
+ if CheckGroup1.Checked[12] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgCellHints]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgCellHints];
+
+ if CheckGroup1.Checked[13] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgTruncCellHints]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgTruncCellHints];
+
+ if CheckGroup1.Checked[14] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgCellEllipsis]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgCellEllipsis];
+
+ if CheckGroup1.Checked[15] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgRowHighlight]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgRowHighlight];
+
+ if CheckGroup1.Checked[16] then
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options + [rxvgColumnTitle]
+ else
+ RxDBVerticalGrid1.Options:=RxDBVerticalGrid1.Options - [rxvgColumnTitle];
end;
diff --git a/components/rx/trunk/rxdb/rxdbverticalgrid.pas b/components/rx/trunk/rxdb/rxdbverticalgrid.pas
index 0cacfe222..4ad709bdf 100644
--- a/components/rx/trunk/rxdb/rxdbverticalgrid.pas
+++ b/components/rx/trunk/rxdb/rxdbverticalgrid.pas
@@ -39,7 +39,42 @@ uses
Classes, SysUtils, Types, Grids, Graphics, Controls, DB, Menus;
type
- TRxDBVerticalGridOption = (rxvgColumnTitle);
+ TRxDBVerticalGridOption = (
+ rxvgFixedVertLine, //goFixedVertLine
+ rxvgFixedHorzLine, //goFixedHorzLine
+ rxvgVertLine, //goVertLine
+ rxvgHorzLine, //goHorzLine
+ //goRangeSelect,
+ //goDrawFocusSelected,
+ //goRowSizing,
+ //goColSizing,
+ //goRowMoving,
+ //goColMoving,
+ rxvgEditing, //goEditing,
+ //goAutoAddRows,
+ //goTabs,
+ rxvgRowSelect, //goRowSelect,
+ rxvgAlwaysShowEditor, //goAlwaysShowEditor,
+ rxvgThumbTracking, //goThumbTracking
+ // Additional Options
+ //goColSpanning, // Enable cellextent calcs
+ //goRelaxedRowSelect, // User can see focused cell on goRowSelect
+ rxvgDblClickAutoSize, //goDblClickAutoSize, // dblclicking columns borders (on hdrs) resize col.
+ rxvgSmoothScroll, //goSmoothScroll, // Switch scrolling mode (pixel scroll is by default)
+ //goFixedRowNumbering, // Ya
+ //goScrollKeepVisible, // keeps focused cell visible while scrolling
+ rxvgHeaderHotTracking, //goHeaderHotTracking, // Header cells change look when mouse is over them
+ rxvgHeaderPushedLook, //goHeaderPushedLook, // Header cells looks pushed when clicked
+ //goSelectionActive, // Setting grid.Selection moves also cell cursor
+ rxvgFixedColSizing, //goFixedColSizing, // Allow to resize fixed columns
+ //goDontScrollPartCell, // clicking partially visible cells will not scroll
+ rxvgCellHints, //goCellHints, // show individual cell hints
+ rxvgTruncCellHints, //goTruncCellHints, // show cell hints if cell text is too long
+ rxvgCellEllipsis, //goCellEllipsis, // show "..." if cell text is too long
+ //goAutoAddRowsSkipContentCheck,//BB Also add a row (if AutoAddRows in Options) if last row is empty
+ rxvgRowHighlight, //goRowHighlight // Highlight the current Row
+ rxvgColumnTitle
+ );
TRxDBVerticalGridOptions = set of TRxDBVerticalGridOption;
TRxDBVerticalGridRowStyle = (rxvrData, rxvrStaticText);
@@ -1616,22 +1651,116 @@ end;
procedure TRxCustomDBVerticalGrid.SetOptions(AValue: TRxDBVerticalGridOptions);
var
O: TGridOptions;
+ FOldOpt: TRxDBVerticalGridOptions;
begin
if FOptions=AValue then Exit;
+ FOldOpt:=FOptions;
FOptions:=AValue;
-// O:=inherited Options;
- if rxvgColumnTitle in FOptions then
+ O:=inherited Options;
+ if rxvgFixedVertLine in FOptions then
+ O:=O + [goFixedVertLine]
+ else
+ O:=O - [goFixedVertLine];
+
+ if rxvgFixedHorzLine in FOptions then
+ O:=O + [goFixedHorzLine]
+ else
+ O:=O - [goFixedHorzLine];
+
+ if rxvgVertLine in FOptions then
+ O:=O + [goVertLine]
+ else
+ O:=O - [goVertLine];
+
+ if rxvgHorzLine in FOptions then
+ O:=O + [goHorzLine]
+ else
+ O:=O - [goHorzLine];
+
+ //rxvgEditing, //goEditing,
+
+ if rxvgRowSelect in FOptions then
+ O:=O + [goRowSelect]
+ else
+ O:=O - [goRowSelect];
+
+ if rxvgAlwaysShowEditor in FOptions then
+ O:=O + [goAlwaysShowEditor]
+ else
+ O:=O - [goAlwaysShowEditor];
+
+ if rxvgThumbTracking in FOptions then
+ O:=O + [goThumbTracking]
+ else
+ O:=O - [goThumbTracking];
+
+ if rxvgDblClickAutoSize in FOptions then
+ O:=O + [goDblClickAutoSize]
+ else
+ O:=O - [goDblClickAutoSize];
+
+ if rxvgSmoothScroll in FOptions then
+ O:=O + [goSmoothScroll]
+ else
+ O:=O - [goSmoothScroll];
+
+ if rxvgHeaderHotTracking in FOptions then
+ O:=O + [goHeaderHotTracking]
+ else
+ O:=O - [goHeaderHotTracking];
+
+ if rxvgHeaderPushedLook in FOptions then
+ O:=O + [goHeaderPushedLook]
+ else
+ O:=O - [goHeaderPushedLook];
+
+ if rxvgFixedColSizing in FOptions then
+ O:=O + [goFixedColSizing]
+ else
+ O:=O - [goFixedColSizing];
+
+ if rxvgFixedColSizing in FOptions then
+ O:=O + [goFixedColSizing]
+ else
+ O:=O - [goFixedColSizing];
+
+ if rxvgCellHints in FOptions then
+ O:=O + [goCellHints]
+ else
+ O:=O - [goCellHints];
+
+ if rxvgTruncCellHints in FOptions then
+ O:=O + [goTruncCellHints]
+ else
+ O:=O - [goTruncCellHints];
+
+ if rxvgCellEllipsis in FOptions then
+ O:=O + [goCellEllipsis]
+ else
+ O:=O - [goCellEllipsis];
+
+ if rxvgRowHighlight in FOptions then
+ O:=O + [goRowHighlight]
+ else
+ O:=O - [goRowHighlight];
+ (*
+rxvgRowHighlight, //goRowHighlight // Highlight the current Row
+*)
+ if (rxvgColumnTitle in FOptions) and (not (rxvgColumnTitle in FOldOpt)) then
begin
RowCount:=RowCount + 1;
FixedRows:=1;
end
else
+ if (not(rxvgColumnTitle in FOptions)) and (rxvgColumnTitle in FOldOpt) then
begin
RowCount:=RowCount - 1;
FixedRows:=0;
end;
+ inherited Options := O;
+
UpdateRowsHight;
end;