mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-06 09:58:29 +02:00
47 lines
955 B
ObjectPascal
47 lines
955 B
ObjectPascal
program objpos;
|
|
|
|
uses xforms;
|
|
|
|
const
|
|
dx : TFL_Coord = 11 ;
|
|
dy : TFL_Coord = 7 ;
|
|
|
|
procedure move_cb(ob : PFL_OBJECT; data : longint);cdecl;
|
|
|
|
var
|
|
but : PFL_OBJECT;
|
|
x,y,w,h : TFL_COORD;
|
|
|
|
begin
|
|
but := PFL_OBJECT (data);
|
|
fl_get_object_geometry(but,@x,@y, @w, @h);
|
|
|
|
if ( (x + dx) < 0) or ( (x+w+dx) >= but^.form^.w) then
|
|
dx := -dx;
|
|
if ( (y + dy) < 0) or ( (y+h+dy) >= but^.form^.h) then
|
|
dy := -dy;
|
|
x := x+dx;
|
|
y := y+dy;
|
|
|
|
fl_set_object_position(but,x,y);
|
|
end;
|
|
|
|
var
|
|
form : PFL_FORM;
|
|
but, obj : PFL_OBJECT ;
|
|
|
|
begin
|
|
fl_initialize(@argc, argv, 'FormDemo', nil, 0);
|
|
|
|
form := fl_bgn_form(FL_DOWN_BOX,400,200);
|
|
but := fl_add_button(FL_NORMAL_BUTTON,140,160,70,35,'Exit');
|
|
obj := fl_add_button(FL_TOUCH_BUTTON,330,150,50,30,'Move');
|
|
fl_set_object_callback(obj,PFL_CALLBACKPTR(@move_cb),longint(but));
|
|
fl_end_form();
|
|
|
|
fl_show_form(form,FL_PLACE_MOUSE,FL_NOBORDER,'ObjPos');
|
|
|
|
fl_do_forms();
|
|
|
|
end.
|