objpos.pp 955 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. program objpos;
  2. uses xforms;
  3. const
  4. dx : TFL_Coord = 11 ;
  5. dy : TFL_Coord = 7 ;
  6. procedure move_cb(ob : PFL_OBJECT; data : longint);cdecl;
  7. var
  8. but : PFL_OBJECT;
  9. x,y,w,h : TFL_COORD;
  10. begin
  11. but := PFL_OBJECT (data);
  12. fl_get_object_geometry(but,@x,@y, @w, @h);
  13. if ( (x + dx) < 0) or ( (x+w+dx) >= but^.form^.w) then
  14. dx := -dx;
  15. if ( (y + dy) < 0) or ( (y+h+dy) >= but^.form^.h) then
  16. dy := -dy;
  17. x := x+dx;
  18. y := y+dy;
  19. fl_set_object_position(but,x,y);
  20. end;
  21. var
  22. form : PFL_FORM;
  23. but, obj : PFL_OBJECT ;
  24. begin
  25. fl_initialize(@argc, argv, 'FormDemo', nil, 0);
  26. form := fl_bgn_form(FL_DOWN_BOX,400,200);
  27. but := fl_add_button(FL_NORMAL_BUTTON,140,160,70,35,'Exit');
  28. obj := fl_add_button(FL_TOUCH_BUTTON,330,150,50,30,'Move');
  29. fl_set_object_callback(obj,PFL_CALLBACKPTR(@move_cb),longint(but));
  30. fl_end_form();
  31. fl_show_form(form,FL_PLACE_MOUSE,FL_NOBORDER,'ObjPos');
  32. fl_do_forms();
  33. end.