如何使TStringGrid中的内容右对齐?<br>如何知道当前TStringGrid的聚焦位置?(100分)

  • 主题发起人 主题发起人 php2
  • 开始时间 开始时间
P

php2

Unregistered / Unconfirmed
GUEST, unregistred user!
1、如何使TStringGrid中的内容右对齐?
2、如何知道当前TStringGrid的聚焦位置?
  我已经限制了TStringGrid只能选择整行,但是不知道如何确定当前聚焦的行,和
使另一行聚焦。
 
1. OnDrawCell
2. Row, Col属性
 
1.选择一个改进后的StringGrid控件,可以直接操作
2.StringGrid控件的Row,Col属性
 
procedure showselect(object:tobject);
var
c,r:longint;
begin
c:=stringgrid1.Col;
r:=stringgrid1.row;
showmessage(inttostr(c)+','+inttostr(r));
end;
 
1.假定让第二列的内容右对齐,在StringGrid的OnDrawCell里——

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
R: TRect;
begin
with StringGrid1, StringGrid1.Canvas do begin
FillRect(Rect);
R := Rect;
InflateRect(R, -2, -2);
if ACol = 1 then DrawText(Handle, PChar(Cells[ACol, ARow]),
Length(Cells[ACol, ARow]), R, DT_RIGHT)
else TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
end;
end;

——注意这时候StringGrid的DefaultDrawing不要设为False。
 
dq:
  是否可以加点注解???
 
好说——
FillRect(Rect);//清除原有内容
R := Rect;//R用来限定文字显示区域
InflateRect(R, -2, -2);//为文字边缘留些空隙
if ACol = 1 then DrawText(Handle, PChar(Cells[ACol, ARow]),
Length(Cells[ACol, ARow]), R, DT_RIGHT)//DrawText是个API,第一个参数是Canvas的句柄,最后一个参数可以控制右对齐
else TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);//其它列的正常显示
 
看看这个。
<a href="DispQ.asp?LID=433156" title="来自:BaKuBaKu">EasyGrid 已经上载到 robertcool.top263.net,需要的朋友可以免费下载!</a>
 
多人接受答案了。
 
后退
顶部