![]() |
Re: Smilies im Richedit
PosEx()?
und das is doch in der schleife, oder net? |
Re: Smilies im Richedit
Ja, vergiss den Teil in Klammern ;)
PosEx ist in der Unit StrUtils dehklariert, näheres in der OH ... |
Re: Smilies im Richedit
also PosEx gibts in meiner delphi hilfe und in dieser unit net :(
|
Re: Smilies im Richedit
Zitat:
|
Re: Smilies im Richedit
Gibt es erst genau ab D7.
Aber eigentlich sollte doch der Text entfernt werden und so auch Pos reichen :gruebel: . |
Re: Smilies im Richedit
also ich habe sowas ähnliches schonmal programmiert und hab es etwas angepasst :
Delphi-Quellcode:
Ich hoffe das dir das hilft und ich nicht irgendwie an dir vorbeirede ^^
procedure ReplaceSmilie(Smile : String; Source : TRichedit);
var Posi : Integer; text : String; begin text := Source.Text; while pos(Smile,Text) <> 0 do begin if pos(Smile,Text) > 0 then begin Posi := pos(Smile,Text); delete(Text,pos(Smile,Text),Length(Smile)); // ':)' wird gelöscht insert('hehe',Text,posi); // und an dessen stelle 'hehe' eingefügt. Bei dir eben das bild end; Source.Text := Text; end; end; Bei der Zeile mit
Delphi-Quellcode:
musst du halt dein Smilie einfügen aber ich denke das das funktioniert.
insert('hehe',Text,posi);
|
Re: Smilies im Richedit
@Khabarakh
das isses ja auch. Das funzt ja auch ne weile, aber irgendwann will er net mehr. ich bau mal ein test prg zusammen und poste es hier. vllt findet ihr den (wahrscheinlich kleinen, dummen) fehler ;) |
Re: Smilies im Richedit
Liste der Anhänge anzeigen (Anzahl: 1)
hm,
ich probier deinen code mal aus. aber hier erstmal mein aktuelles prog. is ein jvRichedit, das das TRichedit das ja net so kann mit den bildern. |
Re: Smilies im Richedit
Wenn du sowieso ein JvRichEdit benutzt, warum nimmst du nicht die Funktion FindText? Wenn du stSetSelection angibst, dann markiert die dir sogar schon die Fundstelle.
|
Re: Smilies im Richedit
@ Flocke.
danke für den tipp. hab ich übersehen. hab das nun auch so gemacht, und daraus entsteht folgender code, der auch funzt :)
Delphi-Quellcode:
es ist ja nun so, dass er zunächst einmal immer nur das ERSTE smilie von einer sorte ersetzt. ich brauch nun noch ne repeat oder while schleife für außenherum, sodass er auch alle vorkommenden ersetzt. nur fällt mir keine bedingung für die schleife ein!?
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; Smilie: array[1..13] of string; function GetImageIndex(Image: String): Integer; begin if image = '(cool)' then Result := 0 else if image = ':-\' then Result := 1 else if (image = ':-(') or (image = ':(') then Result := 2 else if (image = ':-)') or (image = ':)') then Result := 3 else if (image = ';-)') or (image = ';)') then Result := 4 else if (image = ':-D') or (image = ':D') then Result := 5 else if (image = ':P') or (image = ':p') or (image = ':-P') then Result := 6 else Result := -1; end; begin Smilie[1] := '(cool)'; 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 if Pos(Smilie[i], ChatBox.Text) > 0 then begin ChatBox.FindText(Smilie[i], 0, Length(Chatbox.Text), [stSetSelection]); ChatBox.SelLength := Length(Smilie[i]); ChatBox.SelText := ''; AddImageToRichEdit(GetImageIndex(Smilie[i])); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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