Hallo,
folgendes Szenario:
Ich habe ein synEdit (txtCode), in dem PHP-Quelltext drin steht.
Gelegentlich kommt es vor, dass dort Sachen, wie zum Beispiel
Code:
<?=_RENDER_('ProjectType','ProjectName','ProjectParam','ProjectValue','ProjectHTML')?>
Nun möchte ich, das wenn ich mit dem Cursor (Textcursor des SynEdits) in eine Zeile mit o.g. Zeileninhalt springe, er mir die
Werte ("Project...") ausliesst und in einen TValueListEditor á la Objektinspektor anzeigt.
Das macht er auch einwandfrei.
Nun möchte ich jedoch, dass wenn ich diese Werte im TValueListEditor (hier heisst er "propTool") eingebe, er die automatisch in die
zeile des SynEdits übernimmt.
Hier der Quellcode, der fürs Einlesen zuständig ist:
Delphi-Quellcode:
procedure TfrmMain.txtCodeKeyUp(Sender: TObject;
var Key: Word;
Shift: TShiftState);
var
curPos: Integer;
begin
propTool.Strings.Clear;
TA := Pars.Parse(txtCode.Lines[txtCode.CaretY - 1], False);
Pars.GetTokenValueFirst(T_IDENT,curPos,'
_RENDER_');
if curPos<>-1
then begin
Pars.GetTokenValueNext(curPos);
Pars.GetTokenValueNext(curPos);
propTool.InsertRow('
Type',Pars.GetTokenValueNext(curPos),True);
Pars.GetTokenValueNext(curPos);
propTool.InsertRow('
Name',Pars.GetTokenValueNext(curPos),True);
Pars.GetTokenValueNext(curPos);
propTool.InsertRow('
Params',Pars.GetTokenValueNext(curPos),True);
Pars.GetTokenValueNext(curPos);
propTool.InsertRow('
Value',Pars.GetTokenValueNext(curPos),True);
Pars.GetTokenValueNext(curPos);
propTool.InsertRow('
HTML',Pars.GetTokenValueNext(curPos),True);
end;
end;
Hier der Quellcode, der fürs übernehmen der Eingaben zusändig sein soll,
aber nicht funktioniert;
Delphi-Quellcode:
procedure TfrmMain.propToolKeyUp(Sender: TObject;
var Key: Word;
Shift: TShiftState);
var
NewCode, NewLine:
String;
NewType, NewName, NewParams, NewValue, NewHTML:
String;
RowID, CodePos: Integer;
begin
try
propTool.FindRow('
Type',RowID);
NewType:=propTool.Cells[1,RowID];
propTool.FindRow('
Name',RowID);
NewName:=propTool.Cells[1,RowID];
propTool.FindRow('
Params',RowID);
NewParams:=propTool.Cells[1,RowID];
propTool.FindRow('
Value',RowID);
NewValue:=propTool.Cells[1,RowID];
propTool.FindRow('
HTML',RowID);
NewHTML:=propTool.Cells[1,RowID];
NewCode:='
_RENDER_(''
'+NewType+'
''
,''
'+NewName+'
''
,''
'+NewParams+'
''
,''
'+NewValue+'
''
,''
'+NewHTML+'
''
);';
CodePos := txtCode.CaretY;
txtCode.CaretX := 0;
txtCode.SelStart := txtCode.CaretX;
txtCode.SelEnd := Length(txtCode.Lines[txtCode.CaretY]);
NewLine:=txtCode.Lines[txtCode.CaretY];
NewLine:=Copy(NewLine,1,CodePos - 1);
NewLine:=NewLine+NewCode;
txtCode.Lines[txtCode.CaretY]:='
<?='+NewCode+'
?>';
//NewLine;
txtCode.Lines[txtCode.SelEnd] := '
<?='+NewCode+'
?>';
txtCode.Invalidate;
except
end;
Vielleicht habt Ihr ja eine Idee. Vielleicht kann man das Ganze auch vereinfachen.
Ich hoffe jedenfalls, das mir hier irgendjemand dabei helfen kann, denn ich komm echt nicht weiter.
Liebe Grüße!