Einzelnen Beitrag anzeigen

Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#3

Re: HTML Editor -> Automatisch ein schliessendes Tag hinz

  Alt 11. Jan 2006, 09:17
Hallo,

etwas zum erweitern, verbessern :
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:
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;
Der Aufruf:
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;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat