我在dbgrid想实现如下功能:
总体能够随意控制某行某列的情况。
比如:
1 控制i行j列的cell的readonly情况,随意控制
2 控制i行j列的cell的输入数据的格式情况,数值、日期或者其他
3 控制i行j列的cell的背景情况,突出显示为某种颜色、某种字体等。本人对dephi关于dbgrid的控制不是很了解,碰到这个问题好久了,一直没有解决。
希望各位能不吝赐教!谢谢了
总体能够随意控制某行某列的情况。
比如:
1 控制i行j列的cell的readonly情况,随意控制
2 控制i行j列的cell的输入数据的格式情况,数值、日期或者其他
3 控制i行j列的cell的背景情况,突出显示为某种颜色、某种字体等。本人对dephi关于dbgrid的控制不是很了解,碰到这个问题好久了,一直没有解决。
希望各位能不吝赐教!谢谢了
解决方案 »
- 如何读取xml文件并将数据写到sql server 2000中
- 为什么我的三层结构程序,运行一段时间后,客户端会出现内存不足连接不上
- 我只想用一个控件选择年份月份?怎么办?
- 时间控件显示时间?不懂啊救命啦
- 怎样判断一个窗口是否已经被创建。给100分,急!在线等待。
- 这条语句该怎么写?
- 寻找:“速递行业的物流系统”试用版;目的:想学习开发多层应用系统!只是想简单的看看这种物流系统
- Indy 9.0 released
- TMemo
- 请问那里有中文的API函数下载
- operation is not allowed on an object referencing a closed or invalid connection
- 请问如何实现串口监视
也可以控制输入数据的格式情况,数值、日期或者其他。
自己试试吧,呵呵
也可以控制输入数据的格式情况,数值、日期或者其他。
自己试试吧,呵呵具体实现呢?
请参考以下代码:
在OnDrawCell事件中处理背景色。程序如下:
//将第二列背景变为红色。
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if not((acol=1) and (arow>=stringgrid1.fixedrows)) then exit;
with stringgrid1 do
begin
canvas.Brush.color:=clRed;
canvas.FillRect(Rect);
canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow])
end;
end;//加入如下代码,那么StringGrid的第四列就只读了.其他列非只读
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
with StringGrid1 do begin
if ACol = 4 then
Options := Options - [goEditing]
else Options := Options + [goEditing];
end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
dx,dy:byte;
begin
if (acol = 4) and not (arow = 0) then
with stringgrid1 do
begin
canvas.Brush.color := clYellow;
canvas.FillRect(Rect);
canvas.font.color := clblue;
dx:=2;//调整此值,控制字在网格中显示的水平位置
dy:=2;//调整此值,控制字在网格中显示的垂直位置
canvas.TextOut(rect.left+dx , rect.top+dy , cells[acol, arow]);
end;
//控制标题栏的对齐
if (arow = 0) then
with stringgrid1 do
begin
canvas.Brush.color := clbtnface;
canvas.FillRect(Rect);
dx := 12; //调整此值,控制字在网格中显示的水平位置
dy := 5; //调整此值,控制字在网格中显示的垂直位置
canvas.TextOut(rect.left + dx, rect.top + dy, cells[acol, arow]);
可是在dbgrid控制如何实现呢?