| unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, XPMan,
paxProject, //Using for opening, running and saving projects
//Following units are export classes and functions for full VCL compability
IMP_Forms, IMP_Controls, IMP_StdCtrls, IMP_SysUtils, IMP_Classes, IMP_Contnrs, IMP_Variants, IMP_Graphics, IMP_Dialogs, IMP_ExtCtrls, IMP_Buttons, IMP_ImgList, IMP_Registry, IMP_IniFiles, IMP_StrUtils, IMP_DateUtils, IMP_VarUtils, IMP_Types, IMP_MAPI, IMP_Messages, IMP_MSXML, IMP_ShellAPI, IMP_Menus, IMP_Math,
//This units contains paxScript implementation
PaxJavaScript, PaxC, PaxBasic, BASE_PARSER, PaxScripter, PaxPascal;
type
TForm1 = class(TForm)
Panel1: TPanel;
PageControl1: TPageControl;
Button1: TButton;
XPManifest1: TXPManifest;
Scripter: TPaxScripter;
PaxPascal1: TPaxPascal;
PaxBasic1: TPaxBasic;
PaxC1: TPaxC;
PaxJavaScript1: TPaxJavaScript;
OpenDialog1: TOpenDialog;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
paxProject: TPaxProject;
end;
procedure TerminateScript;
var
Form1: TForm1;
Fin: boolean = false;
implementation
{$R *.dfm}
//This procedure call terminate script correctly
procedure TerminateScript;
begin
Fin := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
Page: TTabSheet;
Memo: TMemo;
begin
if OpenDialog1.Execute then
begin
Button2.Enabled := false;
if FileExists(OpenDialog1.FileName) then
begin
if ANSILowerCase(ExtractFileExt(OpenDialog1.FileName)) = '.pax' then
begin
//After check extension creating tab for every file in project
for i := PageControl1.PageCount - 1 downto 0 do
PageControl1.Pages[i].Destroy;
SetCurrentDir(ExtractFilePath(ExpandFileName(OpenDialog1.FileName)));
paxProject.Close;
paxProject.Load(OpenDialog1.FileName);
Page := TTabSheet.Create(PageControl1);
Page.PageControl := PageControl1;
Page.Caption := ExtractFileName(OpenDialog1.FileName);
Memo := TMemo.Create(Page);
Memo.Parent := Page;
Memo.Align := alClient;
Memo.Lines.Text := paxProject.ProjectProgram;
for i := 0 to paxProject.UnitCount - 1 do //Units count in the project
begin
Page := TTabSheet.Create(PageControl1);
Page.PageControl := PageControl1;
Page.Caption := paxProject.Units[i].FileName; //Get unit file name
Memo := TMemo.Create(Page);
Memo.Parent := Page;
Memo.Align := alClient;
Memo.Lines.Assign(paxProject.Units[i].UnitBody); //Load unit text to memo
end;
Button2.Enabled := true;
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin //Register all the languages and routines
Scripter.RegisterLanguage(paxPascal1);
Scripter.RegisterLanguage(paxBasic1);
Scripter.RegisterLanguage(paxC1);
Scripter.RegisterLanguage(paxJavaScript1);
RegisterRoutine('procedure TerminateScript;', @TerminateScript);
paxProject := TPaxProject.Create('');
paxProject.Scripter := Scripter;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
paxProject.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if trim(paxProject.ProjectProgram) <> '' then
paxProject.Run; //Run the project
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
begin // Close the project and destroy all the tabs
paxProject.Close;
for i := PageControl1.PageCount - 1 downto 0 do
PageControl1.Pages[i].Destroy;
Button2.Enabled := false;
end;
end.
|
| |
 |
|
Runing paxProjects from your application |
|
|
|
|
|