Einzelnen Beitrag anzeigen

CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#1

Problem beim String bearbeiten/ändern

  Alt 16. Jun 2007, 00:08
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!
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat