tslediter/designer/gettslvcldesignerstart.tsf

79 lines
1.9 KiB
Plaintext

{
tsl界面设计器启动程序
}
uses tslvcl,utslvclDesigner;
setprocessdpiawareness(2);
deletefuncacheini();
isdebug := false;
willopen := "";
for i:= 0 to sysparamcount() do
begin
if wait_filename then
begin
willopen := sysparamstr(i);
wait_filename := 0;
end else
if ("-tpj"=sysparamstr(i)) then
begin
wait_filename := true;
end else
if ("-DEBUGSERVER" = sysparamstr(i)) then
begin
isdebug := true;
break;
end
end
h := FindWindowA("tsluidesigner_a_a_1",nil); //查找唯一窗口
if not(isdebug) and h then
begin
return PostMessageA(h,0x400,303,10);
end
app := InitializeApplication();
app.createform(class(TVclDesignerStart),Desginer);
Desginer.Show();
if willopen then Desginer.OpenFileFromTpjFile(willopen);
r := app.run();
return r;
type TVclDesignerStart = class(TVclDesigner) //实现唯一的窗口
function create(AOwner);
begin
inherited;
end
function WMUSER(o,e):WM_USER;override;
begin
if e.wparam = 303 and e.lparam=10 then
begin
Show(SW_SHOWMINIMIZED);
PostMessageA(self.handle,WM_USER,303,12);
end
else if e.wparam = 303 and e.lparam=12 then
begin
Show(SW_SHOWNORMAL);
_wapi.bringWindowToTop(self.Handle);
end
inherited;
end
function CreateParams(p);override;
begin
inherited;
p.WinClassName := "tsluidesigner_a_a_1";
end
end
function deletefuncacheini();
begin
return filedelete("",(TS_ModulePath()+"FunCache.ini"));
end
{$ifdef linux}
function PostMessageA();
begin
end
function FindWindowA();
begin
end
{$else}
function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "PostMessageA"; //引入api
function FindWindowA(lpClassName:string;lpWindowName:string):pointer;stdcall;external "User32.dll" name "FindWindowA";//引入api
{$endif}