新手求助,子窗口如何调用父窗口的方法
如题,本人delphi菜鸟,现在用delphi写了一个简易浏览器(被逼的),然后又因为要通过js和应用程序进行一些交互,因此做了一个扩展。
- Delphi(Pascal) code
unit UMyExternal;interfaceuses 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;implementationuses StdActns;{ TMyExternal }procedure TMyExternal.SetVideoOpen;begin // 就是这里,我想让主窗口的一个控件显示出来,应该怎么做。。end;constructor TMyExternal.Create;var TypeLib: ITypeLib; // type library information ExeName: WideString; // name of our program's exe filebegin // 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;