求教: 关于窗口的标题!! 两周了 竟然还没有解决!!!嫌分少可以加 (100分)

  • 主题发起人 主题发起人 karxios
  • 开始时间 开始时间
K

karxios

Unregistered / Unconfirmed
GUEST, unregistred user!
对于静态创建的窗口 用form1.caption:='asdasdad'; 就可

但是对于动态创建的应该怎么办?

注:我现在修改了提问 ,请看我后面的留言
 
1.var a:=tform;

....
a:=tform.create......
a.caption:='xxx'

2.
with tform.create do
caption:='xxxx'
 
to menxin:

你理解错我的意思了. 比如 form2是动态创建的, button2是form2的一个按钮, 你在button2.click
中写form2.caption:='dssadas' 是不行的
 
当然是在创建之后,
就给它写标题咯就像menxin所写的。
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Form2) then
begin
Form2:=TForm2.Create(Application);
Form2.ShowModal;
Form2.Free;
Form2:=Nil;
end;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Caption:='TEST CHANGE CAPTION';
end;
 
procedure TForm2.button2click(Sender: TObject);
begin
Self.Caption := 'asdfasf';
end;
 
可以搞个数组或者LIST什么的记录起来嘛!
如果是改本窗口的标题直接用Caption := 'asdfasdf';就行了,还搞那么多动作做什么?
 
setwindowtext
 
用SetWindowText();
BOOL SetWindowText( your form .handle, Pchar );
 
重载Form初始化函数,创建时调用,将初始化的名称赋于Caption即可
 
我的问题还没有解决 前面的说的几位都把问题想简单了 ,自己作一下就知道为什么

coaco的我不懂,能详细些吗?
 
很简单的。已经有人答了。
以下是form1的代码。
Unit2是form2
注释的代码同样可以实现。
除了以下代码,通过form2的OnCreate,OnShow也行
uses
Unit2;

procedure TForm1.Button1Click(Sender: TObject);
var
frm2 : TForm2;
begin
frm2 := Tform2.Create(self);
// frm2.Caption := 'new';
setWindowText(frm2.Handle,'new');
frm2.ShowModal;
end;
 
TForm2 *newform
newform = new TForm2(this)
newform->Caption = "Asdf";
newform->button1->onclick();
 
靠!!!!!!!!! 我要怒了 , 不要太污辱我了 好歹我也用delphi一段时间了 ,我可能是
因为不知道什么caption属性吗 ?拿我当小孩子吗? 对某几个人的回答我生气了
我是不是把问题没有说清楚? 那我再说一次,我不是要new一个新的窗体,因为我的程序中有
十几个窗体,里面都有内容,有一个是主窗体(在project-. option 设为auto-created forms,) 其他的
为节省资源在 project- option 设为available forms,现在那些available的form的caption
怎么改 我试过无论怎么写,通过,****.caption:='%#%$#%'是改不了的

还有请大家不要想当然 你自己试试!!!ok??
~~~~

 
也许这个可以:
procedure TForm2.button2click(Sender: TObject);
var
MyForm: TComponent;
begin
MyForm := Button2.Parent;
while not (MyForm is TForm) do
MyForm := MyForm.Parent;
MyForm.Caption := 'asdfasf';
end;
 
1、回答问题的人大多无非都是想帮你而已,你也不用想得太多,更不用生气。
2、上面诸位的回答应该来说是可以解决你的问题的了,如果还是不行,说明
 是我们没理解你问题的意思或者你没有描述清楚。
3、我再看了一遍,看你在上面提到了在Form2的ButtonCLick时给Form2.Caption
 赋值,有时可能是不行的,因为你有可能把Form2指向了另一个TForm2的实例
 所以在ButtonClick里应该写Self.Caption := XXx,当然,Self是可省略的。
 最后,一般动态创建Form的时候都应该把Form的全局变量删除的,因为这个全
 局变量一般用不上,有时反而会引起误解(就是Delphi自动为你生成的那个窗
 体的类变量,如var Form1: TForm1;)
如果还是无法解决你的问题,你就把代码贴出来吧,DFW里这么多人,应该没有解
决不了的技术问题。[:D]
 
我上面的代码不是很清楚了吗?
如果还不明白。
我可以发例子给你。
 
你的问题说得不太明白。通过****.caption:='%#%$#%'为什么改不了?会出什么问
题?会报非法页面访问地址错误吗?还是根本没反应?
如果你不说在 project- option 设为available forms,我也会象前面那些人那样
答你。

available forms你创建了吗?莫非你的窗口还没有创建你就要改它?那你也太强了,
这个我不会。如果创建了还不能改(或有错误),那就奇怪了。
 
我已经试过了,下面的代码是可行的,如果在你的机器上不行,应该考虑是不是你的Delphi有问题了。

procedure TForm1.Button1Click(Sender: TObject);
begin
if Assigned(Form2) then
begin
Form2.Caption:='测试';
Form2.ShowModal;
end
else
begin
Form2:=TForm2.Create(Application);
Form2.Caption:='测试';
Form2.ShowModal;
end;
end;
 
向大家认错!
原来是我的某个地方写错了 正tmd笨!

谢谢大家
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部