Edytor HTML - Automatyczne zamykanie tagów

0

Wiem że coś ostatnio moda na te edytory. Ja też pisze edytor. Mam taki problem . Jak napisać, żeby program zamykał automatycznie tagi html, np.: napisze <marquee> to program napisze </marquee>, ale żeby kursor był po środku, czyli między <marquee>,a </marquee>. Poprosił bym o jakiś kodzik. Jak w tym moim edytorze zrobie zamykanie tagów, to wam sie im pochwale, bo myśle że jest ful wypas.

0

Nie chciałbym Cie dołowac, ale na runku edytorów jest juz pełno i każdy ma coś "specjalnego". Żeby Twój <ort>osiągnoł </ort>jakis sukces to naprawde musiałby byc full wypas.

Co do "kodziku" o który prosisz to jest on zalezny od tego z jakiego komponentu do edycji tekstu korzystasz. Generalnie jest jedna zasada. Sprawdzasz czy Ostatnio wprowadzony znak przeed karetką jest znakiem ">" jesli tak to szukasz w lewo pierwszego wystąpienia znaku "<" i po karetce wstawiasz to co znajduje się miedzy "<" a pierwszą spacją w obrębie znaków "<" i ">". Ot cała filozofia

0

Wiadomo, żeby program był znany to musi być ful wypas, ale ja to pisze bo jest satysfakcja, że sie napiszesz samemu jakiś program. Pokazałem nauczycielowi to nawet powieział że mu sie podoba.

A edytor mam w synedit, a ten kodzik to napisał byś coś bo nie badzo wiem jak to zrobić

0

stworz string jakis o nazwie np. opek
i jakis boolean np. o nazwie twojastara

zdarzenie on key down if key = vkkeyscan('<') then begin
twojastara := true;
opek := '';
end;

if key = vkkeyscan('>') then twojastara := false;

if twojastara then begin
if key = vkkeyscan('/') then begin twojastara := false; opek:=''; synedit1.text := synedit1.text + opek +'>' exit; end;
opek := opek+nacisniety+klawisz;

end;

tak na szybko bez sprawdzenia prosto xz glowy na runtime wpisywanie kodu

0

to mi coś nie chce działać, ale wpadłem na coś takiego:

procedure TForm1.SynEdit1KeyPress(Sender: TObject; var Key: Char);

begin
if key='<' then
begin
 pos := SynEdit1.CaretX+1;
 exit;
end;

if Key='>' then
begin

kon := SynEdit1.CaretX;
Timer1.Enabled := True;

Exit;
end;

end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin

SynEdit1.SelText := '</' + Copy(SynEdit1.Text, pos, kon);
SynEdit1.CaretX := kon+1;
Timer1.Enabled := False;

end;

wszystko działa, jak wpisze <b> to wyskoczy </b></code>, a kursor po środku, ale jak po środku dopisze jeszcze np. to powinno być <code><b><u> </u></b></code>, a wyskakuje <code><b><u> </u></b></b>.
Nie wiem co jest nie tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1