diff --git a/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lpi b/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lpi index 65f4d073b..b3934251a 100644 --- a/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lpi +++ b/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lpi @@ -10,9 +10,6 @@ - - - @@ -44,6 +41,7 @@ + diff --git a/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lps b/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lps index 8c125732d..e7fda2701 100644 --- a/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lps +++ b/components/rx/trunk/demos/rxdbgrid/MergeCell/project1.lps @@ -11,7 +11,7 @@ - + @@ -21,20 +21,19 @@ - - + + - - - + + - + @@ -42,17 +41,18 @@ - - + + + - - + + @@ -148,125 +148,134 @@ - - + + - - + + - - + + - - + - - + + - - + + - - + + - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + diff --git a/components/rx/trunk/demos/rxdbgrid/MergeCell/unit1.pas b/components/rx/trunk/demos/rxdbgrid/MergeCell/unit1.pas index 92ddc5c90..bacf9f951 100644 --- a/components/rx/trunk/demos/rxdbgrid/MergeCell/unit1.pas +++ b/components/rx/trunk/demos/rxdbgrid/MergeCell/unit1.pas @@ -50,9 +50,11 @@ var i: Integer; begin rxData.Open; + rxData.DisableControls; for i:=1 to 30 do rxData.AppendRecord([i, Date - i, 'Line '+IntToStr(i)]); rxData.First; + rxData.EnableControls; RxDBGrid1.OnMergeCells:=@RxDBGridMergeCellsEvent; end; diff --git a/components/rx/trunk/rxdb/rxdbgrid.pas b/components/rx/trunk/rxdb/rxdbgrid.pas index 770bb135c..1a9ac61e7 100644 --- a/components/rx/trunk/rxdb/rxdbgrid.pas +++ b/components/rx/trunk/rxdb/rxdbgrid.pas @@ -920,6 +920,11 @@ type procedure CalcCellExtent(ACol, ARow: Integer; var ARect: TRect); function IsMerged(ACol{, ARow}: Integer): Boolean; overload; function IsMerged(ACol{, ARow}: Integer; out ALeft, {ATop, }ARight{, ABottom}: Integer): Boolean; overload; + + function GetEditMask(aCol, aRow: Longint): string; override; + function GetEditText(aCol, aRow: Longint): string; override; + function GetDefaultEditor(Column: Integer): TWinControl; override; + procedure PrepareCanvas(aCol, aRow: Integer; AState: TGridDrawState); override; property Editor; @@ -5172,9 +5177,13 @@ end; procedure TRxDBGrid.SetEditText(ACol, ARow: longint; const Value: string); var C: TRxColumn; - j: integer; + j, L, R: integer; S: string; begin + if (rdgColSpanning in OptionsRx) then + if IsMerged(aCol, L, R) then + aCol:=L; + C := ColumnFromGridColumn(aCol) as TRxColumn; S := Value; if Assigned(C) and (C.KeyList.Count > 0) and (C.PickList.Count > 0) then @@ -6290,6 +6299,36 @@ begin dec(FMergeLock); end; +function TRxDBGrid.GetEditMask(aCol, aRow: Longint): string; +var + L, R: Integer; +begin + if (rdgColSpanning in OptionsRx) then + if IsMerged(aCol, L, R) then + aCol:=L; + Result:=inherited GetEditMask(aCol, aRow); +end; + +function TRxDBGrid.GetEditText(aCol, aRow: Longint): string; +var + R, L: Integer; +begin + if (rdgColSpanning in OptionsRx) then + if IsMerged(aCol, L, R) then + aCol:=L; + Result:=inherited GetEditText(aCol, aRow); +end; + +function TRxDBGrid.GetDefaultEditor(Column: Integer): TWinControl; +var + L, R: Integer; +begin + if (rdgColSpanning in OptionsRx) then + if IsMerged(Column, L, R) then + Column:=L; + Result:=inherited GetDefaultEditor(Column); +end; + procedure TRxDBGrid.PrepareCanvas(aCol, aRow: Integer; AState: TGridDrawState); var L, R, RR: Integer;