界面库

优化gtk滚动条优化gtk滚动条
This commit is contained in:
JianjunLiu 2022-11-25 15:23:51 +08:00
parent 9831a0260f
commit 4693fd70c6
5 changed files with 108 additions and 26 deletions

View File

@ -14,6 +14,7 @@ type TVclDesigner = class(tvcform)
@explan(说明) 控件设计器 对象 %%
**}
private
Foh ;
fcwindowinfo; //当前窗口文件对象
fwindowinfos; //窗口文件节点存储对象
fcutcopyinfo;//复制的信息
@ -384,9 +385,52 @@ type TVclDesigner = class(tvcform)
FProjectsManager.CreateTpjFomFile(f);
end
end
function WMSYSCOMMAND(o,e);override;
begin
case e.wparam of
SC_MAXIMIZE:
begin
Foh := o.height;
_send_(WM_USER,123,123,1);
return ;
end
SC_MINIMIZE:
begin
e.skip := true;
return ;
end
SC_DEFAULT:
begin
end
SC_ZOOM:
begin
end
SC_MOUSEMENU:
begin
end
SC_RESTORE:
begin
end
end;
return ;
return inherited;
end
function db(o,e): WM_NCLBUTTONDBLCLK;virtual;//最大化处理
begin
e.skip := true;
//e.skip := true;
Foh := o.height;
_send_(WM_USER,123,123,1);
end
function WMUSER(o,e):WM_USER;override;
begin
if e.wparam = 123 and e.lparam=123 then
begin
if o.height>Foh then
o.height := Foh;
end
end
function openclassfile(); //打开编辑器
begin

View File

@ -1714,6 +1714,38 @@ BD141CA912494F502D48D224F45050274A21E03806FF2C7CA7516022D7D000000
end
_send_(WM_SETICON,1,FIco.handle,1);
end
{Foh ;
function WMSYSCOMMAND(o,e);override;
begin
if e.wparam=SC_MAXIMIZE then
begin
Foh := o.height;
_send_(WM_USER,123,123,1);
return ;
end else
if e.wparam=SC_RESTORE then
begin
end
return inherited;
end
function db(o,e): WM_NCLBUTTONDBLCLK;virtual;//×î´ó»¯´¦Àí
begin
Foh := o.height;
_send_(WM_USER,123,123,1);
end
function WMUSER(o,e):WM_USER;override;
begin
if e.wparam = 123 and e.lparam=123 then
begin
if o.height>foh then
begin
h := o.height;
w := o.width;
l :=left;
o.SetBoundsRect(array(l,140,w+l,h));
end
end
end }
function Create(AOwner);override;
begin
inherited;

View File

@ -215,10 +215,10 @@ type tapplication=class(tcomponent)
**}
initialize();
{$ifdef linuxgtk}
//idledata :=(new tcbytearray(4))._getptr_();
//id := tsl_gtk_idle_interface(idledata);//_wapi.tsl_gtk_idle_interface(idledata); //¹¹Ôìidle
idledata :=(new tcbytearray(4))._getptr_();
id := tsl_gtk_idle_interface(idledata);//_wapi.tsl_gtk_idle_interface(idledata); //¹¹Ôìidle
_wapi.gtk_main();
//_Wapi.g_idle_remove_by_data(idledata); //ɾ³ýidle
_Wapi.g_idle_remove_by_data(idledata); //ɾ³ýidle
return 1;
{$endif}
if not FMessageObj then FMessageObj := new TTagMSG();

View File

@ -6189,7 +6189,8 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
end
dosetchange := false;
////移动到公用 之前在 page change
if (rgchanged or pgchanged) and ((gsi.nmax-gsi.npage)<=0) {and osi.npos>0} then //»¹Ô­
//////////////ÔÝʱÆÁ±Î///////////////////
(* if (rgchanged or pgchanged) and ((gsi.nmax-gsi.npage)<=0) {and osi.npos>0} then //»¹Ô­
begin
w := makelong(_const.SB_TOP,0);
//osi.ntrackpos := 0;
@ -6203,7 +6204,8 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
CallTslVclProc(_const.WM_VSCROLL,w,0,1);
end
//dosetchange := true;
end
end *)
//////////////////////////////////////
if msk .& _const.SIF_TRACKPOS then
begin
@ -6641,12 +6643,9 @@ type tGtkMessageQueue=class //
function Add(h,m,l,w,obj);
begin
lock();
FData[FLen]:= array(h,m,l,w,obj);
if FCurrent=FLen then
begin
createidle();
end
FData[FLen]:= array(h,m,l,w,obj);
FLen++;
//createidle();
unlock();
end
function Feach();
@ -6695,18 +6694,27 @@ type tGtkMessageQueue=class //
idx++;
end
end
property idleworked write fidleworked;
private
fidleworked;
FData;
FCurrent;
FLen;
FLock;
FMainContext;
function createidle();
begin
if fidleworked then return ;
idledata :=(new tcbytearray(4))._getptr_();
id := tsl_gtk_idle_interface(idledata);
fidleworked := true;
end
function Clean();
begin
FData := array();
FLen := 0;
FCurrent :=0;
end
FData;
FCurrent;
FLen;
FLock;
FMainContext;
function lock()
begin
return;
@ -6838,11 +6846,7 @@ begin
_wapi.cairo_destroy(cr);
_wapi.gtk_object_set_data(cr);
end
function createidle();
begin
idledata :=(new tcbytearray(4))._getptr_();
id := tsl_gtk_idle_interface(idledata);
end
function _gtkidledo_(); //回调
begin
d := FeachMessageFromGtkMessageQueue();
@ -6875,8 +6879,7 @@ begin
AddMessageToGtkMessageQueue(h,d[1],h,d[3],true);
end
return 1;
end
end
return 1; //r
end
else
@ -6892,7 +6895,10 @@ begin
//sleep(10);//休息一下
end
unit(uvclthreadworker).RunThreadWorkerHost();
return r;
GLobal G_GTK_MESSAGE_QUEUE_A;
if r=0 then sleep(1);
//G_GTK_MESSAGE_QUEUE_A.idleworked := r;
return true;
end
procedure tslprocessmessages()begin end;
function InitGtkWindowClass(); //初始化窗口类

View File

@ -6770,8 +6770,8 @@ function uinit();
begin
{$ifdef linux}
class(tUIglobalData).uisetdata("G_T_TTIMER_",class(TCustomTimer));
o := new TSLUIBASE();
o._wapi.SetTimer(nil,10000,100,getwinprocptr(2));
//o := new TSLUIBASE();
//o._wapi.SetTimer(nil,10000,200,getwinprocptr(2));
{$endif}
end
initialization