请问关于TRect的功能和用法。(50分)

  • 主题发起人 主题发起人 舒克
  • 开始时间 开始时间

舒克

Unregistered / Unconfirmed
GUEST, unregistred user!
请问一下关于TRect的功能和用法。
比如这段程序中Rect的功能。
sncDBCurrencyInplaceEdit.Left := Rect.Left + DBGrid1.Left+2;
sncDBCurrencyInplaceEdit.Top := Rect.Top + DBGrid1.top+2;
sncDBCurrencyInplaceEdit.Width := Rect.Right-Rect.Left;
sncDBCurrencyInplaceEdit.Height := Rect.Bottom- Rect.Top;
 
Rect就是一个矩形区域呀

很难理解吗?
 
TRect defines a rectangle.
 
Trect准确的来说是一个结构
type
Trect=record
left : integer;
top : integer;
right : integer;
bottom : integer;
end;
通常在绘图过程中,我们利用它的四个属性变量来表示一块矩形区域
只要合适,当然在别的地方运用,
 
那么在我上面提到的程序中
sncDBCurrencyInplaceEdit.Left := Rect.Left + DBGrid1.Left+2;
为什么sncDBCurrencyInplaceEdit.Left要用Rect.Left + DBGrid1.Left+2呢?
Rect.Left + DBGrid1.Left+2;是起什么作用的?
 
你还要看前面的代码,比如, Rect 是窗口客户端在屏幕上的位置的话
DBGrid1.Left是DBGrid1在窗口里面的位置
2一般是边框的宽度
那么 Rect.Left + DBGrid1.Left+2 就是 DBGrid1 在屏幕的位置了
 
原代码如下,我不大看得懂,作用是把一个sncDBCurrencyInplaceEdit控件嵌到DBGRID中
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
OldColor, OldFontColor: TColor;
begin
if CheckCurrencyField(Column.FieldName) then
begin
if (gdFocused in State) then
begin
sncDBCurrencyInplaceEdit.Left := Rect.Left + DBGrid1.Left+2;
sncDBCurrencyInplaceEdit.Top := Rect.Top + DBGrid1.top+2;
sncDBCurrencyInplaceEdit.Width := Rect.Right-Rect.Left;
sncDBCurrencyInplaceEdit.Height := Rect.Bottom- Rect.Top;
SetHighLightColor;
if (sncDBCurrencyInplaceEdit.Tag=1) and not sncDBCurrencyInplaceEdit.Visible then
sncDBCurrencyInplaceEdit.Visible := True;
end
else
begin
OldColor := sncDBCurrencyInplaceEdit.Color;
OldFontColor := sncDBCurrencyInplaceEdit.Font.Color;
SetNormalColor;
DrawCurrencyFrame(DBGrid1.Canvas, Rect, sncDBCurrencyInplaceEdit, Column.Field.AsFloat);
sncDBCurrencyInplaceEdit.Color := OldColor;
sncDBCurrencyInplaceEdit.Font.Color := OldFontColor;
end;
end;
end;
 
sncDBCurrencyInplaceEdit的坐标是基于所在的Form的,DBGrid的坐标也是。
该函数里面的Rect参数坐标是基于DBGrid的,因为该函数是DBGrid的函数。
你自己算一算看把。
如果还是理解不了,建议不要学编程了。
 
多人接受答案了。
 
后退
顶部