umain.pas 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. unit umain;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, SynEdit, SynHighlighterPas, Forms, Controls,
  6. Graphics, Dialogs, StdCtrls, BGRAPascalScript, uPSI_BGRAPascalScript,
  7. BGRAVirtualScreen, uPSComponent, uPSComponent_Default, BGRABitmap, BCTypes,
  8. BGRABitmapTypes, uPSUtils;
  9. type
  10. { TForm1 }
  11. TForm1 = class(TForm)
  12. BGRAVirtualScreen1: TBGRAVirtualScreen;
  13. Button1: TButton;
  14. Button2: TButton;
  15. PSImport_Classes1: TPSImport_Classes;
  16. SynEdit1: TSynEdit;
  17. PSImport_BGRAPascalScript1: TPSImport_BGRAPascalScript;
  18. PSScript1: TPSScript;
  19. SynPasSyn1: TSynPasSyn;
  20. procedure BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
  21. procedure Button1Click(Sender: TObject);
  22. procedure Button2Click(Sender: TObject);
  23. function PSScript1NeedFile(Sender: TObject; const OrginFileName: tbtstring;
  24. var FileName, Output: tbtstring): Boolean;
  25. private
  26. { private declarations }
  27. public
  28. { public declarations }
  29. end;
  30. var
  31. Form1: TForm1;
  32. implementation
  33. {$R *.lfm}
  34. { TForm1 }
  35. procedure TForm1.Button1Click(Sender: TObject);
  36. var
  37. i: Integer;
  38. s: String;
  39. begin
  40. PSScript1.Script := SynEdit1.Lines;
  41. if PSScript1.Compile then
  42. begin
  43. PSScript1.Execute;
  44. Button2.Enabled := True;
  45. end else
  46. begin
  47. s := 'Compile error.' + LineEnding;
  48. for i := 0 to PSScript1.CompilerMessageCount-1 do
  49. with PSScript1.CompilerMessages[i] do
  50. s += '('+inttostr(Row)+','+inttostr(Col)+') '+MessageToString+LineEnding;
  51. ShowMessage(s);
  52. end;
  53. end;
  54. procedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
  55. begin
  56. if Button2.Enabled then
  57. Bitmap.StretchPutImage(Rect(0, 0, 32, 32), BitmapArray[0], dmSet);
  58. end;
  59. procedure TForm1.Button2Click(Sender: TObject);
  60. begin
  61. BGRAVirtualScreen1.DiscardBitmap;
  62. end;
  63. function TForm1.PSScript1NeedFile(Sender: TObject;
  64. const OrginFileName: tbtstring; var FileName, Output: tbtstring): Boolean;
  65. var
  66. aData: TStringList;
  67. begin
  68. FileName := GetCurrentDir + '\' + FileName;
  69. aData := TStringList.Create;
  70. try
  71. aData.LoadFromFile(FileName);
  72. Output := aData.Text;
  73. Result := True;
  74. finally
  75. aData.Free;
  76. end;
  77. end;
  78. end.