fpevalw.pas 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. unit fpevalw;
  2. {****************************************************************************}
  3. interface
  4. {****************************************************************************}
  5. uses fpdebug,dialogs,views,objects,fpconst,drivers;
  6. type Pevaluate_dialog=^Tevaluate_dialog;
  7. Tevaluate_dialog=object(Tdialog)
  8. watch:Pwatch;
  9. expr_input,expr_output:Pinputline;
  10. constructor init(var bounds:Trect);
  11. procedure evaluate;
  12. procedure handleevent(var event:Tevent);virtual;
  13. destructor done;
  14. end;
  15. {****************************************************************************}
  16. implementation
  17. {****************************************************************************}
  18. constructor Tevaluate_dialog.init(var bounds:Trect);
  19. var r:Trect;
  20. l:Plabel;
  21. b:Pbutton;
  22. begin
  23. inherited init(bounds,'Evaluate expression');
  24. options:=options or ofcentered;
  25. {watch is auto initialized to nil.}
  26. r.assign(2,3,size.x-20,4);
  27. new(expr_input,init(r,255));
  28. insert(expr_input);
  29. r.assign(2,2,size.x-20,3);
  30. new(l,init(r,'E~x~pression:',expr_input));
  31. insert(l);
  32. r.assign(2,6,size.x-20,7);
  33. new(expr_output,init(r,255));
  34. insert(expr_output);
  35. r.assign(2,5,size.x-20,6);
  36. new(l,init(r,'~R~esult:',expr_output));
  37. insert(l);
  38. r.assign(size.x-14,3,size.x-3,5);
  39. new(b,init(r,'~E~valuate',cmEvaluate,bfDefault));
  40. insert(b);
  41. r.assign(size.x-14,6,size.x-3,8);
  42. new(b,init(r,'Help',cmHelp,bfNormal));
  43. insert(b);
  44. expr_input^.select;
  45. end;
  46. procedure Tevaluate_dialog.evaluate;
  47. begin
  48. if watch<>nil then
  49. dispose(watch,done);
  50. new(watch,init(expr_input^.data^));
  51. expr_output^.data^:=strpas(watch^.current_value);
  52. expr_output^.drawview;
  53. end;
  54. procedure Tevaluate_dialog.handleevent(var event:Tevent);
  55. begin
  56. inherited handleevent(event);
  57. if event.what=evCommand then
  58. case event.command of
  59. cmEvaluate:
  60. evaluate;
  61. end;
  62. end;
  63. destructor Tevaluate_dialog.done;
  64. begin
  65. if watch<>nil then
  66. dispose(watch,done);
  67. end;
  68. end.