mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 14:20:05 +02:00
93 lines
2.1 KiB
ObjectPascal
93 lines
2.1 KiB
ObjectPascal
unit fpevalw;
|
|
|
|
{****************************************************************************}
|
|
interface
|
|
{****************************************************************************}
|
|
|
|
uses fpdebug,dialogs,views,objects,fpconst,drivers;
|
|
|
|
type Pevaluate_dialog=^Tevaluate_dialog;
|
|
Tevaluate_dialog=object(Tdialog)
|
|
watch:Pwatch;
|
|
expr_input,expr_output:Pinputline;
|
|
constructor init(var bounds:Trect);
|
|
procedure evaluate;
|
|
procedure handleevent(var event:Tevent);virtual;
|
|
destructor done;
|
|
end;
|
|
|
|
{****************************************************************************}
|
|
implementation
|
|
{****************************************************************************}
|
|
|
|
constructor Tevaluate_dialog.init(var bounds:Trect);
|
|
|
|
var r:Trect;
|
|
l:Plabel;
|
|
b:Pbutton;
|
|
|
|
begin
|
|
inherited init(bounds,'Evaluate expression');
|
|
options:=options or ofcentered;
|
|
{watch is auto initialized to nil.}
|
|
|
|
r.assign(2,3,size.x-20,4);
|
|
new(expr_input,init(r,255));
|
|
insert(expr_input);
|
|
|
|
r.assign(size.x-20,3,size.x-18,4);
|
|
insert(new(Phistory,init(r,expr_input,hidEvaluate)));
|
|
|
|
r.assign(2,2,size.x-20,3);
|
|
new(l,init(r,'E~x~pression:',expr_input));
|
|
insert(l);
|
|
|
|
r.assign(2,6,size.x-20,7);
|
|
new(expr_output,init(r,255));
|
|
insert(expr_output);
|
|
|
|
r.assign(2,5,size.x-20,6);
|
|
new(l,init(r,'~R~esult:',expr_output));
|
|
insert(l);
|
|
|
|
r.assign(size.x-14,3,size.x-3,5);
|
|
new(b,init(r,'~E~valuate',cmEvaluate,bfDefault));
|
|
insert(b);
|
|
|
|
r.assign(size.x-14,6,size.x-3,8);
|
|
new(b,init(r,'Help',cmHelp,bfNormal));
|
|
insert(b);
|
|
|
|
expr_input^.select;
|
|
end;
|
|
|
|
procedure Tevaluate_dialog.evaluate;
|
|
|
|
begin
|
|
if watch<>nil then
|
|
dispose(watch,done);
|
|
new(watch,init(expr_input^.data^));
|
|
expr_output^.data^:=strpas(watch^.current_value);
|
|
expr_output^.drawview;
|
|
end;
|
|
|
|
procedure Tevaluate_dialog.handleevent(var event:Tevent);
|
|
|
|
begin
|
|
inherited handleevent(event);
|
|
if event.what=evCommand then
|
|
case event.command of
|
|
cmEvaluate:
|
|
evaluate;
|
|
end;
|
|
end;
|
|
|
|
destructor Tevaluate_dialog.done;
|
|
|
|
begin
|
|
if watch<>nil then
|
|
dispose(watch,done);
|
|
end;
|
|
|
|
end.
|