fpspreadsheet: Add properties BackgroundColor(s) to TsWorksheetGrid and show usage in fpsgrid demo.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3039 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2014-05-11 11:56:20 +00:00
parent afe1013755
commit a954d389c0
6 changed files with 1629 additions and 1489 deletions

View File

@ -126,13 +126,14 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="mainform"/> <UnitName Value="mainform"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/> <EditorIndex Value="1"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="356"/> <TopLine Value="526"/>
<CursorPos X="40" Y="375"/> <CursorPos X="48" Y="557"/>
<UsageCount Value="200"/> <UsageCount Value="200"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="49" Y="494" ID="1"/> <Item0 X="3" Y="558" ID="1"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
@ -140,22 +141,21 @@
<Unit2> <Unit2>
<Filename Value="..\..\fpspreadsheet.pas"/> <Filename Value="..\..\fpspreadsheet.pas"/>
<UnitName Value="fpspreadsheet"/> <UnitName Value="fpspreadsheet"/>
<EditorIndex Value="3"/> <EditorIndex Value="5"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="146"/> <TopLine Value="187"/>
<CursorPos X="3" Y="165"/> <CursorPos X="10" Y="186"/>
<UsageCount Value="98"/> <UsageCount Value="99"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit2> </Unit2>
<Unit3> <Unit3>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="..\..\fpspreadsheetgrid.pas"/>
<UnitName Value="fpspreadsheetgrid"/> <UnitName Value="fpspreadsheetgrid"/>
<IsVisibleTab Value="True"/> <EditorIndex Value="4"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="131"/> <TopLine Value="1142"/>
<CursorPos X="29" Y="155"/> <CursorPos X="19" Y="1161"/>
<UsageCount Value="99"/> <UsageCount Value="100"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
@ -247,10 +247,12 @@
<Unit15> <Unit15>
<Filename Value="d:\lazarus-svn\lcl\graphics.pp"/> <Filename Value="d:\lazarus-svn\lcl\graphics.pp"/>
<UnitName Value="Graphics"/> <UnitName Value="Graphics"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="573"/> <TopLine Value="1937"/>
<CursorPos X="43" Y="593"/> <CursorPos X="11" Y="1956"/>
<UsageCount Value="29"/> <UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit15> </Unit15>
<Unit16> <Unit16>
<Filename Value="d:\lazarus-svn\fpc\2.6.2\source\rtl\objpas\classes\classesh.inc"/> <Filename Value="d:\lazarus-svn\fpc\2.6.2\source\rtl\objpas\classes\classesh.inc"/>
@ -262,11 +264,11 @@
<Unit17> <Unit17>
<Filename Value="..\..\xlsbiff8.pas"/> <Filename Value="..\..\xlsbiff8.pas"/>
<UnitName Value="xlsbiff8"/> <UnitName Value="xlsbiff8"/>
<EditorIndex Value="5"/> <EditorIndex Value="7"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="2008"/> <TopLine Value="2008"/>
<CursorPos X="39" Y="1983"/> <CursorPos X="39" Y="1983"/>
<UsageCount Value="73"/> <UsageCount Value="74"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit17> </Unit17>
<Unit18> <Unit18>
@ -287,31 +289,31 @@
<Unit20> <Unit20>
<Filename Value="..\..\xlscommon.pas"/> <Filename Value="..\..\xlscommon.pas"/>
<UnitName Value="xlscommon"/> <UnitName Value="xlscommon"/>
<EditorIndex Value="4"/> <EditorIndex Value="6"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="1461"/> <TopLine Value="1461"/>
<CursorPos X="43" Y="1479"/> <CursorPos X="43" Y="1479"/>
<UsageCount Value="69"/> <UsageCount Value="70"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit20> </Unit20>
<Unit21> <Unit21>
<Filename Value="..\..\xlsbiff5.pas"/> <Filename Value="..\..\xlsbiff5.pas"/>
<UnitName Value="xlsbiff5"/> <UnitName Value="xlsbiff5"/>
<EditorIndex Value="6"/> <EditorIndex Value="8"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<CursorPos X="1" Y="1"/> <CursorPos X="1" Y="1"/>
<UsageCount Value="56"/> <UsageCount Value="57"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit21> </Unit21>
<Unit22> <Unit22>
<Filename Value="..\..\xlsbiff2.pas"/> <Filename Value="..\..\xlsbiff2.pas"/>
<UnitName Value="xlsbiff2"/> <UnitName Value="xlsbiff2"/>
<EditorIndex Value="7"/> <EditorIndex Value="9"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="547"/> <TopLine Value="547"/>
<CursorPos X="1" Y="563"/> <CursorPos X="1" Y="563"/>
<UsageCount Value="57"/> <UsageCount Value="58"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit22> </Unit22>
<Unit23> <Unit23>
@ -394,10 +396,12 @@
<Unit33> <Unit33>
<Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<UnitName Value="ColorBox"/> <UnitName Value="ColorBox"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/> <WindowIndex Value="0"/>
<TopLine Value="13"/> <TopLine Value="584"/>
<CursorPos X="1" Y="1"/> <CursorPos X="3" Y="598"/>
<UsageCount Value="7"/> <UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit33> </Unit33>
<Unit34> <Unit34>
<Filename Value="d:\lazarus-svn\lcl\dialogs.pp"/> <Filename Value="d:\lazarus-svn\lcl\dialogs.pp"/>
@ -560,124 +564,124 @@
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1146" Column="56" TopLine="1127"/> <Caret Line="610" Column="15" TopLine="578"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="1149" Column="53" TopLine="1127"/> <Caret Line="435" Column="32" TopLine="420"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="1158" Column="61" TopLine="1140"/> <Caret Line="140" Column="14" TopLine="121"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1727" Column="25" TopLine="1708"/> <Caret Line="589" Column="28" TopLine="589"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="1" Column="1" TopLine="1"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="45" Column="37" TopLine="13"/> <Caret Line="61" Column="27" TopLine="29"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1137" Column="55" TopLine="1135"/> <Caret Line="169" Column="27" TopLine="137"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1727" Column="22" TopLine="1708"/> <Caret Line="365" Column="15" TopLine="333"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1755" Column="19" TopLine="1737"/> <Caret Line="463" Column="17" TopLine="431"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1154" Column="1" TopLine="1135"/> <Caret Line="573" Column="41" TopLine="573"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1142" Column="19" TopLine="1133"/> <Caret Line="1" Column="1" TopLine="1"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1929" Column="3" TopLine="1898"/> <Caret Line="61" Column="27" TopLine="29"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="1730" Column="1" TopLine="1713"/> <Caret Line="169" Column="27" TopLine="137"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="56" Column="61" TopLine="39"/> <Caret Line="365" Column="15" TopLine="333"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="mainform.pas"/> <Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<Caret Line="213" Column="17" TopLine="204"/> <Caret Line="463" Column="17" TopLine="431"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="214" Column="17" TopLine="205"/> <Caret Line="420" Column="4" TopLine="420"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="..\..\fpspreadsheetgrid.pas"/> <Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="1418" Column="79" TopLine="1416"/> <Caret Line="140" Column="14" TopLine="121"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="mainform.pas"/> <Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="239" Column="19" TopLine="206"/> <Caret Line="1161" Column="24" TopLine="1143"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="mainform.pas"/> <Filename Value="..\..\fpspreadsheet.pas"/>
<Caret Line="240" Column="19" TopLine="207"/> <Caret Line="447" Column="3" TopLine="447"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="mainform.pas"/> <Filename Value="..\..\fpspreadsheet.pas"/>
<Caret Line="139" Column="15" TopLine="121"/> <Caret Line="1" Column="1" TopLine="1"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="mainform.pas"/> <Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="592" Column="56" TopLine="558"/> <Caret Line="1161" Column="24" TopLine="1142"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="593" Column="56" TopLine="559"/> <Caret Line="562" Column="28" TopLine="552"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="594" Column="56" TopLine="560"/> <Caret Line="433" Column="14" TopLine="417"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="595" Column="56" TopLine="561"/> <Caret Line="438" Column="30" TopLine="419"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="596" Column="56" TopLine="562"/> <Caret Line="439" Column="29" TopLine="420"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="597" Column="56" TopLine="563"/> <Caret Line="440" Column="23" TopLine="421"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="371" Column="65" TopLine="352"/> <Caret Line="439" Column="60" TopLine="420"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="187" Column="18" TopLine="166"/> <Caret Line="589" Column="26" TopLine="571"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="374" Column="30" TopLine="356"/> <Caret Line="557" Column="3" TopLine="522"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="mainform.pas"/> <Filename Value="mainform.pas"/>
<Caret Line="375" Column="40" TopLine="356"/> <Caret Line="165" Column="77" TopLine="134"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>

View File

@ -283,6 +283,17 @@ object Form1: TForm1
Caption = 'ToolButton20' Caption = 'ToolButton20'
Style = tbsDivider Style = tbsDivider
end end
object CbBackgroundColor: TColorBox
Left = 461
Height = 24
Top = 2
Width = 132
Style = [cbPrettyNames, cbCustomColors]
OnGetColors = CbBackgroundColorGetColors
ItemHeight = 16
OnSelect = CbBackgroundColorSelect
TabOrder = 2
end
end end
object OpenDialog1: TOpenDialog object OpenDialog1: TOpenDialog
DefaultExt = '.xls' DefaultExt = '.xls'

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ interface
uses uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Menus, ExtCtrls, ComCtrls, ActnList, Spin, Grids, graphutil, StdCtrls, Menus, ExtCtrls, ComCtrls, ActnList, Spin, Grids, graphutil,
fpspreadsheetgrid, fpspreadsheet, fpsallformats; ColorBox, fpspreadsheetgrid, fpspreadsheet, fpsallformats;
type type
@ -54,6 +54,7 @@ type
ActionList1: TActionList; ActionList1: TActionList;
CbShowHeaders: TCheckBox; CbShowHeaders: TCheckBox;
CbShowGridLines: TCheckBox; CbShowGridLines: TCheckBox;
CbBackgroundColor: TColorBox;
FontComboBox: TComboBox; FontComboBox: TComboBox;
EdFrozenRows: TSpinEdit; EdFrozenRows: TSpinEdit;
FontDialog1: TFontDialog; FontDialog1: TFontDialog;
@ -149,11 +150,13 @@ type
procedure AcTextRotationExecute(Sender: TObject); procedure AcTextRotationExecute(Sender: TObject);
procedure AcVertAlignmentExecute(Sender: TObject); procedure AcVertAlignmentExecute(Sender: TObject);
procedure AcWordwrapExecute(Sender: TObject); procedure AcWordwrapExecute(Sender: TObject);
procedure CbBackgroundColorSelect(Sender: TObject);
procedure CbShowHeadersClick(Sender: TObject); procedure CbShowHeadersClick(Sender: TObject);
procedure CbShowGridLinesClick(Sender: TObject); procedure CbShowGridLinesClick(Sender: TObject);
procedure AcOpenExecute(Sender: TObject); procedure AcOpenExecute(Sender: TObject);
procedure AcQuitExecute(Sender: TObject); procedure AcQuitExecute(Sender: TObject);
procedure AcSaveAsExecute(Sender: TObject); procedure AcSaveAsExecute(Sender: TObject);
procedure CbBackgroundColorGetColors(Sender: TCustomColorBox; Items: TStrings);
procedure EdFrozenColsChange(Sender: TObject); procedure EdFrozenColsChange(Sender: TObject);
procedure EdFrozenRowsChange(Sender: TObject); procedure EdFrozenRowsChange(Sender: TObject);
procedure FontComboBoxSelect(Sender: TObject); procedure FontComboBoxSelect(Sender: TObject);
@ -164,6 +167,8 @@ type
private private
{ private declarations } { private declarations }
procedure LoadFile(const AFileName: String); procedure LoadFile(const AFileName: String);
procedure SetupBackgroundColorBox;
procedure UpdateBackgroundColorIndex;
procedure UpdateFontActions(AFont: TsFont); procedure UpdateFontActions(AFont: TsFont);
procedure UpdateHorAlignmentActions; procedure UpdateHorAlignmentActions;
procedure UpdateTextRotationActions; procedure UpdateTextRotationActions;
@ -393,6 +398,11 @@ begin
with sWorksheetGrid1 do Wordwraps[Selection] := TAction(Sender).Checked; with sWorksheetGrid1 do Wordwraps[Selection] := TAction(Sender).Checked;
end; end;
procedure TForm1.CbBackgroundColorSelect(Sender: TObject);
begin
with sWorksheetGrid1 do BackgroundColors[Selection] := CbBackgroundColor.ItemIndex;
end;
procedure TForm1.CbShowHeadersClick(Sender: TObject); procedure TForm1.CbShowHeadersClick(Sender: TObject);
begin begin
sWorksheetGrid1.ShowHeaders := CbShowHeaders.Checked; sWorksheetGrid1.ShowHeaders := CbShowHeaders.Checked;
@ -424,6 +434,24 @@ begin
sWorksheetGrid1.SaveToSpreadsheetFile(SaveDialog1.FileName); sWorksheetGrid1.SaveToSpreadsheetFile(SaveDialog1.FileName);
end; end;
procedure TForm1.CbBackgroundColorGetColors(Sender: TCustomColorBox; Items: TStrings);
type
TRGB = packed record R,G,B: byte end;
var
clr: TColor;
rgb: TRGB absolute clr;
i: Integer;
begin
if sWorksheetGrid1.Workbook <> nil then begin
Items.Clear;
for i:=0 to sWorksheetGrid1.Workbook.GetPaletteSize-1 do begin
clr := sWorksheetGrid1.Workbook.GetPaletteColor(i);
Items.AddObject(Format('Color %d: %.2x%.2x%.2x', [i, rgb.R, rgb.G, rgb.B]),
TObject(PtrInt(clr)));
end;
end;
end;
procedure TForm1.EdFrozenColsChange(Sender: TObject); procedure TForm1.EdFrozenColsChange(Sender: TObject);
begin begin
sWorksheetGrid1.FrozenCols := EdFrozenCols.Value; sWorksheetGrid1.FrozenCols := EdFrozenCols.Value;
@ -516,6 +544,7 @@ begin
CbShowHeaders.Checked := (soShowHeaders in sWorksheetGrid1.Worksheet.Options); CbShowHeaders.Checked := (soShowHeaders in sWorksheetGrid1.Worksheet.Options);
EdFrozenCols.Value := sWorksheetGrid1.FrozenCols; EdFrozenCols.Value := sWorksheetGrid1.FrozenCols;
EdFrozenRows.Value := sWorksheetGrid1.FrozenRows; EdFrozenRows.Value := sWorksheetGrid1.FrozenRows;
SetupBackgroundColorBox;
// Create a tab in the pagecontrol for each worksheet contained in the workbook // Create a tab in the pagecontrol for each worksheet contained in the workbook
// This would be easer with a TTabControl. This has display issues, though. // This would be easer with a TTabControl. This has display issues, though.
@ -530,6 +559,8 @@ begin
finally finally
pages.Free; pages.Free;
end; end;
sWorksheetGrid1Selection(nil, sWorksheetGrid1.Col, sWorksheetGrid1.Row);
end; end;
procedure TForm1.PageControl1Change(Sender: TObject); procedure TForm1.PageControl1Change(Sender: TObject);
@ -538,6 +569,14 @@ begin
sWorksheetGrid1.SelectSheetByIndex(PageControl1.ActivePageIndex); sWorksheetGrid1.SelectSheetByIndex(PageControl1.ActivePageIndex);
end; end;
procedure TForm1.SetupBackgroundColorBox;
begin
// This change triggers re-reading of the workbooks palette by the OnGetColors
// event of the ColorBox.
CbBackgroundColor.Style := CbBackgroundColor.Style - [cbCustomColors];
CbBackgroundColor.Style := CbBackgroundColor.Style + [cbCustomColors];
end;
procedure TForm1.sWorksheetGrid1Selection(Sender: TObject; aCol, aRow: Integer); procedure TForm1.sWorksheetGrid1Selection(Sender: TObject; aCol, aRow: Integer);
var var
cell: PCell; cell: PCell;
@ -555,12 +594,24 @@ begin
UpdateHorAlignmentActions; UpdateHorAlignmentActions;
UpdateVertAlignmentActions; UpdateVertAlignmentActions;
UpdateWordwraps; UpdateWordwraps;
UpdateBackgroundColorIndex;
if cell = nil then if cell = nil then
exit; exit;
lFont := sWorksheetGrid1.Workbook.GetFont(cell^.FontIndex); lFont := sWorksheetGrid1.Workbook.GetFont(cell^.FontIndex);
UpdateFontActions(lFont); UpdateFontActions(lFont);
end; end;
procedure TForm1.UpdateBackgroundColorIndex;
var
sClr: TsColor;
begin
with sWorksheetGrid1 do sClr := BackgroundColors[Selection];
if sClr = scNotDefined then
CbBackgroundColor.ItemIndex := -1
else
CbBackgroundColor.ItemIndex := sClr;
end;
procedure TForm1.UpdateHorAlignmentActions; procedure TForm1.UpdateHorAlignmentActions;
var var
i: Integer; i: Integer;

View File

@ -210,6 +210,8 @@ const
// Will be removed sooner or later... // Will be removed sooner or later...
scRGBColor = $FFFF; scRGBColor = $FFFF;
scNotDefined = $FFFF;
type type
{@@ Data type for rgb color values } {@@ Data type for rgb color values }
TsColorValue = DWord; TsColorValue = DWord;

View File

@ -45,6 +45,8 @@ type
procedure FixNeighborCellBorders(ACol, ARow: Integer); procedure FixNeighborCellBorders(ACol, ARow: Integer);
// Setter/Getter // Setter/Getter
function GetBackgroundColor(ACol, ARow: Integer): TsColor;
function GetBackgroundColors(ARect: TGridRect): TsColor;
function GetCellBorder(ACol, ARow: Integer): TsCellBorders; function GetCellBorder(ACol, ARow: Integer): TsCellBorders;
function GetCellBorders(ARect: TGridRect): TsCellBorders; function GetCellBorders(ARect: TGridRect): TsCellBorders;
function GetCellBorderStyle(ACol, ARow: Integer; ABorder: TsCellBorder): TsCellBorderStyle; function GetCellBorderStyle(ACol, ARow: Integer; ABorder: TsCellBorder): TsCellBorderStyle;
@ -59,6 +61,8 @@ type
function GetVertAlignments(ARect: TGridRect): TsVertAlignment; function GetVertAlignments(ARect: TGridRect): TsVertAlignment;
function GetWordwrap(ACol, ARow: Integer): Boolean; function GetWordwrap(ACol, ARow: Integer): Boolean;
function GetWordwraps(ARect: TGridRect): Boolean; function GetWordwraps(ARect: TGridRect): Boolean;
procedure SetBackgroundColor(ACol, ARow: Integer; AValue: TsColor);
procedure SetBackgroundColors(ARect: TGridRect; AValue: TsColor);
procedure SetCellBorder(ACol, ARow: Integer; AValue: TsCellBorders); procedure SetCellBorder(ACol, ARow: Integer; AValue: TsCellBorders);
procedure SetCellBorders(ARect: TGridRect; AValue: TsCellBorders); procedure SetCellBorders(ARect: TGridRect; AValue: TsCellBorders);
procedure SetCellBorderStyle(ACol, ARow: Integer; ABorder: TsCellBorder; AValue: TsCellBorderStyle); procedure SetCellBorderStyle(ACol, ARow: Integer; ABorder: TsCellBorder; AValue: TsCellBorderStyle);
@ -137,6 +141,10 @@ type
property HeaderCount: Integer read FHeaderCount; property HeaderCount: Integer read FHeaderCount;
{ maybe these should become published ... } { maybe these should become published ... }
property BackgroundColor[ACol, ARow: Integer]: TsColor
read GetBackgroundColor write SetBackgroundColor;
property BackgroundColors[ARect: TGridRect]: TsColor
read GetBackgroundColors write SetBackgroundColors;
property CellBorder[ACol, ARow: Integer]: TsCellBorders property CellBorder[ACol, ARow: Integer]: TsCellBorders
read GetCellBorder write SetCellBorder; read GetCellBorder write SetCellBorder;
property CellBorders[ARect: TGridRect]: TsCellBorders property CellBorders[ARect: TGridRect]: TsCellBorders
@ -1146,6 +1154,35 @@ begin
end; end;
end; end;
function TsCustomWorksheetGrid.GetBackgroundColor(ACol, ARow: Integer): TsColor;
var
cell: PCell;
begin
Result := scNotDefined;
if Assigned(FWorksheet) then begin
cell := FWorksheet.FindCell(GetWorksheetRow(ARow), GetWorksheetCol(ACol));
if (cell <> nil) and (uffBackgroundColor in cell^.UsedFormattingFields) then
Result := cell^.BackgroundColor;
end;
end;
function TsCustomWorksheetGrid.GetBackgroundColors(ARect: TGridRect): TsColor;
var
c, r: Integer;
clr: TsColor;
begin
Result := GetBackgroundColor(ARect.Left, ARect.Top);
clr := Result;
for c := ARect.Left to ARect.Right do
for r := ARect.Top to ARect.Bottom do begin
Result := GetBackgroundColor(c, r);
if Result <> clr then begin
Result := scNotDefined;
exit;
end;
end;
end;
function TsCustomWorksheetGrid.GetCellBorder(ACol, ARow: Integer): TsCellBorders; function TsCustomWorksheetGrid.GetCellBorder(ACol, ARow: Integer): TsCellBorders;
var var
cell: PCell; cell: PCell;
@ -1585,6 +1622,38 @@ begin
inherited; inherited;
end; end;
procedure TsCustomWorksheetGrid.SetBackgroundColor(ACol, ARow: Integer;
AValue: TsColor);
var
c, r: Cardinal;
begin
if Assigned(FWorkbook) then begin
BeginUpdate;
try
c := GetWorksheetCol(ACol);
r := GetWorksheetRow(ARow);
FWorksheet.WriteBackgroundColor(r, c, AValue);
finally
EndUpdate;
end;
end;
end;
procedure TsCustomWorksheetGrid.SetBackgroundColors(ARect: TGridRect;
AValue: TsColor);
var
c,r: Integer;
begin
BeginUpdate;
try
for c := ARect.Left to ARect.Right do
for r := ARect.Top to ARect.Bottom do
SetBackgroundColor(c, r, AValue);
finally
EndUpdate;
end;
end;
procedure TsCustomWorksheetGrid.SetCellBorder(ACol, ARow: Integer; procedure TsCustomWorksheetGrid.SetCellBorder(ACol, ARow: Integer;
AValue: TsCellBorders); AValue: TsCellBorders);
var var