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;