这个类中要使用的TEDIT控件,其Parent该指向谁?(50分)

  • 主题发起人 主题发起人 SYT
  • 开始时间 开始时间
S

SYT

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友:
你们好!
我正在开发一个矢量图形编辑软件,软件中所有的图形操作全部封装在我自定
义的类中:
TYPE
TMyBox=class(TPaintBox) //将绘图操作封装在TMyBox
private
aFontEdit :TEDIT; //输入文字
ycLabel :TLABEL; //输入YC
......
protected
public
Constructor Create ;
procedure MyMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

...
end;

VAR
aPic : array[0..5000] of TPIC; //存放矢量图形
Box : TMyBox; //所有的绘图全在此进行
implementation
uses Main,Common;

Constructor TMyBox.Create;
BEGIN
aFontEdit:=TEDIT.Create(self);
aFontEdit.BorderStyle:=bsNone;
aFontEdit.Text:='';
ycLabel:=TLABEL.Create(self); //显示遥测量时缺省值
ycLabel.Transparent:=True;
ycLabel.Font.color:=clBlack;
ycLabel.Font.Size:=10;
ycLabel.Font.Name:='Arial';
inherited Create(nil);
END;

大家看到了类中使用了一个aFontEdit变量,该变量为TEDIT型,其作用是在
图形编辑软件中用来输入文字,即只要鼠标在屏幕上点一下就可以在相应位
置弹出一个编辑框即aFontEdit,用下列程序实现:

procedure TMyBox.MyMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var i:integer;
begin
if length(Trim(aFontEdit.Text))<>0 then WriteFontToPic(Point(aFontEdit.left,aFontEdit.Top));
aFontEdit.Visible:=True;
aFontEdit.Width:=72;
aFontEdit.Height:=aFont.Height;
aFontEdit.Color:=clYellow;
aFontEdit.Left:=x;
aFontEdit.top :=y;
aFontEdit.Text:='';
aFontEdit.Parent:=self.Parent;
aFontEdit.SetFocus;
end;
该MyMouseDown 方法是当鼠标左键按下后就可调用的
只可惜aFontEdit并未在屏幕上显示出来。但通过其他方法检查
我从键盘输入的字符确已进入了aFontEdit中,只是未显示出来而已。
请问我该如何指定aFontEdit的Parent属性?

 
你为TMyBox增加一个属性Parent:TWinControl read GetParent write WriteParent,
在procedure WriteParent(AParent:TWinControl)设置TEdit等控件的Parent属性.
 
谢谢你!沈,但不知如何写WritePatent程序 aFontEdit.Parent:=Self.Parent
可以吗?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部