![]() |
Smilies im Richedit
hallo.
ich möchte eine procedure, die es ermöglicht, alle text-smilies wie zB ":-)" durch ein grafisches zu ersetzen. dazu habe ich mir überlegt, dass ich mit Pos() die Position von ":-)" suche und an dieser stelle dann das bild einfüge. ich verwende das TJvRichedit (Jedi). Dort gibt es eine Routine zum einfügen von bildern, die das bild immer an der aktuellen cursorposition einfügt. So nun mein fragen: 1) wie kann ich zu dieser stelle "springen", sodass ich dann das bild einfügen kann. 2) wie kann ich das am besten verallgemeinern für mehrere Smilies. nicht nur das eine ":-)" ich hoffe, dass ihr versteht was ich meine... Schonmal Danke für eure Antworten. MfG |
Re: Smilies im Richedit
Wie wäre es mit SelStart den Cursor an die entsprechende Stelle zu setzen?
|
Re: Smilies im Richedit
hm, ok.
werde es sofort ausprobieren. aber nebenbei nochmal eine frage: ich füge am ENDE vom richedit immer wieder text dazu. wie kann ich es ermöglichen, dass das richedit IMMER nach unten scrollt, also immer ganz unten ist? |
Re: Smilies im Richedit
Für eine neue Frage erstell bitte auch einen neuen Thread.
|
Re: Smilies im Richedit
hab nun folgendes probiert um das bild einzufügen. es klappt auch wunderbar. aber nur wenn die schleife nicht da ist.
dadurch wird leider immer nur das ERSTE smilie durch ein bild ersetzt. wie kann ich nun am besten lösen, dass alle ersetzt werden? wenn ich das so wie unten steht MIT der schleife verwende, is das ne endloschleife die ganz viele bilder hintereinander zeichnet. wahrscheilich wird das graf. smilie auch wieder als ": - )" erkannt. kann jmd helfen?
Delphi-Quellcode:
repeat
{ Text-Smilie finden } ChatBox.SelStart := Pos(':-)', ChatBox.Text) - 1; if ChatBox.SelStart >= 0 then begin { Smilie lsöchen } ChatBox.SelLength := 3; ChatBox.SelText := ''; { Bild einfügen } AddImageToRichEdit(0); end; until Chatbox.SelStart < 0; |
Re: Smilies im Richedit
Der Fehler liegt wohl in der letzten Zeile:
Delphi-Quellcode:
Bis der Selstart UNTER 0 ist. Dabei kann er gar nicht niedriger als 0 sein ;)
until Selstart < 0
Richtig sollte es heißen:
Delphi-Quellcode:
Dieser Code würde solange ausgeführt werden, bis ganz unten am Text angekommen würde ;)
until SelStart >= Length(ChatBox.Text)
//edit: Es wird außerdem nirgendwo SelStart verändert. Wie kann das auch zu einem Ende kommen? |
Re: Smilies im Richedit
- bitte löschen -
|
Re: Smilies im Richedit
so leider funzt es doch nicht :(
es funzt grade wie es will.. manchmal aber hängt er sich einfach auf. ich weiß nicht an was es liegen könnte :( kann jemand helfen? hier mal der code:
Delphi-Quellcode:
var
i: integer; Smilie: array[1..13] of string; function GetImageIndex(Image: String): Integer; begin if image = '(cool)' then Result := 0; if image = ':-\' then Result := 1; if (image = ':-(') or (image = ':(') then Result := 2; if (image = ':-)') or (image = ':)') then Result := 3; if (image = ';-)') or (image = ';)') then Result := 4; if (image = ':-D') or (image = ':D') then Result := 5; if (image = ':P') or (image = ':p') or (image = ':-P') then Result := 6; end; begin (* RichEdit1.Perform(EM_SCROLLCARET, 0, 0); RichEdit1.SelStart:=length(RichEdit1.text); *) Smilie[1] := ':-)'; Smilie[2] := ':-\'; Smilie[3] := ':-('; Smilie[4] := ':('; Smilie[5] := ':-)'; Smilie[6] := ':)'; Smilie[7] := ';-)'; Smilie[8] := ';)'; Smilie[9] := ':-D'; Smilie[10] := ':D'; Smilie[11] := ':P'; Smilie[12] := ':-P'; Smilie[13] := ':p'; for i := 1 to High(Smilie) do repeat { Text-Smilie finden } ChatBox.SelStart := Pos(Smilie[i], ChatBox.Text) - 1; if Pos(Smilie[i], chatbox.text) > 0 then begin { Smilie lsöchen } ChatBox.SelLength := Length(Smilie[i]); ChatBox.SelText := ''; { Bild einfügen } AddImageToRichEdit(GetImageIndex(Smilie[i])); end; until ChatBox.SelStart >= Length(ChatBox.Text); end; |
Re: Smilies im Richedit
hat denn keiner eine Idee woran das liegen könnte?
|
Re: Smilies im Richedit
Du musst mit Posex suchen, damit du deine vorige Fundstelle nicht nocheinmal findest !
(Und natürlich SelStart in der Schleife setzen ;) ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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