You've already forked lazarus-ccr
fpspreadsheet: Cleanup fpsworksheetgrid
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6539 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -61,29 +61,6 @@ type
|
|||||||
property JoinStyle default pjsMiter;
|
property JoinStyle default pjsMiter;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
(*
|
|
||||||
TsSingleLineStringCellEditor = class(TEdit)
|
|
||||||
private
|
|
||||||
FGrid: TsCustomWorksheetGrid;
|
|
||||||
FCol, FRow:Integer;
|
|
||||||
// procedure WMKillFocus(var AMessage: TLMKillFocus); message LM_KILLFOCUS;
|
|
||||||
protected
|
|
||||||
procedure Change; override;
|
|
||||||
procedure KeyDown(var AKey: Word; AShift : TShiftState); override;
|
|
||||||
procedure msg_GetGrid(var AMsg: TGridMessage); message GM_GETGRID;
|
|
||||||
procedure msg_GetValue(var AMsg: TGridMessage); message GM_GETVALUE;
|
|
||||||
procedure msg_SelectAll(var AMsg: TGridMessage); message GM_SELECTALL;
|
|
||||||
procedure msg_SetGrid(var AMsg: TGridMessage); message GM_SETGRID;
|
|
||||||
procedure msg_SetPos(var AMsg: TGridMessage); message GM_SETPOS;
|
|
||||||
procedure msg_SetValue(var AMsg: TGridMessage); message GM_SETVALUE;
|
|
||||||
procedure WndProc(var AMsg: TLMessage); override;
|
|
||||||
public
|
|
||||||
constructor Create(AOwner: TComponent); override;
|
|
||||||
procedure EditingDone; override;
|
|
||||||
property OnEditingDone;
|
|
||||||
end;
|
|
||||||
*)
|
|
||||||
|
|
||||||
TsMultilineStringCellEditor = class(TMemo)
|
TsMultilineStringCellEditor = class(TMemo)
|
||||||
private
|
private
|
||||||
FGrid: TsCustomWorksheetGrid;
|
FGrid: TsCustomWorksheetGrid;
|
||||||
@ -281,7 +258,6 @@ type
|
|||||||
procedure DefineProperties(Filer: TFiler); override;
|
procedure DefineProperties(Filer: TFiler); override;
|
||||||
procedure DoCopyToClipboard; override;
|
procedure DoCopyToClipboard; override;
|
||||||
procedure DoCutToClipboard; override;
|
procedure DoCutToClipboard; override;
|
||||||
procedure DoEditorHide; override;
|
|
||||||
procedure DoEditorShow; override;
|
procedure DoEditorShow; override;
|
||||||
procedure DoEnter; override;
|
procedure DoEnter; override;
|
||||||
procedure DoExit; override;
|
procedure DoExit; override;
|
||||||
@ -1140,185 +1116,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{*******************************************************************************
|
|
||||||
* TsSingleLineStringCellEditor *
|
|
||||||
*******************************************************************************}
|
|
||||||
(*
|
|
||||||
constructor TsSingleLineStringCellEditor.Create(AOwner: TComponent);
|
|
||||||
begin
|
|
||||||
inherited Create(AOwner);
|
|
||||||
AutoSize := false;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.Change;
|
|
||||||
begin
|
|
||||||
inherited Change;
|
|
||||||
if (FGrid <> nil) and Visible then begin
|
|
||||||
FGrid.EditorTextChanged(FCol, FRow, Text);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
{
|
|
||||||
function TsSingleLineStringCellEditor.DoValidText(const AText: String): Boolean;
|
|
||||||
var
|
|
||||||
err: String;
|
|
||||||
begin
|
|
||||||
Result := FGrid.ValidFormula(AText, err);
|
|
||||||
if not Result then
|
|
||||||
MessageDlg(err, mtError, [mbOK], 0);
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
procedure TsSingleLineStringCellEditor.EditingDone;
|
|
||||||
begin
|
|
||||||
inherited EditingDone;
|
|
||||||
if FGrid <> nil then
|
|
||||||
FGrid.EditingDone;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.msg_GetGrid(var AMsg: TGridMessage);
|
|
||||||
begin
|
|
||||||
AMsg.Grid := FGrid;
|
|
||||||
AMsg.Options:= EO_IMPLEMENTED;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.msg_GetValue(var AMsg: TGridMessage);
|
|
||||||
begin
|
|
||||||
AMsg.Col := FCol;
|
|
||||||
AMsg.Row := FRow;
|
|
||||||
AMsg.Value := Text;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.KeyDown(var AKey: Word;
|
|
||||||
AShift: TShiftState);
|
|
||||||
|
|
||||||
function AllSelected: boolean;
|
|
||||||
begin
|
|
||||||
Result := (SelLength > 0) and (SelLength = UTF8Length(Text));
|
|
||||||
end;
|
|
||||||
|
|
||||||
function AtStart: Boolean;
|
|
||||||
begin
|
|
||||||
Result := (SelStart = 0);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function AtEnd: Boolean;
|
|
||||||
begin
|
|
||||||
Result := ((SelStart + 1) > UTF8Length(Text)) or AllSelected;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure DoEditorKeyDown;
|
|
||||||
begin
|
|
||||||
if FGrid <> nil then
|
|
||||||
FGrid.EditorkeyDown(Self, AKey, AShift);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure DoGridKeyDown;
|
|
||||||
begin
|
|
||||||
if FGrid <> nil then
|
|
||||||
FGrid.KeyDown(AKey, AShift);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function GetFastEntry: boolean;
|
|
||||||
begin
|
|
||||||
if FGrid <> nil then
|
|
||||||
Result := FGrid.FastEditing
|
|
||||||
else
|
|
||||||
Result := False;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure CheckEditingKey;
|
|
||||||
begin
|
|
||||||
if (FGrid = nil) or FGrid.EditorIsReadOnly then
|
|
||||||
AKey := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
IntSel: boolean;
|
|
||||||
begin
|
|
||||||
inherited KeyDown(AKey, AShift);
|
|
||||||
case AKey of
|
|
||||||
VK_F2:
|
|
||||||
if AllSelected then begin
|
|
||||||
SelLength := 0;
|
|
||||||
SelStart := Length(Text);
|
|
||||||
end;
|
|
||||||
VK_DELETE, VK_BACK:
|
|
||||||
CheckEditingKey;
|
|
||||||
VK_UP, VK_DOWN:
|
|
||||||
DoGridKeyDown;
|
|
||||||
VK_LEFT, VK_RIGHT:
|
|
||||||
if GetFastEntry then
|
|
||||||
begin
|
|
||||||
IntSel:=
|
|
||||||
((AKey = VK_LEFT) and not AtStart) or
|
|
||||||
((AKey = VK_RIGHT) and not AtEnd);
|
|
||||||
if not IntSel then begin
|
|
||||||
DoGridKeyDown;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
VK_END, VK_HOME:
|
|
||||||
;
|
|
||||||
VK_ESCAPE:
|
|
||||||
begin
|
|
||||||
doGridKeyDown;
|
|
||||||
if AKey <> 0 then begin
|
|
||||||
Text := FGrid.FOldEditorText;
|
|
||||||
FGrid.EditorHide;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
else
|
|
||||||
DoEditorKeyDown;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.msg_SelectAll(var AMsg: TGridMessage);
|
|
||||||
begin
|
|
||||||
Unused(AMsg);
|
|
||||||
SelectAll;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.msg_SetGrid(var AMsg: TGridMessage);
|
|
||||||
begin
|
|
||||||
FGrid := AMsg.Grid as TsCustomWorksheetGrid;
|
|
||||||
AMsg.Options := EO_AUTOSIZE or EO_SELECTALL or EO_HOOKKEYPRESS or EO_HOOKKEYUP;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{
|
|
||||||
procedure TsSingleLineStringCellEditor.msg_SetMask(var AMsg: TGridMessage);
|
|
||||||
begin
|
|
||||||
EditMask := AMsg.Value;
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
procedure TsSingleLineStringCellEditor.msg_SetPos(var AMsg: TGridMessage);
|
|
||||||
begin
|
|
||||||
FCol := AMsg.Col;
|
|
||||||
FRow := AMsg.Row;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.msg_SetValue(var AMsg: TGridMessage);
|
|
||||||
begin
|
|
||||||
Text := AMsg.Value;
|
|
||||||
SelStart := UTF8Length(Text);
|
|
||||||
end;
|
|
||||||
{
|
|
||||||
procedure TsSingleLineStringCellEditor.WMKillFocus(var AMessage: TLMKillFocus);
|
|
||||||
begin
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
|
|
||||||
procedure TsSingleLineStringCellEditor.WndProc(var AMsg: TLMessage);
|
|
||||||
begin
|
|
||||||
if FGrid <> nil then
|
|
||||||
case AMsg.Msg of
|
|
||||||
LM_CLEAR, LM_CUT, LM_PASTE:
|
|
||||||
begin
|
|
||||||
if FGrid.EditorIsReadOnly then
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
inherited WndProc(AMsg);
|
|
||||||
end;
|
|
||||||
*)
|
|
||||||
|
|
||||||
{*******************************************************************************
|
{*******************************************************************************
|
||||||
* TsMultiLineStringCellEditor *
|
* TsMultiLineStringCellEditor *
|
||||||
*******************************************************************************}
|
*******************************************************************************}
|
||||||
@ -1335,15 +1132,6 @@ begin
|
|||||||
if (FGrid <> nil) and Visible then
|
if (FGrid <> nil) and Visible then
|
||||||
FGrid.EditorTextChanged(FCol, FRow, Text);
|
FGrid.EditorTextChanged(FCol, FRow, Text);
|
||||||
end;
|
end;
|
||||||
(*
|
|
||||||
function TsMultiLineStringCellEditor.DoValidText(const AText: String): Boolean;
|
|
||||||
var
|
|
||||||
err: String;
|
|
||||||
begin
|
|
||||||
Result := FGrid.ValidFormula(AText, err);
|
|
||||||
if not Result then
|
|
||||||
MessageDlg(err, mtError, [mbOK], 0);
|
|
||||||
end; *)
|
|
||||||
|
|
||||||
procedure TsMultilineStringCellEditor.EditingDone;
|
procedure TsMultilineStringCellEditor.EditingDone;
|
||||||
begin
|
begin
|
||||||
@ -1471,10 +1259,6 @@ begin
|
|||||||
Text := AMsg.Value;
|
Text := AMsg.Value;
|
||||||
SelStart := UTF8Length(Text);
|
SelStart := UTF8Length(Text);
|
||||||
end;
|
end;
|
||||||
(*
|
|
||||||
procedure TsMultiLineStringCellEditor.WMKillFocus(var AMessage: TLMKillFocus);
|
|
||||||
begin
|
|
||||||
end; *)
|
|
||||||
|
|
||||||
procedure TsMultilineStringCellEditor.WndProc(var AMsg: TLMessage);
|
procedure TsMultilineStringCellEditor.WndProc(var AMsg: TLMessage);
|
||||||
begin
|
begin
|
||||||
@ -1545,14 +1329,6 @@ begin
|
|||||||
RangeSelectMode := rsmMulti;
|
RangeSelectMode := rsmMulti;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
(*
|
|
||||||
FSingleLineStringEditor := TsSingleLineStringCellEditor.Create(self);
|
|
||||||
FSingleLineStringEditor.name :='SingleLineStringEditor';
|
|
||||||
FSingleLineStringEditor.Text := '';
|
|
||||||
FSingleLineStringEditor.Visible := False;
|
|
||||||
FSingleLineStringEditor.Align := alNone;
|
|
||||||
FSingleLineStringEditor.BorderStyle := bsNone; *)
|
|
||||||
|
|
||||||
dec(FRowHeightLock);
|
dec(FRowHeightLock);
|
||||||
UpdateRowHeights;
|
UpdateRowHeights;
|
||||||
end;
|
end;
|
||||||
@ -1568,7 +1344,6 @@ begin
|
|||||||
FreeAndNil(FCellFont);
|
FreeAndNil(FCellFont);
|
||||||
FreeAndNil(FSelPen);
|
FreeAndNil(FSelPen);
|
||||||
FreeAndNil(FFrozenBorderPen);
|
FreeAndNil(FFrozenBorderPen);
|
||||||
// FreeAndNil(FSingleLineStringEditor);
|
|
||||||
FreeAndNil(FMultiLineStringEditor);
|
FreeAndNil(FMultiLineStringEditor);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
@ -1889,10 +1664,8 @@ begin
|
|||||||
if (cell = nil) or not (cell^.ContentType in [cctUTF8String]) then // ... non-label cells
|
if (cell = nil) or not (cell^.ContentType in [cctUTF8String]) then // ... non-label cells
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
// fmt := Workbook.GetPointerToCellFormat(cell^.FormatIndex);
|
|
||||||
idx := Worksheet.GetEffectiveCellFormatIndex(cell);
|
idx := Worksheet.GetEffectiveCellFormatIndex(cell);
|
||||||
fmt := Workbook.GetPointerToCellFormat(idx);
|
fmt := Workbook.GetPointerToCellFormat(idx);
|
||||||
// fmt := Worksheet.GetPointerToEffectiveCellFormat(cell);
|
|
||||||
if (uffWordWrap in fmt^.UsedFormattingFields) then // ... word-wrap
|
if (uffWordWrap in fmt^.UsedFormattingFields) then // ... word-wrap
|
||||||
exit;
|
exit;
|
||||||
if (uffTextRotation in fmt^.UsedFormattingFields) and // ... vertical text
|
if (uffTextRotation in fmt^.UsedFormattingFields) and // ... vertical text
|
||||||
@ -2236,22 +2009,6 @@ begin
|
|||||||
WorkbookSource.PasteCellsFromClipboard(coCopyCell);
|
WorkbookSource.PasteCellsFromClipboard(coCopyCell);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TsCustomWorksheetGrid.DoEditorHide;
|
|
||||||
var
|
|
||||||
msg: String;
|
|
||||||
begin
|
|
||||||
inherited;
|
|
||||||
{
|
|
||||||
// The following code is reached when an error is found in the cell formula
|
|
||||||
// being edited and another control is selected.
|
|
||||||
if (FEditText <> '') then begin
|
|
||||||
if not lula(FEditText, msg) then
|
|
||||||
MessageDlg(msg, mtError, [mbOK], 0);
|
|
||||||
FEditText := '';
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ Make the cell editor the same size as the edited cell, in particular for
|
{ Make the cell editor the same size as the edited cell, in particular for
|
||||||
even for merged cells; otherwise the merge base content would be seen during
|
even for merged cells; otherwise the merge base content would be seen during
|
||||||
editing at several places. }
|
editing at several places. }
|
||||||
@ -3459,7 +3216,6 @@ begin
|
|||||||
|
|
||||||
idx := Worksheet.GetEffectiveCellFormatIndex(lCell);
|
idx := Worksheet.GetEffectiveCellFormatIndex(lCell);
|
||||||
fmt := Workbook.GetPointerToCellFormat(idx);
|
fmt := Workbook.GetPointerToCellFormat(idx);
|
||||||
// fmt := Worksheet.GetPointerToEffectiveCellFormat(lCell);
|
|
||||||
wrapped := (uffWordWrap in fmt^.UsedFormattingFields) or (fmt^.TextRotation = rtStacked);
|
wrapped := (uffWordWrap in fmt^.UsedFormattingFields) or (fmt^.TextRotation = rtStacked);
|
||||||
RTL := IsRightToLeft;
|
RTL := IsRightToLeft;
|
||||||
if (uffBiDi in fmt^.UsedFormattingFields) then
|
if (uffBiDi in fmt^.UsedFormattingFields) then
|
||||||
@ -3677,82 +3433,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
(*
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
|
||||||
The "colors" used by the spreadsheet are indexes into the workbook's color
|
|
||||||
palette. If the user wants to set a color to a particular RGB value this is
|
|
||||||
not possible in general. The method FindNearestPaletteIndex finds the bast
|
|
||||||
matching color in the palette.
|
|
||||||
|
|
||||||
@param AColor Color index into the workbook's palette
|
|
||||||
-------------------------------------------------------------------------------}
|
|
||||||
function TsCustomWorksheetGrid.FindNearestPaletteIndex(AColor: TColor): TsColor;
|
|
||||||
begin
|
|
||||||
Result := fpsVisualUtils.FindNearestPaletteIndex(Workbook, AColor);
|
|
||||||
end;
|
|
||||||
*)
|
|
||||||
(*
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
|
||||||
Notification by the workbook link that a cell has been modified. --> Repaint.
|
|
||||||
-------------------------------------------------------------------------------}
|
|
||||||
procedure TsCustomWorksheetGrid.CellChanged(ACell: PCell);
|
|
||||||
begin
|
|
||||||
Unused(ACell);
|
|
||||||
Invalidate;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
|
||||||
Notification by the workbook link that another cell has been selected
|
|
||||||
--> select the cell in the grid
|
|
||||||
-------------------------------------------------------------------------------}
|
|
||||||
procedure TsCustomWorksheetGrid.CellSelected(ASheetRow, ASheetCol: Cardinal);
|
|
||||||
var
|
|
||||||
grow, gcol: Integer;
|
|
||||||
begin
|
|
||||||
if (FWorkbookLink <> nil) then
|
|
||||||
begin
|
|
||||||
grow := GetGridRow(ASheetRow);
|
|
||||||
gcol := GetGridCol(ASheetCol);
|
|
||||||
if (grow <> Row) or (gcol <> Col) then begin
|
|
||||||
Row := grow;
|
|
||||||
Col := gcol;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
|
||||||
Notification by the workbook link that a new workbook is available.
|
|
||||||
-------------------------------------------------------------------------------}
|
|
||||||
procedure TsCustomWorksheetGrid.WorkbookChanged;
|
|
||||||
begin
|
|
||||||
WorksheetChanged;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
|
||||||
Notification by the workbook link that a new worksheet has been selected from
|
|
||||||
the current workbook. Is also called internally from WorkbookChanged.
|
|
||||||
-------------------------------------------------------------------------------}
|
|
||||||
procedure TsCustomWorksheetGrid.WorksheetChanged;
|
|
||||||
begin
|
|
||||||
if Worksheet <> nil then begin
|
|
||||||
//Worksheet.OnChangeCell := @ChangedCellHandler;
|
|
||||||
//Worksheet.OnChangeFont := @ChangedFontHandler;
|
|
||||||
ShowHeaders := (soShowHeaders in Worksheet.Options);
|
|
||||||
ShowGridLines := (soShowGridLines in Worksheet.Options);
|
|
||||||
if (soHasFrozenPanes in Worksheet.Options) then begin
|
|
||||||
FrozenCols := Worksheet.LeftPaneWidth;
|
|
||||||
FrozenRows := Worksheet.TopPaneHeight;
|
|
||||||
end else begin
|
|
||||||
FrozenCols := 0;
|
|
||||||
FrozenRows := 0;
|
|
||||||
end;
|
|
||||||
Row := FrozenRows;
|
|
||||||
Col := FrozenCols;
|
|
||||||
end;
|
|
||||||
Setup;
|
|
||||||
end;
|
|
||||||
*)
|
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Returns the background color of a cell. The color is given as an index into
|
Returns the background color of a cell. The color is given as an index into
|
||||||
the workbook's color palette.
|
the workbook's color palette.
|
||||||
@ -4236,18 +3916,6 @@ begin
|
|||||||
Result := TrimToCell(cell)
|
Result := TrimToCell(cell)
|
||||||
else
|
else
|
||||||
Result := Worksheet.ReadAsText(cell);
|
Result := Worksheet.ReadAsText(cell);
|
||||||
{
|
|
||||||
if Worksheet.ReadTextRotation(cell) = rtStacked then
|
|
||||||
begin
|
|
||||||
s := Result;
|
|
||||||
Result := '';
|
|
||||||
for i:=1 to Length(s) do
|
|
||||||
begin
|
|
||||||
Result := Result + s[i];
|
|
||||||
if i < Length(s) then Result := Result + LineEnding;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -4491,12 +4159,6 @@ begin
|
|||||||
cbSouth : if ACell^.Row < r2 then Result := false;
|
cbSouth : if ACell^.Row < r2 then Result := false;
|
||||||
cbEast : if ACell^.Col < c2 then Result := false;
|
cbEast : if ACell^.Col < c2 then Result := false;
|
||||||
cbWest : if ACell^.Col > c1 then Result := false;
|
cbWest : if ACell^.Col > c1 then Result := false;
|
||||||
{
|
|
||||||
cbEast : if (IsRightToLeft and (ACell^.Col > c1)) or
|
|
||||||
(not IsRightToLeft and (ACell^.Col < c2)) then Result := false;
|
|
||||||
cbWest : if (IsRightToLeft and (ACell^.Col < c2)) or
|
|
||||||
(not IsRightToLeft and (ACell^.Col > c1)) then Result := false;
|
|
||||||
}
|
|
||||||
end;
|
end;
|
||||||
end else
|
end else
|
||||||
Result := ABorder in Worksheet.ReadCellBorders(ACell);
|
Result := ABorder in Worksheet.ReadCellBorders(ACell);
|
||||||
@ -4611,7 +4273,6 @@ begin
|
|||||||
if GetGridCol(Worksheet.GetLastColIndex + 1) >= ColCount then
|
if GetGridCol(Worksheet.GetLastColIndex + 1) >= ColCount then
|
||||||
ColCount := ColCount + 1;
|
ColCount := ColCount + 1;
|
||||||
c := GetWorksheetCol(AGridCol);
|
c := GetWorksheetCol(AGridCol);
|
||||||
// c := AGridCol - FHeaderCount;
|
|
||||||
Worksheet.InsertCol(c);
|
Worksheet.InsertCol(c);
|
||||||
|
|
||||||
UpdateColWidths(AGridCol);
|
UpdateColWidths(AGridCol);
|
||||||
@ -4749,7 +4410,6 @@ begin
|
|||||||
// Overflow possible from non-merged, horizontal, non-left-aligned label cells
|
// Overflow possible from non-merged, horizontal, non-left-aligned label cells
|
||||||
idx := Worksheet.GetEffectiveCellFormatIndex(cell);
|
idx := Worksheet.GetEffectiveCellFormatIndex(cell);
|
||||||
fmt := Workbook.GetPointerToCellFormat(idx);
|
fmt := Workbook.GetPointerToCellFormat(idx);
|
||||||
// fmt := Worksheet.GetPointerToEffectiveCellFormat(cell);
|
|
||||||
if (not Worksheet.IsMerged(cell)) and
|
if (not Worksheet.IsMerged(cell)) and
|
||||||
(cell^.ContentType = cctUTF8String) and
|
(cell^.ContentType = cctUTF8String) and
|
||||||
not (uffTextRotation in fmt^.UsedFormattingFields) and
|
not (uffTextRotation in fmt^.UsedFormattingFields) and
|
||||||
@ -4994,40 +4654,6 @@ begin
|
|||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
(*
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
|
||||||
Loads the worksheet into the grid and displays its contents.
|
|
||||||
|
|
||||||
@param AWorksheet Worksheet to be displayed in the grid
|
|
||||||
-------------------------------------------------------------------------------}
|
|
||||||
procedure TsCustomWorksheetGrid.LoadFromWorksheet(AWorksheet: TsWorksheet);
|
|
||||||
begin
|
|
||||||
if FWorkbookSource <> nil then
|
|
||||||
exit;
|
|
||||||
|
|
||||||
GetWorkbookSource.LoadFro
|
|
||||||
FOwnedWorksheet := AWorksheet;
|
|
||||||
if FOwnedWorksheet <> nil then begin
|
|
||||||
inc(FLockSetup);
|
|
||||||
FOwnedWorksheet.OnChangeCell := @ChangedCellHandler;
|
|
||||||
FOwnedWorksheet.OnChangeFont := @ChangedFontHandler;
|
|
||||||
ShowHeaders := (soShowHeaders in Worksheet.Options);
|
|
||||||
ShowGridLines := (soShowGridLines in Worksheet.Options);
|
|
||||||
if (soHasFrozenPanes in Worksheet.Options) then begin
|
|
||||||
FrozenCols := FOwnedWorksheet.LeftPaneWidth;
|
|
||||||
FrozenRows := FOwnedWorksheet.TopPaneHeight;
|
|
||||||
end else begin
|
|
||||||
FrozenCols := 0;
|
|
||||||
FrozenRows := 0;
|
|
||||||
end;
|
|
||||||
Row := FrozenRows;
|
|
||||||
Col := FrozenCols;
|
|
||||||
dec(FLockSetup);
|
|
||||||
end;
|
|
||||||
Setup;
|
|
||||||
end;
|
|
||||||
*)
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Creates a new workbook and loads the given file into it. The file is assumed
|
Creates a new workbook and loads the given file into it. The file is assumed
|
||||||
to have the given file format. Shows the sheet with the given sheet index.
|
to have the given file format. Shows the sheet with the given sheet index.
|
||||||
@ -5393,32 +5019,15 @@ end;
|
|||||||
grid instead.
|
grid instead.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsCustomWorksheetGrid.MouseMove(Shift: TShiftState; X, Y: Integer);
|
procedure TsCustomWorksheetGrid.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||||
{
|
|
||||||
--- wp: removed this for testing: why is the entire grid repainted when the
|
|
||||||
mouse moved to another cell?
|
|
||||||
var
|
|
||||||
prevMouseCell: TPoint;
|
|
||||||
}
|
|
||||||
begin
|
begin
|
||||||
if Worksheet = nil then
|
if Worksheet = nil then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
{ --- wp
|
|
||||||
prevMouseCell := GCache.MouseCell;
|
|
||||||
}
|
|
||||||
|
|
||||||
inherited;
|
inherited;
|
||||||
|
|
||||||
if MouseOnHeader(X,Y) then
|
if MouseOnHeader(X,Y) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
{ --- wp
|
|
||||||
if FTextOverflow and
|
|
||||||
((prevMouseCell.X <> GCache.MouseCell.X) or (prevMouseCell.Y <> GCache.MouseCell.Y))
|
|
||||||
then
|
|
||||||
InvalidateGrid;
|
|
||||||
}
|
|
||||||
|
|
||||||
if Assigned(Dragmanager) and DragManager.IsDragging then
|
if Assigned(Dragmanager) and DragManager.IsDragging then
|
||||||
begin
|
begin
|
||||||
Cursor := crDefault;
|
Cursor := crDefault;
|
||||||
@ -6212,14 +5821,12 @@ end;
|
|||||||
procedure TsCustomWorksheetGrid.WMHScroll(var message: TLMHScroll);
|
procedure TsCustomWorksheetGrid.WMHScroll(var message: TLMHScroll);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
//if Worksheet.GetImageCount > 0 then
|
|
||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TsCustomWorksheetGrid.WMVScroll(var message: TLMVScroll);
|
procedure TsCustomWorksheetGrid.WMVScroll(var message: TLMVScroll);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
//if Worksheet.GetImageCount > 0 then
|
|
||||||
Invalidate;
|
Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -6973,7 +6580,6 @@ begin
|
|||||||
begin
|
begin
|
||||||
idx := Worksheet.GetEffectiveCellFormatIndex(cell);
|
idx := Worksheet.GetEffectiveCellFormatIndex(cell);
|
||||||
fmt := Workbook.GetPointerToCellFormat(idx);
|
fmt := Workbook.GetPointerToCellFormat(idx);
|
||||||
// fmt := Worksheet.GetPointerToEffectiveCellFormat(cell);
|
|
||||||
if fmt <> nil then
|
if fmt <> nil then
|
||||||
nfp := Workbook.GetNumberFormat(fmt^.NumberFormatIndex);
|
nfp := Workbook.GetNumberFormat(fmt^.NumberFormatIndex);
|
||||||
if (fmt <> nil) and IsDateTimeFormat(nfp) then
|
if (fmt <> nil) and IsDateTimeFormat(nfp) then
|
||||||
|
Reference in New Issue
Block a user