![]() |
HTML Editor -> Automatisch ein schliessendes Tag hinzufüg
Moin moin !
Ich bin grade dabei, mir einen HTML-Editor zu Programmieren, bei dem man HTML Dateien öffnen und bearbeiten kann. Ich öffne die Datei ganz normal, und zeige dann den Inhalt in einem TMemo, wo sie dann bearbeitet werden kann! Nun zum Problem : Ich möchte, dass wenn jemand ein öffnendet Tag eingibt, automatisch das schliessende hinzugefügt wird ! Bsp : Eingabe : "<a>" Automatisch "</a>" .... und am besten den Cursor zwischen die Tags (was ich auch selber schaffe) ^^^ Danke an euch ! |
Re: HTML Editor -> Automatisch ein schliessendes Tag hinz
Hi Nillen
schau dir mal SelLength, SelText und SelStart an
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Memo1.SetFocus; Memo1.SelLength:=0; Memo1.SelText:='<a></a>'; Memo1.SelStart:=Memo1.SelStart-4; end; mfg BrunoT |
Re: HTML Editor -> Automatisch ein schliessendes Tag hinz
Hallo,
etwas zum erweitern, verbessern :wink: : was u.a. noch fehlt: -prüfen ob Tag im nachfolgenden Text schon geschlossen wurde -erzeugen von leeren Taggerüsten verhindern'<></>' -Groß-/Kleinschreibung der Tags
Delphi-Quellcode:
Der Aufruf:
function SetEndTag(aMemo: TMemo): Boolean;
const NoTagEnd = 'br,hr,img';//Tag abschließen nicht erforderlich var iTagBegin,z : Integer; c : Char; sTag : String; begin Result := False; with aMemo do begin //ist Tag eingegeben und wo beginnt er ? for z := SelStart downto 1 do begin c := Text[z]; if c = '>' then//es wurde zuvor kein Tag geöffnet Break else if c = '<' then//aha, hier beginnt eingegebener Tag begin Result := True; iTagBegin := z; end; end; //ist es ein Kommentar-Tag '<!---' ? if Text[iTagBegin+1] = '!' then Result := False; if Result then begin //eingegebenen Tag ermitteln for z := iTagBegin to SelStart do begin c := Text[z]; if c in ['a'..'z','A'..'Z'] then sTag := sTag+c else if c = ' ' then//ist Leerzeichen, dann folgen Tag-Attribute Break; end; //abschließender Tag erforderlich ? if Pos(LowerCase(sTag),NoTagEnd) = 0 then begin SelText := '></'+sTag+'>'; SelStart := SelStart-Length(sTag)-3; end else Result := False; end; end; end;
Delphi-Quellcode:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin if Key = '>' then if SetEndTag(Memo1) then Key := #0;//sonst wird Zeichen doppelt eingetragen end; |
Re: HTML Editor -> Automatisch ein schliessendes Tag hinz
Jo Lannes !
Also echt schonmal fett, danke! Noch kann man allerdings am Ende der Datei keine Eingabe machen! Dann ensteht ne mega Exeption, aber is kein Ding! admit komm ich auf jeden Fall weiter! Danken nochmal ^^ |
Re: HTML Editor -> Automatisch ein schliessendes Tag hinz
Hallo,
Zitat:
Bist Du sicher das die Exeption durch meinen Code erzeugt wird, wenn ja, in welcher Zeile tritt er auf? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz