fpevalw.pas 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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(size.x-20,3,size.x-18,4);
  30. insert(new(Phistory,init(r,expr_input,hidEvaluate)));
  31. r.assign(2,2,size.x-20,3);
  32. new(l,init(r,'E~x~pression:',expr_input));
  33. insert(l);
  34. r.assign(2,6,size.x-20,7);
  35. new(expr_output,init(r,255));
  36. insert(expr_output);
  37. r.assign(2,5,size.x-20,6);
  38. new(l,init(r,'~R~esult:',expr_output));
  39. insert(l);
  40. r.assign(size.x-14,3,size.x-3,5);
  41. new(b,init(r,'~E~valuate',cmEvaluate,bfDefault));
  42. insert(b);
  43. r.assign(size.x-14,6,size.x-3,8);
  44. new(b,init(r,'Help',cmHelp,bfNormal));
  45. insert(b);
  46. expr_input^.select;
  47. end;
  48. procedure Tevaluate_dialog.evaluate;
  49. begin
  50. if watch<>nil then
  51. dispose(watch,done);
  52. new(watch,init(expr_input^.data^));
  53. expr_output^.data^:=strpas(watch^.current_value);
  54. expr_output^.drawview;
  55. end;
  56. procedure Tevaluate_dialog.handleevent(var event:Tevent);
  57. begin
  58. inherited handleevent(event);
  59. if event.what=evCommand then
  60. case event.command of
  61. cmEvaluate:
  62. evaluate;
  63. end;
  64. end;
  65. destructor Tevaluate_dialog.done;
  66. begin
  67. if watch<>nil then
  68. dispose(watch,done);
  69. end;
  70. end.