小问题,请高手指教 (20分)

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

kmyan

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把widestring 转变为twincontrol类型?
我的qq:76318318,e-mail:yanxiaxu@163.net
 
小弟佩服谁能将
string类型(widestring )转换为object类型(twincontrol)
不可能吧?除非.....
function TForm1.getwincontrol(s: string): Twincontrol;
begin
result:= (Form1.FindComponent(s) as Twincontrol);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage( ( getwincontrol('edit1') as Tedit).text);
end;
 
不可能转化
 
谁说的?我想一定能
tw:=twincontrol('form1');
这句话编译没错,可……
 
还有这一段,在应用程序中可执行,但在dll里面就老出错,急得我……8<
procedure TForm1.abcPopupMenu1MenuCommand(Sender: TObject);
with Sender as TMenuItemdo
begin
Imna:=Caption;
strimename:=imna;

end;

end;
 
to l_x_yuan
好像还不行呀
1。如标题
2。如上
3。怎样通过一个循环,获得整个应用程序的窗体名称(不是应用程序,而是所有窗体名称)
谁要能把我的问题解决了,100伺候
 
好像不行吧!
 
Application.ComponentCount
if Application.Components is TForm...
kmyan, 给分吧。
 
楼上的可行,或再试试消息处理。
 
我很苯,只能帮你up.
如果把全体form浏览一遍,虽然不好,可是别的有什么办法。
 
to ARascal
我以前用的就是这个,有没有更好的方法
 
procedure TForm2.Button1Click(Sender: TObject);
var
i: Integer;
begin
//这两种方法的效果是一样的。通过RTTI来实现。所有没有创建的
//Form不能找到
for i := 0 to Screen.FormCount - 1do
begin
ListBox1.Items.Add(Screen.Forms.Name);
end;

for i := 0 to Application.ComponentCount - 1do
if Application.Components is TForm then
ListBox1.Items.Add(TForm(Application.Components).Name);
end;
 
好象可以先将所有的所须的窗体,控件注册
RegisterClass([TForm1,TForm2,...,TEdit]);
然后再在要使用窗体的时候使用
findeclass(...)
 
谢谢大家的帮助
 
多人接受答案了。
 
后退
顶部