新手,子窗口怎么调用父窗口的方法
新手求助,子窗口如何调用父窗口的方法
如题,本人delphi菜鸟,现在用delphi写了一个简易浏览器(被逼的),然后又因为要通过js和应用程序进行一些交互,因此做了一个扩展。
现在问题出来了,我想在这个扩展的方法中调用主窗口的方法,以此来控制各种组件的状态。
请教各位大侠,我该怎么做,最好能给出代码片段,小弟感激不尽。。
------解决方案--------------------
主窗口的一个控件显示出来?显示到子窗口上?
uses Main;
procedure TMyExternal.SetVideoOpen;
begin
mainform.控件名称.Visible := true;
end;
又或者是:mainform.控件名称.Parent := self; ???
没怎么理解,不知道对不对
------解决方案--------------------
------解决方案--------------------
给Application.MainForm发送消息,mainform实现该消息的处理函数,主窗自行控制组件状态。需要传额外信息,可将消息的LParam或wParam利用起来。
------解决方案--------------------
最简单的,比如你的主窗体是Form1,单元名是unit1,则
uses unit1;
Form1.XXOO.visible:=True;
如题,本人delphi菜鸟,现在用delphi写了一个简易浏览器(被逼的),然后又因为要通过js和应用程序进行一些交互,因此做了一个扩展。
- Delphi(Pascal) code
unit UMyExternal; interface uses Classes, ComObj, Article22_TLB,Windows, Messages, SysUtils, Variants, Graphics,Controls, Forms, Dialogs, OleCtrls, SHDocVw, ComCtrls, StdCtrls,IniFiles,ActiveX,MSHTML; type TMyExternal = class(TAutoIntfObject, IMyExternal, IDispatch) private fData: TStringList; // info from data file procedure ShowSBMsg(const Msg: string); // helper method protected { IMyExternal methods } function GetPrecis(const ProgID: WideString): WideString; safecall; procedure ShowURL(const ProgID: WideString); safecall; procedure HideURL; safecall; procedure flashShow; safecall; procedure flashHide; safecall; procedure SetVideoOpen; safecall; public constructor Create; destructor Destroy; override; end; implementation uses StdActns; { TMyExternal } procedure TMyExternal.SetVideoOpen; begin // 就是这里,我想让主窗口的一个控件显示出来,应该怎么做。。 end; constructor TMyExternal.Create; var TypeLib: ITypeLib; // type library information ExeName: WideString; // name of our program's exe file begin // Get name of application ExeName := ParamStr(0); // Load type library from application's resources OleCheck(LoadTypeLib(PWideChar(ExeName), TypeLib)); // Call inherited constructor inherited Create(TypeLib, IMyExternal); // Create and load string list from file fData := TStringList.Create; //fData.LoadFromFile(ChangeFileExt(ExeName, '.dat')); end;
现在问题出来了,我想在这个扩展的方法中调用主窗口的方法,以此来控制各种组件的状态。
请教各位大侠,我该怎么做,最好能给出代码片段,小弟感激不尽。。
------解决方案--------------------
主窗口的一个控件显示出来?显示到子窗口上?
uses Main;
procedure TMyExternal.SetVideoOpen;
begin
mainform.控件名称.Visible := true;
end;
又或者是:mainform.控件名称.Parent := self; ???
没怎么理解,不知道对不对
------解决方案--------------------
------解决方案--------------------
给Application.MainForm发送消息,mainform实现该消息的处理函数,主窗自行控制组件状态。需要传额外信息,可将消息的LParam或wParam利用起来。
------解决方案--------------------
最简单的,比如你的主窗体是Form1,单元名是unit1,则
uses unit1;
Form1.XXOO.visible:=True;