DBGrid 我要实现两个功能 一个就是在列头
1
2
3
4 这样在列头上显示序号还有一个就是 查出来的数据的背景颜色 第一个是白的 第二个是灰的 第三个白的 第四个灰的这样方便辨认
就这两个 我不知道该怎么百度 复杂吗?
1
2
3
4 这样在列头上显示序号还有一个就是 查出来的数据的背景颜色 第一个是白的 第二个是灰的 第三个白的 第四个灰的这样方便辨认
就这两个 我不知道该怎么百度 复杂吗?
解决方案 »
- 关于delphi2007中listview的问题!
- 对于跳出 invalid pointer operation 的错误,是否有方法能跟踪问题在哪里?
- fastreport做的报表存入到acess数据库的OLE对象(为长二进制数据),可我取不出来(别人存的),弹出"不支持的frf格式"?大虾们,我
- 在delphi7+indy 10下如何实现MD5加密?
- 【散分】好久没来了,狂散【散分】
- 我快疯了,各位大师请赐教!急!
- 那位能帮我解释一下Inherited的语法?
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 因为毕业答辩 急需各位高手滴帮助 有谁愿意帮我完成一个关于超市销售商品的界面呢 拜托!偶是菜鸟 万分感
- 有时刚编的程序会莫名其妙的不能运行,是改过一些但总该有提示吗?
- 一个数据库里面存放着退了休的人员的资料 ,其中有夫妇,我想把夫妇从数据库里面找出来,
- 请教WebServices做3层的数据库应用
- treeview对数据库数据的读取!已完成附DEMO,求简化代码,感觉自己写的笨笨的!~~~
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DBGrid1.DataSource.DataSet do
begin
if DataCol = 0 then //設置在第一列
begin
if state<>dsInsert then i:= recno; //這句是關鍵
DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, IntToStr(i));
inc(i); //將i加1
end;
end;
end;
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin //狀態改變時將i置為1
i:=1;
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.AsInteger < 75 then begin
DBGrid1.Canvas.Font.Color := clWhite;
DBGrid1.Canvas.Brush.Color := clRed; //这里设置单元格填充色
DBGrid1.Canvas.FillRect(Rect); //这里对相应的单元格进行北景色填充
end;
//输出内容
DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;
第二个:就是交替色嘛:在你DBGrid的OnDrawColumnCell事件中,根据你第一个问题的结果来实现,或者直接就用你数据集的RecNo来实现
if YourDataSet.RecNo mod 2 = 0 then
DBGrid1.Canvas.Brush.Color:= clGrayText;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
DataCol看不到么???????
begin
Table1.FieldbyName('a1').AsInteger :=Table1.RecNo;
if Table1.FieldbyName('a1').Asinteger=-1 then
Table1.FieldbyName('a1').AsInteger := 1;
end;所有的全是1
begin
Table1.FieldbyName('a1').AsInteger :=Table1.RecNo;
//if Table1.RecNo=-1 then 这样子?你的意思是结果集是空的时候,不要显示行号?那就找下面写的做就可以,不用在这里赋计算字段的值
// Table1.FieldbyName('a1').AsInteger := 1;
end;你用的BDE的Table是吧?,计算字段是a1,在a1的OnGetText事件里写代码
procedure TF_TForm1.Table1a1GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Sender.AsInteger=-1 then
Text:=''
else
Text:=Sender.AsString;
end;
// Table1.FieldbyName('a1').AsInteger := 1;procedure TF_TForm1.Table1a1GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Sender.AsInteger=-1 then
Text:=''
else
Text:=Sender.AsString;
end;结果那一列什么都没显示了 我又重新做的按飞飞的那个做的 结果全是-1 两种我都做都搞不定了 闷闷中
ADOQuery1.FieldbyName('a1').AsInteger :=ADOQuery1.RecNo;
if ADOQuery1.FieldbyName('a1').Asinteger=-1 then
ADOQuery1.FieldbyName('a1').AsInteger := 1;
end;是对的 我忘记了new field。 脑袋已经全都乱了 ~~ 飞飞那个方法我还要继续研究 我这个用的 Query 没用table 我还是想用TABLE来实现