-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. 如何在Excel中選擇具有設置單元格顏色的日期?
- 3. 更改NatTable單元格選擇顏色
- 4. 使用VBA在Excel中設置相同的單元格顏色,在主題顏色中顯示選區
- 5. 用戶在TStringGrid中編輯單元格
- 6. Excel:使用rgb設置單元格和文本顏色的背景顏色
- 7. 如何在網格中設置交替單元格顏色
- 8. 如何使用VBA設置Excel單元格的背景顏色?
- 9. 如何使用JExcel API設置單元格的顏色
- 10. 如何在運行時設置jqgrid單元格顏色
- 11. 在CodenameOne中設置日曆單元格的背景顏色
- 12. 如何在xcode6中設置表單元格的顏色?
- 13. 如何設置DataGridView中單個單元格的背景顏色?
- 14. UITableView,選擇顏色與藍色不同的單元格?
- 15. 當單元格選中時更改單元格的顏色
- 16. 從數據庫中設置表格單元格顏色
- 17. 如何在NSTableView中使用NSButtoncell類型設置單元格的背景顏色?
- 18. 在Excel中使用pywin32設置單元格的填充RGB顏色?
- 19. 在應用程序級設置WPF數據網格選擇的行顏色
- 20. 設置選擇jbutton的背景顏色
- 21. 如何在表格視圖單元格中設置色調/高光顏色?
- 22. 使用winforms的顏色excel單元格
- 23. 使用的單元格背景顏色
- 24. 如何在TableView上設置單元格的顏色?
- 25. 如何設置HandOnTable中每個單元格的背景顏色?
- 26. 設置JTable中JCheckBox單元格的顏色
- 27. 的Silverlight 3.0網格行選擇顏色
- 28. UITableView靜態單元格 - 選擇顏色不起作用
- 29. 如何使用java + poi在excel中設置單元格背景顏色
- 30. 如何在選中單元格時設置JTable標題背景顏色
記住行狀態(在某些集合),當用戶按下空格鍵,更新該狀態併爲網格調用「Invalidate」。最後,在OnDrawCell事件中,通過其狀態繪製行的單元格。 – TLama
[設置TStringGrid上選定行的背景顏色](http://stackoverflow.com/q/5575713/62576)不幫你? –