根据条件选择对应窗口 ( 积分: 50 )

  • 主题发起人 主题发起人 wangfeisfw
  • 开始时间 开始时间
W

wangfeisfw

Unregistered / Unconfirmed
GUEST, unregistred user!
一个主程序,如何在打开子窗口时根据某个条件选择打开对应的窗口!!!
分不够再加!!!!!!!!!
 
一个主程序,如何在打开子窗口时根据某个条件选择打开对应的窗口!!!
分不够再加!!!!!!!!!
 
不太明白你的条件是什么?

1.直接if..else
2.通过字符串或者Tag(Integer)来驱动打开某个窗体
3.使用工厂模式
 
if true then
begin
form2 := TForm2.create(Application);
form2.showmodal;
end else
begin
form3 := TForm3.create(Application);
form3.showmodal;
end;
 
学习;

以前根据条件直接show就可以了;
 
根据什么条件?时机呢?
程序一开始?
那在工程主文件中处理才行
 
是根据表里的一个字段的值,选择打开对应的窗体,这个值就是窗体名,清楚了吗?
 
那还不是一样?!
if Query1.FieldByName('字段名').AsString = 'Form1' then
begin
with TForm1.Create(Application) do
begin
...
Show;
end;
end
else
...
 
我是说不用判断,直接把变量名赋给窗口,可不可以
 
可以!form1.caption:=trim(Query1.FieldByName('字段名').AsString)//
但关键在于你这样做有什么意思;
首先,按你说的‘打开子窗口时根据某个条件选择打开对应的窗口!!!‘
说明这窗口应该是已经建立好的,那么。窗口应该就已经有名字了,干吗要在赋给窗口
其次,窗口还没建立,那么也就没有什么根据某个条件选择打开对应的窗口,因为你窗口都
还没生成。
还有一种情况,你可以在’打开子窗口时根据某个条件‘这个事件中建立窗口;
begin
with TForm1.Create(Application) do
begin
form1.caption:=trim(Query1.FieldByName('字段名').AsString)// ...
Show;
end;
 
不好意思,我的意思就是说窗口已经建好了,只是根据字段值打开它,但不是用判断的!这样可以吗
 
with 表名 do
begin
if not(Assigned(FieldByName('字段名').AsString) then
窗体.Create(self)
窗体.show;
end;
 
终于明白你的意思!!!
var
HWndWindow : HWnd;
begin
// find the exist window
HWndWindow := FindWindow(nil,表名.FieldByName('字段名').AsString );
if HWndWindow <> 0 then
// Show the exist window
SendMessage(HWndWindow, WM_SHOW, 0, 0);
end;
 
micro_wave大哥:
用你的办法,提示错误:Incompatible types:'string' and 'Pchar'
怎么回事啊!!!
 
TO micro_wave:
SendMessage(HWndWindow, WM_SHOW, 0, 0)
好像没有WM_SHOW这样的消息标识符?
 
对不起,以下是经过测试的程序
var
HWndWindow : HWnd;
begin
// find the exist window
HWndWindow := FindWindow(nil,pchar(表名.FieldByName('字段名').AsString ));
if HWndWindow <> 0 then
// Show the exist window
showwindow(HWndWindow,SW_show);
end;
 
接受答案了.
 
后退
顶部