用delphi怎样来激活外部窗口?(100分)

  • 主题发起人 主题发起人 dongfeg
  • 开始时间 开始时间
D

dongfeg

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟进段时间在用vfp,有一组按钮,每个按钮可以调用不同的窗口出来.
如果该窗口已存在,那么就就将它激活成为当前窗口.在vfp中怎样激活呢?如果vfp没有办法
实现,用delphi如何来实现呢?

小弟是菜鸟,望大哥大姐帮忙解答了.谢谢!
 
form1.show;
form1.showmodel;这个是显示模式窗体
 
用HOOK呀,在DFW上检索一下多的是
 
IF YOURFORM<>NIL THEN
YOURFORM.SHOW;
 
在delphi中,用:if assigned(yourform) then yourform.show
 
樓上諸位兄弟,我說的是怎樣用delphi來激活vfp中的窗口,
目前我能夠傳遞給delphi的參數就是窗口的標題,
也就是說給delphi程序一個窗口標題的參數,用delphi來激活此窗口
 
form.bringtofront
 
创建一个工程,生成四个form,在第一个form(form1)上加三个按钮;
再将form1的oncreate 事件赋上;

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
formclass=class of tform;

TForm1 = class(TForm)
Button2: TButton;
Button3: TButton;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
MyFormClass:array[1..3]of formclass;

implementation

uses Unit2,Unit3,Unit4;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
MyFormClass[1]:=tform2;
MyFormClass[2]:=tform3;
MyFormClass[3]:=tform4;

//这些内容只是为作讲解用,写程序不用这么罗索
Button1.onclick:=Button1Click;
button1.Tag :=1;
Button2.onclick:=Button1Click;
button2.Tag :=2;
Button3.onclick:=Button1Click;
button3.Tag :=3;
end;


procedure TForm1.Button1Click(Sender: TObject);
var buttontag:integer;
begin
buttontag:=(sender as tbutton).tag;

if MyFormClass[buttontag]<>nil then
with MyFormClass[buttontag].create(self) do begin
ShowModal;
free;
end;
end;

end.
 
感想大家的关心,这个问题小弟终于还是自己解决了,
美中不足的是当调用新窗口出来时候有些微抖,
毕竟是外部程序,到底还是不如vfp自己来的解决的好.
如果有大侠知道在vfp中如何取得窗口的句柄,并将它显示在最上面请通知小弟.
小弟用的delphi代码如下:

program actiwind;

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

{$R *.RES}

var winHandle:THandle;

begin
Application.Initialize;
if paramCount=1 then
begin
winHandle:=findwindow(nil,pchar(paramstr(1)));
if winHandle<>0 then
SetForegroundWindow(winHandle);
end;
application.Terminate;
end.

分数不多,来者有份,多谢了!
 
后退
顶部