前提:
有两个窗口Form1和Form2,点击form1上的按钮button1会动态生成3个form2,并给form2上的Edit1.Text附值.form2有两个动作,一是改变窗体form2的AlphaBlendValue的值;二是取得form2上的Edit1.Text的值.问题:
1.Form2上为什么要定义var Form2:TForm2这样的变量.如果不定义,出现的3个窗口中无论鼠标移到那个窗口中只有其中固定的一个窗体发生变化,只有这样定义3个窗口才能分别发生改变.
2.在3个Form2上我如何取得各自的Edit1.Text的值.程序如下:窗体Form1上的程序:procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
Form:array of TForm2;
begin
SetLength(Form,3);
for i:=0 to 2 do
begin
form[i] := TForm2.Create(Application);
form[i].Show;
form[i].Edit1.Text:='123';
end;
end;窗体Form2上的程序:procedure TForm2.GroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var Form2:TForm2;
begin
Form2.AlphaBlendValue:=255;
end;procedure TForm2.FormShow(Sender: TObject);
begin
Panel1.Caption:=Form2.Edit1.Text;
end;
有两个窗口Form1和Form2,点击form1上的按钮button1会动态生成3个form2,并给form2上的Edit1.Text附值.form2有两个动作,一是改变窗体form2的AlphaBlendValue的值;二是取得form2上的Edit1.Text的值.问题:
1.Form2上为什么要定义var Form2:TForm2这样的变量.如果不定义,出现的3个窗口中无论鼠标移到那个窗口中只有其中固定的一个窗体发生变化,只有这样定义3个窗口才能分别发生改变.
2.在3个Form2上我如何取得各自的Edit1.Text的值.程序如下:窗体Form1上的程序:procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
Form:array of TForm2;
begin
SetLength(Form,3);
for i:=0 to 2 do
begin
form[i] := TForm2.Create(Application);
form[i].Show;
form[i].Edit1.Text:='123';
end;
end;窗体Form2上的程序:procedure TForm2.GroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var Form2:TForm2;
begin
Form2.AlphaBlendValue:=255;
end;procedure TForm2.FormShow(Sender: TObject);
begin
Panel1.Caption:=Form2.Edit1.Text;
end;
begin
AlphaBlendValue:=255;
end;
begin
Panel1.Caption:=Edit1.Text;
end;
窗体Form1上的程序:procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
Form:array of TForm2;
begin
SetLength(Form,3);
for i:=0 to 2 do
begin
form[i] := TForm2.Create(Application);
form[i].Show;
form[i].Edit1.Text:='123';
end;
end;
窗体Form2上的程序:procedure TForm2.GroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var Form2:TForm2; //不用定义这个变量
begin
Form2.AlphaBlendValue:=255; //修改为Self.AlphaBlendValue := 255;
end;procedure TForm2.FormShow(Sender: TObject);
begin
Panel1.Caption:=Form2.Edit1.Text; //修改为Panel1.Caption := Self.Edit1.Text;
end;
form[i].Edit1.Text:='123';
改为
form[i].Edit1.Text:='123';
form[i].Show;
keyz(keyz)的和二个回答,是不行的,正常的写法是这样的取不到值.gobiz(拔剑容易收剑难) 的回答利用self可以不用再定var Form2:TForm2这个了第一个问题解决,但第二问题,利用Panel1.Caption := Self.Edit1.Text;这个,依然取不到值.另Self.Panel1.Caption := Self.Edit1.Text;这样也取不到.
-----------------------------------------------------------------------------------
针对这个问题,你只需要好好再看一下你自己些的代码就明白了,你是在Form2的FormShow事件中获取的Edit1.Text,但是你的调用是先执行了FormShow事件(form[i].Show),这个时候你的Edit1.Text还没有赋值,你怎么能得到呢?应该先执行form[i].Edit1.Text := '123',然后再执行form[i].show事件!
OnMouseDown
OnMouseMove
OnMouseUp
OnMouseWheel
OnMouseWheelDown
OnMouseWheelup
这几个事件,可是我想要做鼠标离开某个控件的动作,如何完成啊?给个思路就行.
还有没有其它的鼠标事件啊?
怎么我把顺序换过来,panel1.caption还是不能得到‘123’????