mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-01 13:03:43 +02:00
131 lines
2.7 KiB
ObjectPascal
131 lines
2.7 KiB
ObjectPascal
unit lr_funct_editor_unit1;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
|
ExtCtrls, LR_Class, LR_Const, EditBtn, Buttons, ButtonPanel;
|
|
|
|
type
|
|
|
|
{ TLR_FunctEditor1Form }
|
|
|
|
TLR_FunctEditor1Form = class(TForm)
|
|
BitBtn3: TBitBtn;
|
|
BitBtn4: TBitBtn;
|
|
BitBtn5: TBitBtn;
|
|
ButtonPanel1: TButtonPanel;
|
|
Edit1: TEdit;
|
|
Edit2: TEdit;
|
|
Edit3: TEdit;
|
|
GroupBox1: TGroupBox;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Panel1: TPanel;
|
|
procedure BitBtn5Click(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
FParCount:integer;
|
|
FD:TfrFunctionDescription;
|
|
public
|
|
procedure SetFunctionDescription(AFD:TfrFunctionDescription);
|
|
function ResultText:string;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses lr_expres, lr_utils;
|
|
|
|
{ TLR_FunctEditor1Form }
|
|
|
|
|
|
procedure TLR_FunctEditor1Form.BitBtn5Click(Sender: TObject);
|
|
var
|
|
EF:TlrExpresionEditorForm;
|
|
begin
|
|
EF:=TlrExpresionEditorForm.Create(Application);
|
|
try
|
|
if EF.ShowModal = mrOk then
|
|
case (Sender as TComponent).Tag of
|
|
1:Edit1.Text:=EF.ResultExpresion;
|
|
2:Edit2.Text:=EF.ResultExpresion;
|
|
3:Edit3.Text:=EF.ResultExpresion;
|
|
end;
|
|
finally
|
|
EF.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TLR_FunctEditor1Form.FormCreate(Sender: TObject);
|
|
begin
|
|
Caption:=sFunctionEditor;
|
|
GroupBox1.Caption:=sArguments;
|
|
Label3.Caption:=sArgument1;
|
|
Label4.Caption:=sArgument2;
|
|
Label5.Caption:=sArgument3;
|
|
end;
|
|
|
|
|
|
procedure TLR_FunctEditor1Form.SetFunctionDescription(AFD: TfrFunctionDescription);
|
|
var
|
|
S, S1:string;
|
|
i:integer;
|
|
begin
|
|
|
|
// TODO: context sensitive inpunts, for example for
|
|
// bandname use the list of available bands.
|
|
|
|
FD:=AFD;
|
|
S:=FD.funDescription;
|
|
S1:=Copy(S, 1, Pos('/', S)-1);
|
|
|
|
FParCount:=0;
|
|
for i:=1 to Length(S1) do
|
|
if S1[i]='<' then
|
|
Inc(FParCount);
|
|
|
|
Label1.Caption:=S1;
|
|
Delete(S, 1, Pos('/', S));
|
|
Label2.Caption:=S;
|
|
|
|
Label3.Enabled:=FParCount>0;
|
|
Edit1.Enabled:=FParCount>0;
|
|
BitBtn3.Enabled:=FParCount>0;
|
|
|
|
Label4.Enabled:=FParCount>1;
|
|
Edit2.Enabled:=FParCount>1;
|
|
BitBtn4.Enabled:=FParCount>0;
|
|
|
|
Label5.Enabled:=FParCount>2;
|
|
Edit3.Enabled:=FParCount>2;
|
|
BitBtn5.Enabled:=FParCount>0;
|
|
|
|
end;
|
|
|
|
function TLR_FunctEditor1Form.ResultText: string;
|
|
begin
|
|
Result:='';
|
|
if FParCount>0 then
|
|
Result:=Result + '[' + lrGetUnBrackedStr(Edit1.Text) + ']';
|
|
|
|
if FParCount>1 then
|
|
Result:=Result + ', [' + lrGetUnBrackedStr(Edit2.Text) + ']';
|
|
|
|
if FParCount>2 then
|
|
Result:=Result + ', [' + lrGetUnBrackedStr(Edit3.Text) + ']';
|
|
|
|
if FParCount>0 then
|
|
Result:='('+Result+')';
|
|
Result:=FD.funName + Result;
|
|
end;
|
|
|
|
end.
|
|
|