设计器

优化
This commit is contained in:
JianjunLiu
2023-04-28 14:19:54 +08:00
parent 08efcf2722
commit d30fed5625
8 changed files with 244 additions and 8 deletions
+57
View File
@@ -4699,6 +4699,63 @@ type TThreadWorker =class(TCustomThreadworker)
begin
return CheckTslCode(FScript,err);
end
end
type tworkerctl =class(tcomponent) //工作线程封装
function create(AOwner);
begin
inherited;
end
function terminate();
begin
if fworker then fworker.terminate();
fworker := nil;
end
function start();
begin
if csDesigning in ComponentState then return 0;
if fworker then return true;
if ifstring(FScript) and FScript then
begin
fworker := new TThreadWorker(FScript,nil,nil);
fworker.componet := self(true);
fworker.OnMessage := FOnMessage;
fworker.onerror := FOnError;
end
end
function PostMessage(d);
begin
if fworker then return fworker.PostMessage(d);
end
function isstarted();
begin
return fworker?true:false;
end
published
property script:text read FScript write Setscript;
property OnMessage:eventhandler read fOnMessage write setOnMessage;
property onerror:eventhandler read FOnError write setOnError;
private
fworker;
FScript;
[weakref]FOnError;
[weakref]FOnMessage;
function setOnMessage(f);
begin
fOnMessage := f;
if fworker then fworker.OnMessage := f;
end
function setOnError(f);
begin
FOnError := f;
if fworker then fworker.FOnError := f;
end
function Setscript(s);
begin
if s <> FScript and ifstring(s) and s then
begin
FScript := s;
end
end
end
//注册表操作类
type TRegKey = class
+1
View File
@@ -4044,6 +4044,7 @@ type TSynCustomMemo = class(TCustomMemo)
y := (CaretY-GetYpos())*GetYScrollDelta();
x := (CaretX-GetXpos())*GetXScrollDelta();
end
published
property Highlighter:thighlighter read FHighlighter write SetHighlighter; //语法高亮
property Completion read FCompletion write SetCompletion; //自动完成
property TabChar read FTabChar write SetTabChar;
+20 -4
View File
@@ -102,7 +102,6 @@ type TCustomThreadworker = class()
try
oh := o.handle;
except
echo ">>>>>>>>>>>>>";
DeleteWorker(i);
uideleteworkerdata(oh); //删除数据
end
@@ -145,6 +144,7 @@ type TCustomThreadworker = class()
end
inherited;
end
property componet read getcomponet write setcomponet;
property OnMessage read GetOnMessage write SetOnMessage;
property OnError read GetOnError write SetOnError;
property OnStart read GetOnStart Write SetOnStart;
@@ -214,6 +214,14 @@ type TCustomThreadworker = class()
[weakref]static FThreaders;
FScript; //脚本
FThreader;//host对象
function setcomponet(v);
begin
FThreader.componet := v;
end
function getcomponet();
begin
return FThreader.componet;
end
end
implementation
function RunThreadWorkerHost();
@@ -286,6 +294,7 @@ type tworkerHost = class(TArray)
property OnMessage read FOnMessage write FOnMessage;
property OnStart read FOnStart write FOnStart;
property OnError read FOnError write FOnError;
property componet read Fcomponet write Fcomponet;
function close(); //关闭命令 0x10
begin
if FConnectHandle then
@@ -301,7 +310,9 @@ type tworkerHost = class(TArray)
if iffuncptr(FOnStart) then
begin
try
call(FOnStart,self);
if Fcomponet then o := Fcomponet;
else o:= self;
call(FOnStart,o);
except
end;
@@ -339,7 +350,9 @@ type tworkerHost = class(TArray)
if iffuncptr(FOnError) then
begin
try
return call(FOnError,self,d);
if Fcomponet then o := Fcomponet;
else o:= self;
return call(FOnError,o,d);
except
end;
end
@@ -349,7 +362,9 @@ type tworkerHost = class(TArray)
if iffuncptr(FOnMessage) then
begin
try
return call(FOnMessage,self,d);
if Fcomponet then o := Fcomponet;
else o:= self;
return call(FOnMessage,o,d);
except
end;
end
@@ -368,6 +383,7 @@ type tworkerHost = class(TArray)
FOnMessage; //onpost message
FOnError;
FOnStart;
Fcomponet;
autoref
FConnectHandle; //句柄
end