编辑器
修正双击打开 退出最大化问题
This commit is contained in:
@@ -149,6 +149,10 @@ type tsgtkapi = class(tgtkapis)
|
||||
return r;
|
||||
end
|
||||
end
|
||||
function IsZoomed(hd:pointer)
|
||||
begin
|
||||
return 0;
|
||||
end
|
||||
function GetWindowTextA(h,s,l);
|
||||
begin
|
||||
if not(h>0 or h<0) then return ;
|
||||
@@ -1516,7 +1520,7 @@ type tsgtkapi = class(tgtkapis)
|
||||
cairo_arc(dc, 0, 0, rx, 0, 2 * 3.14);
|
||||
if brc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(brc,rc,gc,bc);
|
||||
@@ -1564,31 +1568,244 @@ type tsgtkapi = class(tgtkapis)
|
||||
end
|
||||
Function Chord(hdc :pointer;l:integer;t:integer;r:integer;b:integer;wid:integer;ht:integer):integer;
|
||||
begin
|
||||
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
pw := gtk_object_get_data(dc,"pen.width");
|
||||
brc := gtk_object_get_data(dc,"brush.color");
|
||||
direct := gtk_object_get_data(dc,"arcdirection");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
mx := (l+r)/2+x;
|
||||
my := (b+t)/2+y;
|
||||
cairo_translate(dc,mx,my);
|
||||
rx := (r-l)/2;
|
||||
ry := (b-t)/2;
|
||||
cairo_scale(dc,1,ry/rx);
|
||||
cairo_applay_pen_style(dc);
|
||||
xx1 := nXRadial1-mx;
|
||||
yy1 := (nYRadial1-my);
|
||||
xx2 := nXRadial2-mx;
|
||||
yy2 := (nYRadial2-my);
|
||||
arg1 := getargbyxy(xx1,yy1);
|
||||
arg2 := getargbyxy(xx2,yy2);
|
||||
if direct=2 then
|
||||
begin
|
||||
cairo_arc(dc, 0, 0, rx, arg1, arg2);
|
||||
end
|
||||
else
|
||||
begin
|
||||
cairo_arc(dc, 0, 0, rx, arg2, arg1);
|
||||
end
|
||||
|
||||
if brc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(brc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
cairo_move_to(dc,cos(arg1)*rx,sin(arg1)*rx);
|
||||
cairo_line_to(dc,cos(arg2)*rx,sin(arg2)*rx);
|
||||
cairo_fill_preserve(dc);
|
||||
if pc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(pc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
|
||||
cairo_stroke(dc);
|
||||
cairo_scale(dc,1,rx/ry);
|
||||
cairo_translate(dc,0-mx,0-my);
|
||||
end
|
||||
Function Pie(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;
|
||||
Function Pie(dc :pointer;l:integer;t:integer;r:integer;b:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;
|
||||
begin
|
||||
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
pw := gtk_object_get_data(dc,"pen.width");
|
||||
brc := gtk_object_get_data(dc,"brush.color");
|
||||
direct := gtk_object_get_data(dc,"arcdirection");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
mx := (l+r)/2+x;
|
||||
my := (b+t)/2+y;
|
||||
cairo_translate(dc,mx,my);
|
||||
rx := (r-l)/2;
|
||||
ry := (b-t)/2;
|
||||
cairo_scale(dc,1,ry/rx);
|
||||
cairo_applay_pen_style(dc);
|
||||
xx1 := nXRadial1-mx;
|
||||
yy1 := (nYRadial1-my);
|
||||
xx2 := nXRadial2-mx;
|
||||
yy2 := (nYRadial2-my);
|
||||
arg1 := getargbyxy(xx1,yy1);
|
||||
arg2 := getargbyxy(xx2,yy2);
|
||||
if direct=2 then
|
||||
begin
|
||||
cairo_arc(dc, 0, 0, rx, arg1, arg2);
|
||||
end
|
||||
else
|
||||
begin
|
||||
cairo_arc(dc, 0, 0, rx, arg2, arg1);
|
||||
end
|
||||
|
||||
if brc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(brc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
cairo_move_to(dc,cos(arg1)*rx,sin(arg1)*rx);
|
||||
cairo_line_to(dc,0,0);
|
||||
cairo_line_to(dc,cos(arg2)*rx,sin(arg2)*rx);
|
||||
cairo_fill_preserve(dc);
|
||||
if pc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(pc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
|
||||
cairo_stroke(dc);
|
||||
cairo_scale(dc,1,rx/ry);
|
||||
cairo_translate(dc,0-mx,0-my);
|
||||
end
|
||||
Function SetArcDirection(hdc :pointer;direct:integer):integer;
|
||||
Function SetArcDirection(dc :pointer;direct:integer):integer;
|
||||
begin
|
||||
|
||||
if direct = 1 or direct = 2 then
|
||||
begin
|
||||
gtk_object_set_data(dc,"arcdirection",direct);
|
||||
end
|
||||
//AD_CLOCKWISE:=2;
|
||||
//AD_COUNTERCLOCKWISE := 1;
|
||||
end
|
||||
Function Arc(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;
|
||||
private
|
||||
function getargbyxy(x,y_);
|
||||
begin
|
||||
|
||||
y := y_;
|
||||
pi := pi();
|
||||
if x=0 and y>=0 then
|
||||
begin
|
||||
|
||||
return pi/2;
|
||||
end
|
||||
if x=0 and y<=0 then
|
||||
begin
|
||||
return pi*3/2;
|
||||
end
|
||||
if x>=0 and y>=0 then
|
||||
begin
|
||||
ph := 1;
|
||||
end else
|
||||
if x<=0 and y>=0 then
|
||||
begin
|
||||
ph := 2;
|
||||
end else
|
||||
if x<=0 and y<=0 then
|
||||
begin
|
||||
ph := 3;
|
||||
end else
|
||||
if x>=0 and y<=0 then
|
||||
begin
|
||||
ph := 4;
|
||||
end
|
||||
arg := arctan(y/x);
|
||||
if ph=2 or ph = 3 then arg +=pi;
|
||||
return arg;
|
||||
end
|
||||
public
|
||||
//Function Arc(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;
|
||||
Function Arc(dc :pointer;l:integer;t:integer;r:integer;b:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;
|
||||
begin
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
pw := gtk_object_get_data(dc,"pen.width");
|
||||
//brc := gtk_object_get_data(dc,"brush.color");
|
||||
direct := gtk_object_get_data(dc,"arcdirection");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
mx := (l+r)/2+x;
|
||||
my := (b+t)/2+y;
|
||||
cairo_translate(dc,mx,my);
|
||||
rx := (r-l)/2;
|
||||
ry := (b-t)/2;
|
||||
cairo_scale(dc,1,ry/rx);
|
||||
cairo_applay_pen_style(dc);
|
||||
xx1 := nXRadial1-mx;
|
||||
yy1 := (nYRadial1-my);
|
||||
xx2 := nXRadial2-mx;
|
||||
yy2 := (nYRadial2-my);
|
||||
arg1 := getargbyxy(xx1,yy1);
|
||||
arg2 := getargbyxy(xx2,yy2);
|
||||
if direct=2 then
|
||||
begin
|
||||
cairo_arc(dc, 0, 0, rx, arg1, arg2);
|
||||
end
|
||||
else
|
||||
begin
|
||||
cairo_arc(dc, 0, 0, rx, arg2, arg1);
|
||||
end
|
||||
{if brc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(brc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
cairo_fill_preserve(dc); }
|
||||
if pc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(pc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
cairo_stroke(dc);
|
||||
cairo_scale(dc,1,rx/ry);
|
||||
cairo_translate(dc,0-mx,0-my);
|
||||
end
|
||||
Function Polygon(hdc :pointer;points:array of integer;n:integer):integer;
|
||||
begin
|
||||
|
||||
end
|
||||
Function PolyBezier(hdc :pointer;points:array of integer;n:integer):integer;
|
||||
Function PolyBezier(dc :pointer;points:array of integer;n:integer):integer;
|
||||
begin
|
||||
|
||||
if length(PolyBezier)<6 then return 0;
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
pw := gtk_object_get_data(dc,"pen.width");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
if pc=0 then
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(pc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
cairo_move_to(dc,points[0]+x,Points[1]+y);
|
||||
cairo_applay_pen_style(dc);
|
||||
cairo_curve_to(dc,points[0],points[1],points[2],points[3],points[4],points[5]);
|
||||
cairo_stroke(dc);
|
||||
return 1;
|
||||
end
|
||||
Function SetPolyFillMode(hdc :pointer;md:integer):integer;
|
||||
begin
|
||||
|
||||
|
||||
end
|
||||
Function Polyline(dc :pointer;points:array of integer;n:integer):integer;
|
||||
begin
|
||||
|
||||
@@ -2528,7 +2528,7 @@ type tcustomedit=class(TCustomControl)
|
||||
begin
|
||||
if FEditable then
|
||||
begin
|
||||
rc := ClientRect;
|
||||
rc := geteditrect();//ClientRect;
|
||||
FEditable.ClientRect := rc;
|
||||
end
|
||||
inherited;
|
||||
@@ -2595,6 +2595,10 @@ type tcustomedit=class(TCustomControl)
|
||||
@param(onlimitlength)(integer)设置输入字符的长度%%
|
||||
**}
|
||||
private
|
||||
function geteditrect();virtual;
|
||||
begin
|
||||
return ClientRect;
|
||||
end
|
||||
function getBorder();
|
||||
begin
|
||||
if FEditable then return FEditable.Border;
|
||||
@@ -2684,7 +2688,7 @@ type tcustompassword = class(tcustomedit)
|
||||
end
|
||||
published
|
||||
property PassWordChar:string read getPassWordChar write SetPassWordChar;
|
||||
|
||||
|
||||
end
|
||||
type tthreeEntry=class(TCustomControl)
|
||||
private
|
||||
|
||||
@@ -250,11 +250,13 @@ begin
|
||||
begin
|
||||
this.DoOnMessage(d);
|
||||
end
|
||||
end
|
||||
end ;
|
||||
sleep(1);
|
||||
end else
|
||||
begin
|
||||
sleep(20);
|
||||
sleep(10);
|
||||
end
|
||||
tslprocessmessages(false); //20230428添加tsl消息分发
|
||||
end
|
||||
end
|
||||
type TArray = class
|
||||
|
||||
@@ -254,6 +254,8 @@ type twindowsapi = class()
|
||||
function GetFocus():pointer;stdcall;external "User32.dll" name "GetFocus";
|
||||
function SetLayeredWindowAttributes(hwnd:pointer;crKey:integer;bAlpha:byte;dwFlags:integer):integer;stdcall;external "User32.dll" name "SetLayeredWindowAttributes";
|
||||
function IsWindow(hd:pointer):integer;stdcall;external "User32.dll" name "IsWindow";
|
||||
function IsZoomed(hd:pointer):integer;stdcall;external "User32.dll" name "IsZoomed";
|
||||
function IsIconic(hd:pointer):integer;stdcall;external "User32.dll" name "IsIconic";
|
||||
function IsWindowVisible(hd:pointer):integer;stdcall;external "User32.dll" name "IsWindowVisible";
|
||||
function GetWindow(hd:pointer;cd:integer):pointer;stdcall;external "User32.dll" name "GetWindow";
|
||||
//function GetNextWindow(hd:pointer;cd:integer):pointer;stdcall;external "User32.dll" name "GetNextWindow";
|
||||
@@ -516,7 +518,8 @@ type twindowsapi = class()
|
||||
Function Rectangle(hdc :pointer;l:integer;t:integer;r:integer;b:integer):integer;stdcall;external "Gdi32.dll" name "Rectangle";
|
||||
Function Ellipse(hdc :pointer;l:integer;t:integer;r:integer;b:integer):integer;stdcall;external "Gdi32.dll" name "Ellipse";
|
||||
Function RoundRect(hdc :pointer;l:integer;t:integer;r:integer;b:integer;wid:integer;ht:integer):integer;stdcall;external "Gdi32.dll" name "RoundRect";
|
||||
Function Chord(hdc :pointer;l:integer;t:integer;r:integer;b:integer;wid:integer;ht:integer):integer;stdcall;external "Gdi32.dll" name "Chord";
|
||||
//Function Chord(hdc :pointer;l:integer;t:integer;r:integer;b:integer;wid:integer;ht:integer):integer;stdcall;external "Gdi32.dll" name "Chord";
|
||||
Function Chord(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;stdcall;external "Gdi32.dll" name "Chord";
|
||||
Function Pie(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;stdcall;external "Gdi32.dll" name "Pie";
|
||||
Function SetArcDirection(hdc :pointer;direct:integer):integer;stdcall;external "Gdi32.dll" name "SetArcDirection";
|
||||
Function Arc(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;stdcall;external "Gdi32.dll" name "Arc";
|
||||
|
||||
Reference in New Issue
Block a user