AGB  ·  Datenschutz  ·  Impressum  







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

Text in Richedit anklicken

Ein Thema von XXcD · begonnen am 12. Jul 2009 · letzter Beitrag vom 14. Jul 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

Text in Richedit anklicken

  Alt 12. Jul 2009, 01:22
Hallo,
ich schreibe gerade an einem kleinen Chat.
Ich verwende zum Anzeigen des Textes ein TJvRichEdit.
Der Text ist so formatiert: Name: Text

Jetzt möchte ich den Namen gerne anklickbar machen so wie bei URLs.
Wie könnte ich das am besten anstellen?
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Text in Richedit anklicken

  Alt 12. Jul 2009, 20:47
Einer ne Ahnung wie ich das machen könnte?
  Mit Zitat antworten Zitat
Real-TTX

Registriert seit: 7. Mai 2008
Ort: Stuttgart / Wertheim
136 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Text in Richedit anklicken

  Alt 12. Jul 2009, 22:00
Nur so eine Idee..

Du könntenst anhand deiner Cursor Position das wort bestimmen. Und bei einem DbClick Event dann eben schauen was das für ein Wort ist das du makiert hast..

Gruß, Real-TTX
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: Text in Richedit anklicken

  Alt 12. Jul 2009, 22:31
Hi!

Zu Richedit und Links solltest du mit der Suche hier einiges finden können!


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Text in Richedit anklicken

  Alt 12. Jul 2009, 23:19
Ja ich will aber keine Links highlighten sondern die Namen.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#6

Re: Text in Richedit anklicken

  Alt 12. Jul 2009, 23:34
Das ist mir schon klar - aber du kannst die Namen ja als Link kennzeichnen.
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Text in Richedit anklicken

  Alt 13. Jul 2009, 00:46
Ok soweit funktioniert das, aber wie kann ich einen Text manuell als Link markieren?

Und ich bin noch dabei den ersten Teil des Textes zu färben.

Also ungefähr so:
Mustermann: Hallo


Aber wie kann ich das in dem Richedit machen?

Ich habs zum testen einmal so versucht funtzt aber nicht:
Delphi-Quellcode:
procedure AddColoredLine(ARichEdit: TTransparentRichEdit; AText: string);
begin
  with ARichEdit do
  begin
    ARichEdit.SelStart := 0;
    ARichEdit.SelLength := 3;
    SelAttributes.Color := clred;

    ARichEdit.SelStart := 4;
    ARichEdit.SelLength := 7;
    SelAttributes.Color := clgreen;
    Lines.Add(AText);
  end;
end;
Leider wird dadurch der gesamte Text grün
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Text in Richedit anklicken

  Alt 13. Jul 2009, 06:04
So also ich hab jetzt das was du willst mal mit einem normalen RichEdit versucht und habs hinbekommen das wenn die Mouse über dem Text ist er es anders darstellt
Delphi-Quellcode:
var Test : TSize;
    Rect1 : TRect;
    TextHöhe : Integer;
    Zeile : Integer;
    Text1 : String;
begin
Zeile := 1; //Zeile in der der Text steht (Index der Linesliste +1 des RichEdits)
Text1 := 'Hi//Text, der angeklickt werden soll
GetTextExtentPoint32(GetDC(RichEdit1.Handle), Text1, Length(Text1), Test); //WinApi Funktion, welche die Höhe und die Breite des Textes ausgibt
TextHöhe := -RichEdit1.Font.Height; //Höhe der Schrift allgemein
Rect1 := Rect(0,(Zeile-1)*TextHöhe,Test.cx,Zeile*TextHöhe + Test.cy); //Bereich festlegen, wo der Text ist, dabei sit vorausgesetz das der Text immer vorne steht
if (y >= Rect1.Top) and (y+TextHöhe <= Rect1.Bottom) and (x <= Rect1.Right) then //Überprüfung ob die Mouse in Rect (speicher am besten x,y von MouseMove und setze
//die Variable für X und Y ein, wenn du die Anweisung hier in DbClick einfügst
begin
//hier der Code, wenn die Mouse auf dem Text ist.
//z.b.
RichEdit1.SelStart := 0;
RichEdit1.SelLength := Length(Text1);
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsUnderline];}
end
else
begin
//und hier schreibste rein wie er normal aussehen soll.
//z.b.
{RichEdit1.SelStart := 0;
RichEdit1.SelLength := 4;
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsUnderline];}

end;
Ich hoffe ich konnte dir helfen, hab mich schnell daran gesetzt , weil es mal eine kleine herausforderung für mich war dies rauszufinden. Ich hoffe es klappt.
Bei mir klappte es, als ich 2 Zeilen hatte und der Text in der ersten Zeile war. Und hatte den Code bei MouseMove drin.

Gruß NickelM
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

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

Re: Text in Richedit anklicken

  Alt 13. Jul 2009, 11:48
Hallo,

Zitat von XXcD:
Leider wird dadurch der gesamte Text grün
nicht der gesamte Text, nur der hinzugefügte, und auch nur dann wenn das letzte Zeichen im RichEdit in dem Bereich(4-11) liegt den Du grün einfärbst. Bevor Du mit add etwas hinzufügst musst Du SelAtrributes auf die gewünschte Farbe setzen.
-> Selstart auf das Ende des Textes
-> SelAttributes setzen
-> add(..)
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Text in Richedit anklicken

  Alt 13. Jul 2009, 13:28
Ok das funktioniert schon ganz gut hab das noch ein wenig abgeändert da es sonst am flackern ist:
Delphi-Quellcode:
var Test : TSize;
    Rect1 : TRect;
    TextHöhe : Integer;
    Zeile : Integer;
    Text1 : String;
begin
Zeile := 1; //Zeile in der der Text steht (Index der Linesliste +1 des RichEdits)
Text1 := 'Hi'; //Text, der angeklickt werden soll
GetTextExtentPoint32(GetDC(JvRichEdit1.Handle), Text1, Length(Text1), Test); //WinApi Funktion, welche die Höhe und die Breite des Textes ausgibt
TextHöhe := -JvRichEdit1.Font.Height; //Höhe der Schrift allgemein
Rect1 := Rect(0,(Zeile-1)*TextHöhe,Test.cx,Zeile*TextHöhe + Test.cy); //Bereich festlegen, wo der Text ist, dabei sit vorausgesetz das der Text immer vorne steht
if (y >= Rect1.Top) and (y+TextHöhe <= Rect1.Bottom) and (x <= Rect1.Right) then //Überprüfung ob die Mouse in Rect (speicher am besten x,y von MouseMove und setze
//die Variable für X und Y ein, wenn du die Anweisung hier in DbClick einfügst
begin
//hier der Code, wenn die Mouse auf dem Text ist.
//z.b.
JvRichEdit1.SelStart := 0;
JvRichEdit1.SelLength := Length(Text1);
if not (fsUnderline in JvRichEdit1.SelAttributes.Style) then
begin
JvRichEdit1.SelAttributes.Style := JvRichEdit1.SelAttributes.Style + [fsUnderline];
end;
JvRichEdit1.Cursor:=crHandpoint;
end
else
begin
//und hier schreibste rein wie er normal aussehen soll.
//z.b.
JvRichEdit1.SelStart := 0;
JvRichEdit1.SelLength := Length(Text1);
if fsUnderline in JvRichEdit1.SelAttributes.Style then
begin
JvRichEdit1.SelAttributes.Style := JvRichEdit1.SelAttributes.Style - [fsUnderline];
JvRichEdit1.Cursor:=crDefault;
end;
end;
end;
Jetzt muss ich nur rausfinden wie ich die namen einmalig kennzeichnen kann.
Ich habe mir gedacht, dass ich so ne art dummyzeichen vor und hinter dem namen setzte.
Ungefähr so: #13+Username+#13

Nur was kann ich da für zeichen nehmen, da #13 ja ein zeilenumbruch macht kann ich das nicht nehmen.


Und noch ein Problem ich müsste jetzt noch verhinden, dass man den Text markieren kann, da es sonst zu fehlern kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 14:38 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