delphi 开发的系统,运行后,怎么样可以把所有活动的窗口名添加到ComboBox1,不能重复?
解决方案 »
- Delphi工程组织的困惑:DLL?BPL?
- Delphi怎样把图片保存到数据库中
- 请叫高手几个问题-等
- 怎么判断一个字符串中是否只有数字
- 怎样才能设置从TDBbedit继承下的来的自定义组件之属性(如:width,heigt,color等)
- 程序分成几个业务(package),通过主控程序动态加载各个package?
- QReport使用问题
- 一个很奇怪的问题
- 如何用sql从一个表的5列数据中的4列copy到另一个表中?请指教
- 又是一道概率论的问题。急。
- Delphi的stringGrid,ValueListEditor等表格相关
- Delphi如何根据选择的下拉菜单不一样,而读取SQL数据库相应的记录
我指的就是这些窗体的名字!
也就是我所说的,当前活动窗口只可能一个
如果你的窗口是静态的,你可起直接在ComboBox1中将名字预先加入(你设计时就知道窗口名了)
如果是动态的,正好我刚回过一贴
http://topic.csdn.net/u/20100423/16/6888ad13-3fa9-4486-aeff-f9e626e78bc4.html
第9#楼的,将窗口放入数组,用时做循环就可以了
用EnumWindows也是可以的,它是遍列当前系统所有窗口,然后用GetWindowThreadProcessId判是否是当前进程的
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
cmp : TComponent;
begin for i := 0 to Application.ComponentCount - 1 do
begin
cmp := Application.Components[i];
if cmp is TForm then
begin
if not TForm(cmp).Visible then
begin
ShowMessage(TForm(cmp).Name);
end;
end;
end; for i := 0 to Screen.FormCount - 1 do
begin
if not Screen.Forms[i].Visible then
begin
ShowMessage(Screen.Forms[i].Name);
end;
end;end;
上面的代码把隐藏的窗体列举出来了
判断是否最小化,同理。