parent
27fb67b49a
commit
32151f8d94
|
|
@ -773,6 +773,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
r := gtk_object_get_data(hdc,"brush");
|
||||
gtk_object_set_data(hdc,"brush",gdiobj);
|
||||
gtk_object_set_data(hdc,"brush.color",o.color);
|
||||
gtk_object_set_data(hdc,"brush.style",o.style);
|
||||
end
|
||||
"font":
|
||||
begin
|
||||
|
|
@ -1093,6 +1094,59 @@ type tsgtkapi = class(tgtkapis)
|
|||
return 1;
|
||||
end
|
||||
end
|
||||
function cairo_set_pen_color(dc);
|
||||
begin
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
pt := gtk_object_get_data(dc,"pen.style");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
if pc=0 then
|
||||
begin
|
||||
if pt=5 then
|
||||
begin
|
||||
cairo_set_source_rgba(dc,1,1,1,0);
|
||||
end else
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end
|
||||
end else
|
||||
begin
|
||||
|
||||
if pt=5 then
|
||||
begin
|
||||
cairo_set_source_rgba(dc,1,1,1,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(pc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
end
|
||||
end
|
||||
function cairo_set_brush_color(dc);
|
||||
begin
|
||||
brc := gtk_object_get_data(dc,"brush.color");
|
||||
bst := gtk_object_get_data(dc,"brush.style");
|
||||
if brc=0 then
|
||||
begin
|
||||
if bst=1 then
|
||||
begin
|
||||
cairo_set_source_rgba(dc,1,1,1,0);
|
||||
end else
|
||||
begin
|
||||
cairo_set_source_rgb(dc,0,0,0);
|
||||
end
|
||||
end else
|
||||
begin
|
||||
if bst=1 then
|
||||
begin
|
||||
cairo_set_source_rgba(dc,1,1,1,0);
|
||||
end else
|
||||
begin
|
||||
gtk_rgb_color_rgb(brc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Function FillRect(dc:pointer;rec:array of integer;br:pointer):integer;
|
||||
begin
|
||||
|
|
@ -1239,6 +1293,18 @@ type tsgtkapi = class(tgtkapis)
|
|||
gtk_gdi_object_globals[inttostr(ptr)] := array(p,"brush");
|
||||
return ptr;
|
||||
end
|
||||
function CreateBrushIndirect(lblf:pointer);
|
||||
begin
|
||||
global gtk_gdi_object_globals;
|
||||
p := new ttgtk_brush();
|
||||
p2 := new ttgtk_brush(lblf);
|
||||
p.color := p2.color;
|
||||
p.style := p2.style;
|
||||
//p.color := crColor;
|
||||
ptr := p._getptr_();
|
||||
gtk_gdi_object_globals[inttostr(ptr)] := array(p,"brush");
|
||||
return ptr;
|
||||
end
|
||||
function CreateFontIndirectA(lplf:pointer);
|
||||
begin
|
||||
global gtk_gdi_object_globals;
|
||||
|
|
@ -1270,19 +1336,10 @@ type tsgtkapi = class(tgtkapis)
|
|||
begin
|
||||
xb := gtk_object_get_data(dc,"viewport.x");
|
||||
yb := gtk_object_get_data(dc,"viewport.y");
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
pw := gtk_object_get_data(dc,"pen.width");
|
||||
pt := gtk_object_get_data(dc,"pen.style");
|
||||
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_set_pen_color(dc);
|
||||
cairo_applay_pen_style(dc); //LineTo
|
||||
xy := gtk_object_get_data(dc,"movepointto");
|
||||
if xy then
|
||||
|
|
@ -1505,9 +1562,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
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");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
if pc=0 then
|
||||
|
|
@ -1525,23 +1580,9 @@ type tsgtkapi = class(tgtkapis)
|
|||
cairo_line_to(dc,l+x,b+y);
|
||||
cairo_line_to(dc,l+x,t+y);
|
||||
|
||||
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_set_brush_color(dc);
|
||||
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_set_pen_color(dc);
|
||||
|
||||
cairo_stroke(dc);
|
||||
return 1;
|
||||
|
|
@ -1552,9 +1593,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
//³¤¶È
|
||||
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");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
mx := (l+r)/2+x;
|
||||
|
|
@ -1565,23 +1604,9 @@ type tsgtkapi = class(tgtkapis)
|
|||
cairo_scale(dc,1,ry/rx);
|
||||
cairo_applay_pen_style(dc);
|
||||
cairo_arc(dc, 0, 0, rx, 0, 2 * pi());
|
||||
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_set_brush_color(dc);
|
||||
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_set_pen_color(dc);
|
||||
cairo_stroke(dc);
|
||||
cairo_scale(dc,1,rx/ry);
|
||||
cairo_translate(dc,0-mx,0-my);
|
||||
|
|
@ -1591,26 +1616,15 @@ type tsgtkapi = class(tgtkapis)
|
|||
begin
|
||||
xb := gtk_object_get_data(dc,"viewport.x");
|
||||
yb := 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);
|
||||
cairo_applay_pen_style(dc);
|
||||
cairo_draw_round_rectangle(dc,l,t,r-l,b-t,wid);
|
||||
|
||||
bsh := gtk_object_get_data(dc,"brush.color");
|
||||
gtk_rgb_color_rgb(bsh,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
cairo_set_brush_color(dc);
|
||||
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_set_pen_color(dc);
|
||||
cairo_stroke(dc);//»æÖƱ߿ò
|
||||
return 1;
|
||||
end
|
||||
|
|
@ -1618,9 +1632,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
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);
|
||||
|
|
@ -1646,25 +1658,11 @@ type tsgtkapi = class(tgtkapis)
|
|||
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_set_brush_color(dc);
|
||||
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_set_pen_color(dc);
|
||||
|
||||
cairo_stroke(dc);
|
||||
cairo_scale(dc,1,rx/ry);
|
||||
|
|
@ -1674,9 +1672,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
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);
|
||||
|
|
@ -1701,27 +1697,12 @@ type tsgtkapi = class(tgtkapis)
|
|||
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_set_brush_color(dc);
|
||||
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_set_pen_color(dc);
|
||||
|
||||
cairo_stroke(dc);
|
||||
cairo_scale(dc,1,rx/ry);
|
||||
|
|
@ -1776,7 +1757,6 @@ type tsgtkapi = class(tgtkapis)
|
|||
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");
|
||||
|
|
@ -1812,14 +1792,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
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_set_pen_color(dc);
|
||||
cairo_stroke(dc);
|
||||
cairo_scale(dc,1,rx/ry);
|
||||
cairo_translate(dc,0-mx,0-my);
|
||||
|
|
@ -1829,8 +1802,6 @@ type tsgtkapi = class(tgtkapis)
|
|||
if n<3 then return ;
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
brc := gtk_object_get_data(dc,"brush.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);
|
||||
|
|
@ -1842,23 +1813,9 @@ type tsgtkapi = class(tgtkapis)
|
|||
cairo_line_to(dc,Points[i,0]+x,Points[i,1]+y);
|
||||
end
|
||||
cairo_line_to(dc,Points[0,0]+x,Points[0,1]+y);
|
||||
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_set_brush_color(dc);
|
||||
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_set_pen_color(dc);
|
||||
cairo_stroke(dc);
|
||||
end
|
||||
Function PolyBezier(dc :pointer;points:array of integer;n:integer):integer;
|
||||
|
|
@ -1866,18 +1823,10 @@ type tsgtkapi = class(tgtkapis)
|
|||
if length(points)<4 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_set_pen_color(dc);
|
||||
cairo_applay_pen_style(dc);
|
||||
cairo_move_to(dc,points[0,0]+x,Points[0,1]+y);
|
||||
for i := 1 to length(points)-2 step 3 do
|
||||
|
|
@ -1896,18 +1845,10 @@ type tsgtkapi = class(tgtkapis)
|
|||
if n<2 then return ;
|
||||
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_set_pen_color(dc);
|
||||
cairo_applay_pen_style(dc);
|
||||
for i := 0 to n-1 do
|
||||
begin
|
||||
|
|
@ -4613,7 +4554,7 @@ type tgtkapis = class() //gtk
|
|||
return ##_f_(c);
|
||||
end
|
||||
//procedure draw_round_rectangle(c:pointer;x:double;y:double;w:double;h:double;r:double);cdecl;external 'libgtk-3.so';
|
||||
procedure cairo_arc (cr:pointer; xc:double;yc:double;radius:double;angle1:double;angle2:double);
|
||||
procedure cairo_arc(cr:pointer; xc:double;yc:double;radius:double;angle1:double;angle2:double);
|
||||
begin
|
||||
_f_ := static procedure(cr:pointer; xc:double;yc:double;radius:double;angle1:double;angle2:double);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(cr,xc,yc,radius,angle1,angle2);
|
||||
|
|
@ -4736,27 +4677,47 @@ type tgtkapis = class() //gtk
|
|||
function cairo_applay_pen_style(dc);
|
||||
begin
|
||||
pt := gtk_object_get_data(dc,"pen.style");
|
||||
if pt=0x2 or pt=0x3 or pt=0x4 then
|
||||
case pt of
|
||||
1:
|
||||
begin
|
||||
cairo_set_dash(dc,array(4.0,1.0),2,0);
|
||||
ds := array(14,6);
|
||||
cairo_set_dash(dc,ds,length(ds),0);
|
||||
end
|
||||
2:
|
||||
begin
|
||||
ds := array(3,3);
|
||||
cairo_set_dash(dc,ds,length(ds),0);
|
||||
end
|
||||
3:
|
||||
begin
|
||||
ds := array(10,4,3,4);
|
||||
cairo_set_dash(dc,ds,length(ds),0);
|
||||
end
|
||||
4:
|
||||
begin
|
||||
ds := array(10,3,3,3,3,3);
|
||||
cairo_set_dash(dc,ds,length(ds),0);
|
||||
end else
|
||||
begin
|
||||
cairo_set_dash(dc,array(0),0,0);
|
||||
end
|
||||
end
|
||||
else cairo_set_dash(dc,array(4.0,0.0),2,0);
|
||||
return pt=5;
|
||||
end
|
||||
function cairo_draw_round_rectangle(cr,x,y,w,h,r);
|
||||
begin
|
||||
cairo_move_to (cr, x + r, y);
|
||||
cairo_line_to (cr, x + w - r, y);
|
||||
cairo_move_to (cr, x + w, y + r);
|
||||
cairo_line_to (cr, x + w, y + h - r);
|
||||
cairo_move_to (cr, x + w - r, y + h);
|
||||
cairo_line_to (cr, x + r, y + h);
|
||||
cairo_move_to (cr, x, y + h - r);
|
||||
cairo_line_to (cr, x, y + r);
|
||||
cairo_arc (cr, x + r, y + r, r, 3.14, 3 * 3.14 / 2.0);
|
||||
cairo_arc (cr, x + w - r, y + r, r, 3 * 3.14 / 2, 2 * 3.14);
|
||||
cairo_arc (cr, x + w - r, y + h - r, r, 0, 3.14 / 2);
|
||||
cairo_arc (cr, x + r, y + h - r, r, 3.14 / 2, 3.14);
|
||||
cairo_move_to(cr, x + r, y);
|
||||
cairo_line_to(cr, x + w - r, y);
|
||||
cairo_move_to(cr, x + w, y + r);
|
||||
cairo_line_to(cr, x + w, y + h - r);
|
||||
cairo_move_to(cr, x + w - r, y + h);
|
||||
cairo_line_to(cr, x + r, y + h);
|
||||
cairo_move_to(cr, x, y + h - r);
|
||||
cairo_line_to(cr, x, y + r);
|
||||
cairo_arc(cr, x + r, y + r, r, 3.14, 3 * 3.14 / 2.0);
|
||||
cairo_arc(cr, x + w - r, y + r, r, 3 * 3.14 / 2, 2 * 3.14);
|
||||
cairo_arc(cr, x + w - r, y + h - r, r, 0, 3.14 / 2);
|
||||
cairo_arc(cr, x + r, y + h - r, r, 3.14 / 2, 3.14);
|
||||
end
|
||||
//////////////////////text//////// https://developer.gnome.org/cairo/stable/cairo-cairo-font-options-t.html#cairo-font-options-get-hint-metrics
|
||||
procedure cairo_show_text(c:pointer;t:string);
|
||||
|
|
|
|||
|
|
@ -1554,6 +1554,16 @@ type TNode = class() //
|
|||
if idx >= 0 then return FItems[idx];
|
||||
return nil;
|
||||
end
|
||||
function set_node_index(nd,idx); //ÉèÖÃ×ÓÏî´ÎÐò
|
||||
begin
|
||||
if not(idx>=0) then return -1;
|
||||
oidx := FItems.indexof(v);
|
||||
if oidx>=0 and idx<>oidx then
|
||||
begin
|
||||
setorder(oidx,idx);
|
||||
end else return 0;
|
||||
return 1;
|
||||
end
|
||||
function indexof(v); //获得序号
|
||||
begin
|
||||
return FItems.indexof(v);
|
||||
|
|
@ -1624,9 +1634,9 @@ type TNode = class() //
|
|||
if not nd then return;
|
||||
//是否显示处理
|
||||
FItems.Deli(idx);
|
||||
CurrentDeleteNode := nd;
|
||||
FCurrentDeleteNode := nd;
|
||||
nd.parent := self(true);
|
||||
CurrentDeleteNode := nil;
|
||||
FCurrentDeleteNode := nil;
|
||||
return true;
|
||||
end
|
||||
function DeleteChildren();virtual; //
|
||||
|
|
@ -1638,9 +1648,9 @@ type TNode = class() //
|
|||
begin
|
||||
idx := 0;
|
||||
it := FItems[idx];
|
||||
CurrentDeleteNode := it;
|
||||
FCurrentDeleteNode := it;
|
||||
it.parent := self(true);
|
||||
CurrentDeleteNode := nil;
|
||||
FCurrentDeleteNode := nil;
|
||||
FItems.Deli(idx);
|
||||
end
|
||||
end
|
||||
|
|
@ -1660,9 +1670,9 @@ type TNode = class() //
|
|||
if(it is class(TNode))and(not it.Parent)then
|
||||
begin
|
||||
FItems.InsertBefor(it,idx0);
|
||||
CurrentAddNode := it;
|
||||
FCurrentAddNode := it;
|
||||
it.Parent := self(true);
|
||||
CurrentAddNode := nil;
|
||||
FCurrentAddNode := nil;
|
||||
idx0++;
|
||||
end
|
||||
end
|
||||
|
|
@ -1680,9 +1690,9 @@ type TNode = class() //
|
|||
if idx>FItems.Count then idx := FItems.Count;
|
||||
if not(idx >= 0)then idx := 0;
|
||||
FItems.InsertBefor(it,idx);
|
||||
CurrentAddNode := it;
|
||||
FCurrentAddNode := it;
|
||||
it.Parent := self(true);
|
||||
CurrentAddNode := nil;
|
||||
FCurrentAddNode := nil;
|
||||
return true;
|
||||
end
|
||||
end
|
||||
|
|
@ -1726,15 +1736,20 @@ type TNode = class() //
|
|||
@param(Parent)(TNode) 父节点 %%
|
||||
**}
|
||||
protected
|
||||
property CurrentDeleteNode read FCurrentDeleteNode write FCurrentDeleteNode;
|
||||
property CurrentAddNode read FCurrentAddNode write FCurrentAddNode;
|
||||
property CurrentDeleteNode read FCurrentDeleteNode;
|
||||
property CurrentAddNode read FCurrentAddNode;
|
||||
{**
|
||||
@ignoremembers(CurrentDeleteNode,CurrentAddNode)
|
||||
**}
|
||||
function SetParent(V);virtual;
|
||||
begin
|
||||
tp := Parent;
|
||||
if v=tp then return;
|
||||
if tp and (v=tp) and( v.CurrentDeleteNode=self ) then
|
||||
begin
|
||||
FParent := nil;
|
||||
return;
|
||||
end
|
||||
if (v=tp) then return;
|
||||
if(v is class(TNode))then
|
||||
begin
|
||||
if v.CurrentAddNode=self then
|
||||
|
|
@ -1759,6 +1774,8 @@ type TNode = class() //
|
|||
end
|
||||
end
|
||||
private
|
||||
fwilldelete;
|
||||
fwilladd;
|
||||
function GetLstChild();
|
||||
begin
|
||||
return FItems[FItems.Count-1];
|
||||
|
|
|
|||
|
|
@ -611,6 +611,14 @@ type tcustombrush=class(tgdi)
|
|||
FColor := c;
|
||||
end
|
||||
end
|
||||
function SetStyle(s);
|
||||
begin
|
||||
if (s <> FStyle) and (s in array(BS_SOLID,BS_NULL)) then
|
||||
begin
|
||||
onchange();
|
||||
FStyle := s;
|
||||
end
|
||||
end
|
||||
public
|
||||
class function sinit();override;
|
||||
begin
|
||||
|
|
@ -637,11 +645,11 @@ type tcustombrush=class(tgdi)
|
|||
hp := reference();
|
||||
if not hp then
|
||||
begin
|
||||
//LOGSTRUCT._setvalue_("lbstyle",FStyle);
|
||||
//LOGSTRUCT._setvalue_("lbcolor",FColor);
|
||||
LOGSTRUCT._setvalue_("lbstyle",FStyle);
|
||||
LOGSTRUCT._setvalue_("lbcolor",FColor);
|
||||
//LOGSTRUCT._setvalue_("lbhatch",FHatch);
|
||||
//hp := _wapi.CreateBrushIndirect(LOGSTRUCT._getptr_);
|
||||
hp := _wapi.CreateSolidBrush(FColor);
|
||||
hp := _wapi.CreateBrushIndirect(LOGSTRUCT._getptr_);
|
||||
//hp := _wapi.CreateSolidBrush(FColor);
|
||||
addsource(hp);
|
||||
end
|
||||
FHandle := hp;
|
||||
|
|
@ -671,7 +679,7 @@ type tcustombrush=class(tgdi)
|
|||
end
|
||||
end
|
||||
end
|
||||
//property Style read FStyle write SetStyle;
|
||||
property Style read FStyle write SetStyle;
|
||||
property Color read FColor write SetColor;
|
||||
//property Hatch read FHatch write SetHatch;
|
||||
end
|
||||
|
|
@ -814,59 +822,7 @@ type TRGNRoundRect=class(TRGNELLIP)
|
|||
property EllipseWidth:integer read FEllipseWidth write SetEllipseWidth;
|
||||
property EllipseHeight:integer read FEllipseHeight write SetEllipseHeight;
|
||||
end
|
||||
type TRGNPOLY=class(TRGN) //多边形
|
||||
{**
|
||||
@explan(说明)多边形区域%%
|
||||
**}
|
||||
private
|
||||
FPoints;
|
||||
FImode;
|
||||
function pointtovector(pts); //点转换为数组
|
||||
begin
|
||||
t := array();
|
||||
lt := 0;
|
||||
if not ifarray(pts)then return array();
|
||||
for i,v in pts do
|
||||
begin
|
||||
if ifarray(v)and ifnumber(v[0])and ifnumber(v[1])then
|
||||
begin
|
||||
t[lt++]:= v[0];
|
||||
t[lt++]:= v[1];
|
||||
end
|
||||
end
|
||||
return t;
|
||||
end
|
||||
function SetImode(v);
|
||||
begin
|
||||
if(v in array(1,2))and v <> FImode then
|
||||
begin
|
||||
FImode := v;
|
||||
DestroyHandle();
|
||||
end
|
||||
end
|
||||
function SetPoints(v);
|
||||
begin
|
||||
if v <> FPoints then
|
||||
begin
|
||||
FPoints := v;
|
||||
DestroyHandle();
|
||||
end
|
||||
end
|
||||
public
|
||||
function create(); //点 和填充模式
|
||||
begin
|
||||
inherited;
|
||||
FImode := ALTERNATE;
|
||||
end
|
||||
function CreateRgn();override;
|
||||
begin
|
||||
t := pointtovector(FPoints);
|
||||
len := length(t);
|
||||
if len>5 then return _wapi.CreatePolygonRgn(t,len/2,FImode);
|
||||
end
|
||||
property Points read FPoints write SetPoints;
|
||||
property Imode read FImode write SetImode;
|
||||
end
|
||||
|
||||
|
||||
type tcustomimage=class(TSLUIBASE)
|
||||
{**
|
||||
|
|
@ -3210,11 +3166,10 @@ type tshapechord = class(tshape,tshaperect,tsepoint)
|
|||
return inherited;
|
||||
end
|
||||
end
|
||||
type tshapepolygon = class(tshape)
|
||||
type tshapepolygon = class(tshapepolyline)
|
||||
function create(dc);
|
||||
begin
|
||||
inherited;
|
||||
fbpoints := array();
|
||||
end
|
||||
function draw();override;
|
||||
begin
|
||||
|
|
@ -3224,6 +3179,22 @@ type tshapepolygon = class(tshape)
|
|||
end
|
||||
return inherited;
|
||||
end
|
||||
function points(ps);override;
|
||||
begin
|
||||
r := inherited;
|
||||
if length(fbpoints)<2 then
|
||||
begin
|
||||
fbpoints := array();
|
||||
end
|
||||
return r;
|
||||
end
|
||||
end
|
||||
type tshapepolyline = class(tshape)
|
||||
function create(dc);
|
||||
begin
|
||||
inherited;
|
||||
fbpoints := array();
|
||||
end
|
||||
function points(ps);virtual;
|
||||
begin
|
||||
tps := array();
|
||||
|
|
@ -3234,21 +3205,13 @@ type tshapepolygon = class(tshape)
|
|||
tps[idx++] := array(v[0],v[1]);
|
||||
end
|
||||
end
|
||||
if length(tps)>2 then
|
||||
if length(tps)>1 then
|
||||
begin
|
||||
fbpoints := tps;
|
||||
end
|
||||
return self(true);
|
||||
end
|
||||
protected
|
||||
fbpoints;
|
||||
|
||||
end
|
||||
type tshapepolyline = class(tshapepolygon)
|
||||
function create(dc);
|
||||
begin
|
||||
inherited;
|
||||
end
|
||||
function draw();override;
|
||||
begin
|
||||
if fcanvas and fcanvas.HandleAllocated() and fbpoints then
|
||||
|
|
@ -3257,6 +3220,8 @@ type tshapepolyline = class(tshapepolygon)
|
|||
end
|
||||
return self(true);
|
||||
end
|
||||
protected
|
||||
fbpoints;
|
||||
end
|
||||
type tshapeBezier = class(tshape)
|
||||
function create(dc);
|
||||
|
|
@ -3416,3 +3381,58 @@ class(tUIglobalData).uisetdata("G_T_ICON_",class(TcustomIcon));
|
|||
finalization
|
||||
|
||||
end.
|
||||
(*
|
||||
type TRGNPOLY=class(TRGN) //多边形
|
||||
{**
|
||||
@explan(说明)多边形区域%%
|
||||
**}
|
||||
private
|
||||
FPoints;
|
||||
FImode;
|
||||
function pointtovector(pts); //点转换为数组
|
||||
begin
|
||||
t := array();
|
||||
lt := 0;
|
||||
if not ifarray(pts)then return array();
|
||||
for i,v in pts do
|
||||
begin
|
||||
if ifarray(v)and ifnumber(v[0])and ifnumber(v[1])then
|
||||
begin
|
||||
t[lt++]:= v[0];
|
||||
t[lt++]:= v[1];
|
||||
end
|
||||
end
|
||||
return t;
|
||||
end
|
||||
function SetImode(v);
|
||||
begin
|
||||
if(v in array(1,2))and v <> FImode then
|
||||
begin
|
||||
FImode := v;
|
||||
DestroyHandle();
|
||||
end
|
||||
end
|
||||
function SetPoints(v);
|
||||
begin
|
||||
if v <> FPoints then
|
||||
begin
|
||||
FPoints := v;
|
||||
DestroyHandle();
|
||||
end
|
||||
end
|
||||
public
|
||||
function create(); //点 和填充模式
|
||||
begin
|
||||
inherited;
|
||||
FImode := ALTERNATE;
|
||||
end
|
||||
function CreateRgn();override;
|
||||
begin
|
||||
t := pointtovector(FPoints);
|
||||
len := length(t);
|
||||
if len>5 then return _wapi.CreatePolygonRgn(t,len/2,FImode);
|
||||
end
|
||||
property Points read FPoints write SetPoints;
|
||||
property Imode read FImode write SetImode;
|
||||
end
|
||||
*)
|
||||
|
|
@ -980,9 +980,9 @@ type TcustomTreeCtlNode = class(tsluibase) //
|
|||
Owner.DeleteItemByIndex(Owner.GetItemIndex(nd));
|
||||
end
|
||||
FItems.Deli(idx);
|
||||
CurrentDeleteNode := nd;
|
||||
FCurrentDeleteNode := nd;
|
||||
nd.parent := self(true);
|
||||
CurrentDeleteNode := nil;
|
||||
FCurrentDeleteNode := nil;
|
||||
if nd = Owner.CurrentNode then
|
||||
begin
|
||||
Owner.SetSel(nil);
|
||||
|
|
@ -1015,9 +1015,9 @@ type TcustomTreeCtlNode = class(tsluibase) //
|
|||
begin
|
||||
idx := 0; //ItemCount-1;
|
||||
it := FItems[idx];
|
||||
CurrentDeleteNode := it;
|
||||
FCurrentDeleteNode := it;
|
||||
it.parent := self(true);
|
||||
CurrentDeleteNode := nil;
|
||||
FCurrentDeleteNode := nil;
|
||||
FItems.Deli(idx);
|
||||
end
|
||||
end
|
||||
|
|
@ -1061,9 +1061,9 @@ type TcustomTreeCtlNode = class(tsluibase) //
|
|||
odexp := it.Expanded;
|
||||
it.UnExpand();
|
||||
FItems.InsertBefor(it,idx0);
|
||||
CurrentAddNode := it;
|
||||
FCurrentAddNode := it;
|
||||
it.Parent := self(true);
|
||||
CurrentAddNode := nil;
|
||||
FCurrentAddNode := nil;
|
||||
it.UpDateHierarchy();
|
||||
nits[nitsi++]:= it;
|
||||
idx0++;
|
||||
|
|
@ -1095,9 +1095,9 @@ type TcustomTreeCtlNode = class(tsluibase) //
|
|||
odexp := it.Expanded;
|
||||
it.UnExpand();
|
||||
FItems.InsertBefor(it,idx);
|
||||
CurrentAddNode := it;
|
||||
FCurrentAddNode := it;
|
||||
it.Parent := self(true);
|
||||
CurrentAddNode := nil;
|
||||
FCurrentAddNode := nil;
|
||||
it.UpDateHierarchy();
|
||||
if Expanded and Owner.NodeInList(self)then
|
||||
begin
|
||||
|
|
@ -1297,8 +1297,8 @@ type TcustomTreeCtlNode = class(tsluibase) //
|
|||
@param(Owner)(TcustomTreeCtl) 所有者 %%
|
||||
**}
|
||||
protected //父子节点设置相关
|
||||
property CurrentDeleteNode read FCurrentDeleteNode write FCurrentDeleteNode;
|
||||
property CurrentAddNode read FCurrentAddNode write FCurrentAddNode;
|
||||
property CurrentDeleteNode read FCurrentDeleteNode;
|
||||
property CurrentAddNode read FCurrentAddNode;
|
||||
FItems; //子项
|
||||
[weakref]FParent; //父节点
|
||||
function Gitems();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue