tslediter/designer/gettslvcldesignerstart.tsf

91 lines
2.1 KiB
Plaintext

{
tsl界面设计器启动程序
}
uses tslvcl,tslvclDesigner;
deletefuncacheini();
isdebug := false;
for i:= 0 to sysparamcount() do
begin
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();
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
plg := pluginpath();
{$ifdef linux}
sp :="/";
{$else}
sp := "\\";
{$endif}
for i:= length(plg)-1 downto 1 do
begin
if plg[i]=sp then
begin
fn := plg[1:i]+"FunCache.ini";
r := filedelete("",fn);
return r;
end
end
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}
function getdcompath();
begin
{$ifdef linux}
bpath := ".vcl/tsl/";
{$else}
bpath := TS_GetUserProfileHome();
{$endif}
return bpath+"designer"+ioFileseparator()+"dcmps"+ioFileseparator();
end