mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 12:11:34 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| {
 | |
|     Copyright (c) 1997-2008 by the Daniel Mantione
 | |
|    
 | |
|     Debug expression evaluator dialog ? 
 | |
|    
 | |
|     See the file COPYING.FPC, included in this distribution,
 | |
|     for details about the copyright.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
|  **********************************************************************}
 | |
| 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.
 | 
