如何使DBGRID的标题栏可分行显示?(100分)

  • 主题发起人 吕洞宾
  • 开始时间
DBGrid恐怕办不到,可是DBGridEh一定行的!
【bigroute】写的代码是正确地!
 
bigroute我试过了,还是不行,DBGRIDEH哪里有地方下载,要不给我发EMAL:LP224·163。COM
谢谢
 
以下是比较复杂的 OnDrawCell实现了分行显示,供参考

procedure TForm1.SgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
n:integer;
s,s1:string;
begin
if (gdfixed in state) and (ARow=0) then
begin
sg.Canvas.font.style:=sg.Canvas.font.style-[fsbold];
s:=sg.cells[acol,arow];
if (acol=0) then
begin
sg.Canvas.brush.color:=$ff00ff;
sg.Canvas.Rectangle(rect);
sg.Canvas.font.color:=$ff0000;
sg.Canvas.TextOut(4+rect.left,20+rect.Top,s);
exit;
end;

sg.Canvas.brush.color:=clSkyBlue;
sg.Canvas.Rectangle(rect);
n:=0;
while length(s)>n do
begin
s1:=copy(s,n+1,2) ;
if (pos('B',s1)>0)
or (pos('A',s1)>0)
or (pos('1',s1)>0)
then
sg.Canvas.font.color:=$0000ff
else
sg.Canvas.font.color:=$000000;
sg.Canvas.TextOut(4+rect.left,2+rect.Top+6*n,s1);
n:=n+2
end;
exit;
end;

if (gdFocused in state) then
begin
sg.Canvas.brush.color:=$00ffff;
sg.Canvas.Rectangle(rect);
sg.Canvas.font.color:=$000000;
sg.Canvas.font.style:=sg.Canvas.font.style-[fsbold];
sg.Canvas.TextOut(rect.left+2,rect.Top+2,sg.cells[acol,arow]);
exit;
end ;

if (gdfixed in state) and (ARow>0) then
begin
if arow=sg.row then
sg.Canvas.brush.color:=$00ffff
else
sg.Canvas.brush.color:=clMoneyGreen;
sg.Canvas.Rectangle(rect);
sg.Canvas.font.color:=$808000;
sg.Canvas.font.style:=sg.Canvas.font.style+[fsbold];
sg.Canvas.TextOut(rect.left+10,rect.Top+2,sg.cells[acol,arow]);
exit;
end ;
if strtoint('0'+trim(sg.cells[Acol,Arow]))=0 then
begin
sg.Canvas.brush.color:=$ff00ff;
sg.Canvas.Rectangle(rect);
exit;
end;
n:=strtoint('0'+trim(sg.cells[Acol,Arow]));
if (Arow<=nOfq) and (n>qs[aas[Acol-1].QesNo].n) then
begin
sg.Canvas.brush.color:=$0000ff;
sg.Canvas.Rectangle(rect);
sg.Canvas.font.color:=$000000;
sg.Canvas.font.style:=sg.Canvas.font.style-[fsbold];
sg.Canvas.TextOut(rect.left+3,rect.Top+2,sg.cells[acol,arow]);
exit;
end;
///////////////////////////////////////////////////
if (Arow<=nOfq) and not(valid(arow,acol)) then
begin
sg.Canvas.brush.color:=$00ff00;
sg.Canvas.Rectangle(rect);
sg.Canvas.font.color:=$000000;
sg.Canvas.font.style:=sg.Canvas.font.style-[fsbold];
sg.Canvas.TextOut(rect.left+3,rect.Top+2,sg.cells[acol,arow]);
exit;
end

end;
 
使用RxLib中的dbgridEn
http://vcl.vclxx.org/DELPHI/D32FREE/RX275D6.ZIP
 
下周把分数奉上!
 
刚看到,一会给你发邮件,你要 5 的还是 6 的。
 
要6。谢谢
 
我也要
我用的Delphi6
wjh107@sina.com
 
我也要
我用的Delphi6
cgh1970@etang.com
 
顶部