mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-16 22:08:19 +02:00
LCL, make the grids remember the number of fixed/cols/rows after the grid has been cleared, issues #17538 and #17552
git-svn-id: trunk@28157 -
This commit is contained in:
parent
04e116067a
commit
db0a5c00b2
@ -528,6 +528,8 @@ type
|
|||||||
ValidData: boolean;
|
ValidData: boolean;
|
||||||
FixedRowCount: Integer;
|
FixedRowCount: Integer;
|
||||||
FixedColCount: Integer;
|
FixedColCount: Integer;
|
||||||
|
RowCount: Integer;
|
||||||
|
ColCount: Integer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TGridColumns }
|
{ TGridColumns }
|
||||||
@ -2019,15 +2021,23 @@ end;
|
|||||||
procedure TCustomGrid.InternalSetColCount(ACount: Integer);
|
procedure TCustomGrid.InternalSetColCount(ACount: Integer);
|
||||||
var
|
var
|
||||||
OldC: Integer;
|
OldC: Integer;
|
||||||
|
NewRowCount: Integer;
|
||||||
begin
|
begin
|
||||||
OldC := FCols.Count;
|
OldC := FCols.Count;
|
||||||
if ACount=OldC then Exit;
|
if ACount=OldC then Exit;
|
||||||
if ACount<1 then
|
if ACount<1 then
|
||||||
Clear
|
Clear
|
||||||
else begin
|
else begin
|
||||||
CheckFixedCount(ACount, RowCount, FFixedCols, FFixedRows);
|
NewRowCount := RowCount;
|
||||||
CheckCount(ACount, RowCount);
|
if (OldC=0) and FGridPropBackup.ValidData then begin
|
||||||
|
NewRowCount := FGridPropBackup.RowCount;
|
||||||
|
FFixedRows := Min(FGridPropBackup.FixedRowCount, NewRowCount);
|
||||||
|
FFixedCols := Min(FGridPropBackup.FixedColCount, ACount);
|
||||||
|
end;
|
||||||
|
CheckFixedCount(ACount, NewRowCount, FFixedCols, FFixedRows);
|
||||||
|
CheckCount(ACount, NewRowCount);
|
||||||
AdjustCount(True, OldC, ACount);
|
AdjustCount(True, OldC, ACount);
|
||||||
|
FGridPropBackup.ValidData := false;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2520,7 +2530,7 @@ procedure TCustomGrid.AdjustCount(IsColumn: Boolean; OldValue, newValue: Integer
|
|||||||
Lst.Count:=aCount;
|
Lst.Count:=aCount;
|
||||||
end;
|
end;
|
||||||
var
|
var
|
||||||
OldCount: integer;
|
OldCount, NewCount: integer;
|
||||||
begin
|
begin
|
||||||
if IsColumn then begin
|
if IsColumn then begin
|
||||||
AddDel(FCols, NewValue);
|
AddDel(FCols, NewValue);
|
||||||
@ -2536,10 +2546,15 @@ begin
|
|||||||
if (OldValue=0)and(NewValue>=0) then begin
|
if (OldValue=0)and(NewValue>=0) then begin
|
||||||
FTopLeft.X:=FFixedCols;
|
FTopLeft.X:=FFixedCols;
|
||||||
if RowCount=0 then begin
|
if RowCount=0 then begin
|
||||||
|
if FGridPropBackup.ValidData then begin
|
||||||
|
NewCount := FGridPropBackup.RowCount;
|
||||||
|
FFixedRows := Min(FGridPropBackup.FixedRowCount, NewCount);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
NewCount := 1;
|
||||||
FTopLeft.Y:=FFixedRows;
|
FTopLeft.Y:=FFixedRows;
|
||||||
//DebugLn('TCustomGrid.AdjustCount A ',DbgSName(Self),' FTopLeft=',dbgs(FTopLeft));
|
AddDel(FRows, NewCount);
|
||||||
AddDel(FRows, 1);
|
FGCache.AccumHeight.Count:=NewCount;
|
||||||
FGCache.AccumHeight.Count:=1;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
SizeChanged(OldValue, OldCount);
|
SizeChanged(OldValue, OldCount);
|
||||||
@ -2559,10 +2574,17 @@ begin
|
|||||||
FTopleft.Y:=FFixedRows;
|
FTopleft.Y:=FFixedRows;
|
||||||
//DebugLn('TCustomGrid.AdjustCount B ',DbgSName(Self),' FTopLeft=',dbgs(FTopLeft));
|
//DebugLn('TCustomGrid.AdjustCount B ',DbgSName(Self),' FTopLeft=',dbgs(FTopLeft));
|
||||||
if FCols.Count=0 then begin
|
if FCols.Count=0 then begin
|
||||||
FFixedCols:=0;
|
if FGridPropBackup.ValidData then begin
|
||||||
FTopLeft.X:=0;
|
NewCount := FGridPropBackup.ColCount;
|
||||||
AddDel(FCols, 1);
|
FFixedCols := Min(FGridPropBackup.FixedColCount, NewCount);
|
||||||
FGCache.AccumWidth.Count:=1;
|
end
|
||||||
|
else begin
|
||||||
|
NewCount := 1;
|
||||||
|
FFixedCols := 0;
|
||||||
|
end;
|
||||||
|
FTopLeft.X:=FFixedCols;
|
||||||
|
AddDel(FCols, NewCount);
|
||||||
|
FGCache.AccumWidth.Count:=NewCount;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
SizeChanged(OldCount, OldValue);
|
SizeChanged(OldCount, OldValue);
|
||||||
@ -2635,32 +2657,33 @@ end;
|
|||||||
|
|
||||||
procedure TCustomGrid.SetRowCount(AValue: Integer);
|
procedure TCustomGrid.SetRowCount(AValue: Integer);
|
||||||
var
|
var
|
||||||
OldR: Integer;
|
OldR, OldC, NewColCount: Integer;
|
||||||
begin
|
begin
|
||||||
OldR := FRows.Count;
|
OldR := FRows.Count;
|
||||||
if AValue=OldR then Exit;
|
if AValue<>OldR then begin
|
||||||
if AValue<1 then
|
if AValue>=1 then begin
|
||||||
clear
|
NewColCount := ColCount;
|
||||||
else begin
|
if (OldR=0) and FGridPropBackup.ValidData then begin
|
||||||
if (OldR=0) and Columns.Enabled then begin
|
NewColCount := FGridPropBackup.ColCount;
|
||||||
// there are custom columns, setup first enough columns
|
FFixedCols := Min(FGridPropBackup.FixedColCount, NewColCount);
|
||||||
if FGridPropBackup.ValidData then begin
|
FFixedRows := Min(FGridPropBackup.FixedRowCount, AValue);
|
||||||
// Take in count previus fixed columns too.
|
// ignore backedup value of rowcount because
|
||||||
// This value will be used in ColumnsChanged to
|
// finally rowcount will be AValue
|
||||||
// get the right number of columns to setup
|
FGridPropBackup.RowCount := AValue;
|
||||||
//
|
|
||||||
FFixedCols := FGridPropBackup.FixedColCount;
|
|
||||||
FGridPropBackup.ValidData:=False;
|
|
||||||
end;
|
end;
|
||||||
|
if Columns.Enabled then begin
|
||||||
// setup custom columns
|
// setup custom columns
|
||||||
Self.ColumnsChanged(nil);
|
Self.ColumnsChanged(nil);
|
||||||
|
FGridPropBackup.ValidData := false;
|
||||||
// still need to adjust rowcount?
|
// still need to adjust rowcount?
|
||||||
if AValue=FRows.Count then
|
if AValue=FRows.Count then
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
CheckFixedCount(ColCount, AValue, FFixedCols, FFixedRows);
|
CheckFixedCount(NewColCount, AValue, FFixedCols, FFixedRows);
|
||||||
CheckCount(ColCount, AValue);
|
CheckCount(NewColCount, AValue);
|
||||||
AdjustCount(False, OldR, AValue);
|
AdjustCount(False, OldR, AValue);
|
||||||
|
end else
|
||||||
|
Clear;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4501,7 +4524,7 @@ begin
|
|||||||
if (NewCol>=0) and (NewRow>=0) and ((NewCol <> Col) or (NewRow <> Row)) then
|
if (NewCol>=0) and (NewRow>=0) and ((NewCol <> Col) or (NewRow <> Row)) then
|
||||||
begin
|
begin
|
||||||
CheckTopleft(NewCol, NewRow , NewCol<>Col, NewRow<>Row);
|
CheckTopleft(NewCol, NewRow , NewCol<>Col, NewRow<>Row);
|
||||||
if FixEditor then
|
if FixEditor and (aNewColCount<>FFixedCols) and (aNewRowCount<>FFixedRows) then
|
||||||
MoveNextSelectable(false, NewCol, NewRow);
|
MoveNextSelectable(false, NewCol, NewRow);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -8116,6 +8139,8 @@ begin
|
|||||||
FGridPropBackup.ValidData := True;
|
FGridPropBackup.ValidData := True;
|
||||||
FGridPropBackup.FixedRowCount := FFixedRows;
|
FGridPropBackup.FixedRowCount := FFixedRows;
|
||||||
FGridPropBackup.FixedColCount := FFixedCols;
|
FGridPropBackup.FixedColCount := FFixedCols;
|
||||||
|
FGridPropBackup.ColCount := ColCount;
|
||||||
|
FGridPropBackup.RowCount := RowCount;
|
||||||
|
|
||||||
// clear structure
|
// clear structure
|
||||||
OldR:=RowCount;
|
OldR:=RowCount;
|
||||||
|
Loading…
Reference in New Issue
Block a user