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;