想实现如上图的效果,我用了StringGrid,还在上边放了个ColorDialog,想实现点击左边颜色显示的单元格,然后出现ColorDialog供我选择,我选择后,单元格变成我所选择的颜色,该用什么控件,怎么实现,我是菜鸟,请大虾说清楚点,最好有代码可以参考,先谢谢啦!
解决方案 »
- delphi中图片保存后再使DBIMAGE显示总提示‘BITMAP IMAGE IS NOT VOLID'
- Delphi StringGrid同一个表格中,如何显示不同颜色的字
- 请求帮忙:去除数据中非整数的内容,程序正常了,怎么变成一个函数?
- 一个写record类型到filestream的难题。
- DBChart做统计图的问题
- 如何判断一个TImageEnDBView有没有图像?
- 请问在win98里面怎么像在win2000里面一样启动ftp服务那??我想用NMFTP控件在两台win98机器上面传送文件。来者有分!!!!!!
- 怎样定时扫描一个目录来判断这目录下的文件是不是增加了!
- messagedlg能不能显示中文?例如显示“确定”,而不是“ok”
- 请问abstract error是什么错误?
- IDHTTP遭遇奇怪网页的问题
- 为何出错
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
ColorDialog1: TColorDialog;
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormShow(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
private
{ Private declarations }
public
{ Public declarations }
str:TStrings;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
rr:TRect;
s:string;
begin
rr:=self.StringGrid1.CellRect(0,ARow);
if ARow>0 then
begin
s:=str.Strings[arow-1];
self.StringGrid1.Canvas.Brush.Color:=StringToColor(s);
self.StringGrid1.Canvas.FillRect(rr);
end;
end;procedure TForm1.FormShow(Sender: TObject);
var
i,j:Integer;
begin
str:=TStringList.Create;
str.Clear;
i:=self.StringGrid1.RowCount;
for j:=0 to i-1 do
str.Add('clwhite');
end;procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if ACol=0 then
begin
if Self.ColorDialog1.Execute then
str.Strings[arow-1]:=ColorToString(self.ColorDialog1.Color);
end;
end;
begin
if self.ColorDialog1.Execute then
(Sender as TPanel).Color:=self.ColorDialog1.Color;
end;
谢谢theforever(碧海情天)把复杂问题简单化,很值得学习!