mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
230 lines
5.5 KiB
ObjectPascal
230 lines
5.5 KiB
ObjectPascal
unit PasEdit;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
ExtCtrls, StdCtrls, ComCtrls, ToolWin,clipbrd, FileCtrl,
|
|
Buttons, ImgList,RichEdit2;
|
|
|
|
type
|
|
TCommandEvent = procedure ( comId: integer; values: string; valueI: integer ) of object;
|
|
|
|
TPasMemo = class(TRichEdit98)
|
|
protected
|
|
procedure WMChar(var Message: TWMChar); message WM_CHAR;
|
|
public
|
|
end;
|
|
|
|
TMacroForm = class(TForm)
|
|
StatusBar1: TStatusBar;
|
|
ScrollBox1: TScrollBox;
|
|
Panel1: TPanel;
|
|
Panel2: TPanel;
|
|
Bevel1: TBevel;
|
|
ImageList1: TImageList;
|
|
FileListBox1: TFileListBox;
|
|
OpenDialog1: TOpenDialog;
|
|
FontDialog1: TFontDialog;
|
|
Panel3: TPanel;
|
|
Bevel2: TBevel;
|
|
Bevel3: TBevel;
|
|
ComboBox1: TComboBox;
|
|
SpeedButton1: TSpeedButton;
|
|
SpeedButton2: TSpeedButton;
|
|
SpeedButton3: TSpeedButton;
|
|
SpeedButton4: TSpeedButton;
|
|
SpeedButton5: TSpeedButton;
|
|
SpeedButton6: TSpeedButton;
|
|
procedure ComboBox1Change(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure SpeedButton1Click(Sender: TObject);
|
|
procedure SpeedButton2Click(Sender: TObject);
|
|
procedure SpeedButton3Click(Sender: TObject);
|
|
procedure SpeedButton4Click(Sender: TObject);
|
|
procedure SpeedButton5Click(Sender: TObject);
|
|
procedure SpeedButton6Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
Macroname : string;
|
|
MDirectory: string;
|
|
Memo: TPasMemo;
|
|
Procedure UpdateCombo;
|
|
Procedure InitCombo;
|
|
|
|
end;
|
|
|
|
var
|
|
MacroForm: TMacroForm;
|
|
OnCommand : TCommandEvent;
|
|
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
{$IFDEF DELPHI4}
|
|
// uses ImgList;
|
|
{$ENDIF}
|
|
{$IFDEF DELPHI5}
|
|
// uses ImgList;
|
|
{$ENDIF}
|
|
|
|
|
|
Procedure TMacroForm.UpdateCombo;
|
|
var a: integer;
|
|
begin
|
|
Combobox1.items.Clear;
|
|
if (MDirectory <> '') then begin
|
|
FilelistBox1.Directory := MDirectory;
|
|
FilelistBox1.Update;
|
|
for a:= 0 to FilelistBox1.items.Count - 1 do
|
|
begin
|
|
Combobox1.items.add
|
|
(copy(FilelistBox1.items[a],1,length(FilelistBox1.items[a])-4));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
Procedure TMacroForm.InitCombo;
|
|
begin
|
|
Memo.lines.Clear;
|
|
if Combobox1.items.count > 0 then
|
|
begin
|
|
combobox1.itemindex := 0;
|
|
Memo.lines.loadfromfile(mdirectory+combobox1.text+'.cmf');
|
|
macroname := combobox1.text;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TMacroForm.ComboBox1Change(Sender: TObject);
|
|
begin
|
|
Memo.lines.loadfromfile(mdirectory+combobox1.text+'.cmf');
|
|
macroname := combobox1.text;
|
|
end;
|
|
|
|
procedure TMacroForm.FormCreate(Sender: TObject);
|
|
begin
|
|
memo := TPasMemo.Create(self);
|
|
memo.visible := false;
|
|
memo.Parent := scrollbox1;
|
|
memo.Ctl3D := false;
|
|
memo.BorderStyle := Forms.bsNone;
|
|
memo.Align := alCLient;
|
|
memo.visible := true;
|
|
memo.Font.name := 'Tahoma';
|
|
memo.font.size := 8;
|
|
memo.Wantreturns := True;
|
|
memo.WantTabs := True;
|
|
memo.WordWrap := False;
|
|
memo.AutoURLDetect := adDefault;
|
|
|
|
|
|
macroname := '';
|
|
mdirectory := '';
|
|
width := 400;
|
|
height := 330;
|
|
ImageList1.GetBitmap(0,SpeedButton1.Glyph);
|
|
ImageList1.GetBitmap(1,SpeedButton2.Glyph);
|
|
ImageList1.GetBitmap(2,SpeedButton3.Glyph);
|
|
ImageList1.GetBitmap(3,SpeedButton4.Glyph);
|
|
ImageList1.GetBitmap(4,SpeedButton5.Glyph);
|
|
ImageList1.GetBitmap(5,SpeedButton6.Glyph);
|
|
|
|
end;
|
|
|
|
|
|
procedure TMacroForm.FormShow(Sender: TObject);
|
|
begin
|
|
setforegroundwindow(handle);
|
|
end;
|
|
|
|
procedure TMacroForm.SpeedButton1Click(Sender: TObject);
|
|
var Istring : string;
|
|
begin
|
|
IString:= InputBox('New Macro', 'Enter a name for the new Macro', 'Macro1');
|
|
if IString = '' then exit;
|
|
MacroName := IString;
|
|
memo.lines.clear;
|
|
memo.Lines.savetofile(mdirectory+macroname+'.cmf');
|
|
updatecombo;
|
|
Combobox1.Itemindex := Combobox1.items.indexof(macroname);
|
|
end;
|
|
|
|
procedure TMacroForm.SpeedButton2Click(Sender: TObject);
|
|
begin
|
|
If opendialog1.execute then
|
|
begin
|
|
memo.lines.loadfromfile(opendialog1.filename);
|
|
end;
|
|
end;
|
|
|
|
procedure TMacroForm.SpeedButton3Click(Sender: TObject);
|
|
begin
|
|
if Macroname = '' then exit;
|
|
memo.Lines.savetofile(mdirectory+macroname+'.cmf');
|
|
end;
|
|
|
|
procedure TMacroForm.SpeedButton4Click(Sender: TObject);
|
|
begin
|
|
If macroname = '' then exit;
|
|
If messagedlg(
|
|
'The macro '+Macroname+' will be deleted',mtConfirmation,[mbOk,mbCancel],0) = mrOk
|
|
then
|
|
begin
|
|
memo.lines.clear;
|
|
deletefile(mdirectory+macroname+'.cmf');
|
|
updatecombo;
|
|
initcombo;
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TMacroForm.SpeedButton5Click(Sender: TObject);
|
|
begin
|
|
if assigned(OnCommand) then OnCommand(0,memo.Lines.Text,0);
|
|
//CompObj.script := memo.Lines;
|
|
//CompObj.Compile('Self',CompObj);
|
|
//CompObj.Run;
|
|
|
|
end;
|
|
|
|
procedure TMacroForm.SpeedButton6Click(Sender: TObject);
|
|
begin
|
|
if fontdialog1.execute then
|
|
memo.font := fontdialog1.font;
|
|
end;
|
|
|
|
|
|
{ TPasMemo }
|
|
procedure TPasMemo.WMChar(var Message: TWMChar);
|
|
var tab: String;
|
|
cPos: TPoint;
|
|
cLine,xLine: String;
|
|
l,i:Integer;
|
|
Key: Char;
|
|
begin
|
|
Key := Char(Message.CharCode);
|
|
if (Key = Char(VK_RETURN)) then begin
|
|
inherited;
|
|
cPOs := CaretPos;
|
|
xLine := Lines[cPos.y-1];
|
|
cLine := TrimLeft(xLine);
|
|
l := Length(xLine)-Length(cLine);
|
|
tab := '';
|
|
for i := 1 to l do tab := tab+' ';
|
|
SetSelTextBuf(pchar(tab))
|
|
end else if (Key = Char(VK_TAB)) then begin
|
|
tab := ' ';
|
|
SetSelTextBuf(pchar(tab));
|
|
end else begin
|
|
inherited;
|
|
end;
|
|
end;
|
|
|
|
end.
|