AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Smilies im Richedit

Ein Thema von freak1985 · begonnen am 20. Jun 2005 · letzter Beitrag vom 23. Jun 2005
Antwort Antwort
Seite 1 von 3  1 23      
freak1985
(Gast)

n/a Beiträge
 
#1

Smilies im Richedit

  Alt 20. Jun 2005, 22:18
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Smilies im Richedit

  Alt 20. Jun 2005, 22:21
Wie wäre es mit SelStart den Cursor an die entsprechende Stelle zu setzen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#3

Re: Smilies im Richedit

  Alt 20. Jun 2005, 22:24
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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Smilies im Richedit

  Alt 20. Jun 2005, 22:26
Für eine neue Frage erstell bitte auch einen neuen Thread.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#5

Re: Smilies im Richedit

  Alt 20. Jun 2005, 22:42
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;
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#6

Re: Smilies im Richedit

  Alt 20. Jun 2005, 22:47
Der Fehler liegt wohl in der letzten Zeile:

until Selstart < 0 Bis der Selstart UNTER 0 ist. Dabei kann er gar nicht niedriger als 0 sein

Richtig sollte es heißen:

until SelStart >= Length(ChatBox.Text) Dieser Code würde solange ausgeführt werden, bis ganz unten am Text angekommen würde

//edit: Es wird außerdem nirgendwo SelStart verändert. Wie kann das auch zu einem Ende kommen?
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#7

Re: Smilies im Richedit

  Alt 20. Jun 2005, 22:50
- bitte löschen -
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#8

Re: Smilies im Richedit

  Alt 20. Jun 2005, 23:22
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;
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#9

Re: Smilies im Richedit

  Alt 21. Jun 2005, 13:24
hat denn keiner eine Idee woran das liegen könnte?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: Smilies im Richedit

  Alt 21. Jun 2005, 13:25
Du musst mit Posex suchen, damit du deine vorige Fundstelle nicht nocheinmal findest !

(Und natürlich SelStart in der Schleife setzen )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz