AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Synedit editieren

Ein Thema von Delbor · begonnen am 2. Okt 2019 · letzter Beitrag vom 2. Okt 2019
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Synedit editieren

  Alt 2. Okt 2019, 10:52
Delphi-Version: 5
Hi zusammen

Folgender Code soll mir daGrundgerüst für eine HTML-Seite liefern:
Delphi-Quellcode:
procedure TMainPage.BtnNewHtmlPageClick(Sender: TObject);
begin
  Self.SynEdiHTML.Text := '<!DOCTYPE HTML>'+ sLineBreak +
  ' '+ sLineBreak +
  '<html>'+ sLineBreak +
  ' <head>'+ sLineBreak +
  ' <title></title>'+ sLineBreak +
  ' </head>'+ sLineBreak +
  ' '+ sLineBreak +
  '<body>'+ sLineBreak +
  '</body>'+ sLineBreak +
  '</html>';
end;
Das klappt einwandfrei. Schwieriger wirds seltsamerweise(?), wenn ich dann Code schreiben will, der mir zusätzlichen Text aus der Zwischenablage einfügen soll. meine Absicht: Ich klicke auf das Synedit dahin, wo ich den Text aus der Zwischenablage haben will, füge da allerdings erst HTML-Absatztags ein, zwischen denen dann der eigentliche Text eingefügt werden soll.
Da ich verschiedentlich Sachen ausprobieren musste, entspricht der folgende Code nicht wirklich dem, was ich haben will, doch er scheint schonmal syntaktisch richtig - mit einem kleinen Wermutstropfen: er gibt nichts aus.
Delphi-Quellcode:
procedure TMainPage.BtnAbsatzClick(Sender: TObject);
  var X :String;
begin
  X := IntToStr(SynEdiHTML.CaretX);
  SynEdiHTML.Lines[SynEdiHTML.CaretX].Insert(SynEdiHTML.CaretX, ' <p>' + '</p>');
// sLinebreak + // X +
// sLinebreak +
end;
Mangels Dokumentation zum Synedit hab ich Onkel Google befragt, und der gab mir dann irgendwann auch dies(Bei den Synedit-Demos hab ich nichts gefunden):

1: SynEdit.SelText:='Test';

Klar, das wird funktionieren. Aber ich denke nicht, dass das die feine englische Art ist. Es sei denn, Text aus der Zwischenablage soll gleich auch markiert werden.
An die Verwendung von "add" anstelle von "Insert" hab ich gar nicht gedacht, da damit normalerweise Text angehängt und nicht eingefügt wird.
Wieso funktionert hier "insert" nicht wirklich?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#2

AW: Synedit editieren

  Alt 2. Okt 2019, 11:39
Hi zusammen

Delphi-Quellcode:
procedure TMainPage.BtnAbsatzClick(Sender: TObject);
  var X :String;
begin
  X := IntToStr(SynEdiHTML.CaretX);
  SynEdiHTML.Lines[SynEdiHTML.CaretX].Insert(SynEdiHTML.CaretX, ' <p>' + '</p>');
// sLinebreak + // X +
// sLinebreak +
end;
Synedit kenne ich zwar nicht, aber wenn das in etwa wie TMemo funktioniert gibt die LInes-Eigenschaft eine Zeile als String zurück und in diesen fügt das Insert dann die Tags ein (Insert ist eine Methode von TStringhelper), und der resultierende String wird dann weggeworfen, da Du ihn halt nicht an SynEdiHTML.Lines[SynEdiHTML.CaretX] zuweist, um die alte Zeile zu ersetzen. Der Zeilenindex sollte sicher auch CaretY sein, nicht CaretX.

Um Text an der momentanen Position des Carets einzufügen ist eine Zuweisung an SelText wirklich die beste Methode, soweit SelCount (oder war das SelLength?) = 0 ist.
Peter Below
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Synedit editieren

  Alt 2. Okt 2019, 12:08
Hi peterbelow

Vielen Dank für die Antwort! Ich habs dann doch mal getestet, und ja...
Es ist lange her, seit ich mal mit dem Memo oder dem Richedit gearbeitet habe. Ansonsten verwende ich eigentlich nur die Methoden von TStrings - daher auch mein Versuch mit Insert.
Delphi-Quellcode:
procedure TMainPage.BtnAbsatzClick(Sender: TObject);
  var X :Integer;
begin
  SynEdiHTML.SelText := ' <p>' +
  sLinebreak + // X +
  sLinebreak +
  '</p>';
end;
Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz