-1
A
回答
0
TSelColor = class
public
Color: TColor;
constructor Create(const aColor: TColor);
end;
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
kPressed: boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
yourColor: TColor;
begin
yourColor:= clRed;
if gdFixed in State then
TStringGrid(Sender).Canvas.Brush.Color:= clBtnFace
else if gdSelected in State then
begin
TStringGrid(Sender).Canvas.Brush.Color:= clAqua;
if kPressed and not (TStringGrid(Sender).Objects[ACol, ARow] is TSelColor) then
TStringGrid(Sender).Objects[ACol, ARow]:= TSelColor.Create(yourColor)
else if kPressed and (TStringGrid(Sender).Objects[ACol, ARow] is TSelColor) then
TStringGrid(Sender).Objects[ACol, ARow]:= nil;
end
else
begin
TStringGrid(Sender).Canvas.Brush.Color:= clWindow;
if TStringGrid(Sender).Objects[ACol, ARow] is TSelColor then
TStringGrid(Sender).Canvas.Brush.Color:= TSelColor(TStringGrid(Sender).Objects[ACol, ARow]).Color;
end;
TStringGrid(Sender).Canvas.FillRect(Rect);
TStringGrid(Sender).Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, TStringGrid(Sender).Cells[ACol, ARow]);
end;
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 32 then
begin
kPressed:= true;
StringGrid1.Repaint;
kPressed:= false;
end;
end;
{ TSelColor }
constructor TSelColor.Create(const aColor: TColor);
begin
inherited Create;
Color:= aColor;
end;
StringGrid1
DefaultDrawning [虛假] Options.goRowSelect [真]
相關問題
- 1. 在TStringGrid上設置選定行的背景顏色
- 2. Handsontable使用顏色選擇器更改單元格/行/列的顏色?
- 3. 設置單元格背景顏色時選擇 - Swift
- 4. 更改TStringGrid單元格中文本的顏色
- 5. 設置行中每個表格單元格的顏色
- 6. 設置格式單元格顏色的主題顏色
- 7. 如何在Excel中選擇具有設置單元格顏色的日期?
- 8. 從單擊該行內的任何單元格中選擇TStringGrid中的一行。
- 9. 更改NatTable單元格選擇顏色
- 10. 使用VBA在Excel中設置相同的單元格顏色,在主題顏色中顯示選區
- 11. 設置表單元格顏色
- 12. 設置Fullcalendar單元格背景顏色
- 13. Excel:使用rgb設置單元格和文本顏色的背景顏色
- 14. 用戶在TStringGrid中編輯單元格
- 15. 如何在網格中設置交替單元格顏色
- 16. 使用設置單元格顏色的Excel 2010 VBA
- 17. 如何使用VBA設置Excel單元格的背景顏色?
- 18. 使用ExcelPackage設置單元格的顏色
- 19. 使用Apache POI設置Excel單元格的RGB背景顏色
- 20. 如何使用iText設置表格單元的背景顏色?
- 21. 如何使用JExcel API設置單元格的顏色
- 22. 在單個DataGridView中設置兩種顏色文本單元格
- 23. 如何設置單元格背景顏色在jqgrid中的單元格值baced?
- 24. 如何在運行時設置jqgrid單元格顏色
- 25. 在CodenameOne中設置日曆單元格的背景顏色
- 26. 如何在DataGridView中設置單元格的字體顏色?
- 27. 如何在xcode6中設置表單元格的顏色?
- 28. 如何設置DataGridView中單個單元格的背景顏色?
- 29. iphone sdk留在單元格的選擇顏色在UItableview?
- 30. 使用Unity Editor顏色選擇器在代碼中設置顏色值
記住行狀態(在某些集合),當用戶按下空格鍵,更新該狀態併爲網格調用「Invalidate」。最後,在OnDrawCell事件中,通過其狀態繪製行的單元格。 – TLama
[設置TStringGrid上選定行的背景顏色](http://stackoverflow.com/q/5575713/62576)不幫你? –