Næste bogstav skal være anden farve

Tags:    delphi

Jeg skal finde på en måde der gør at det næste bogstav der bliver tilføjet til en richedit bliver en anden farve. Har siddet og prøvet nogen ting men intet af det virker. Prøvede at gøre sådan så når man taster et bogstav ind, markerer den det sidst indtastede bogstav og farver det. Men det kunne jeg ikke få til at fungere. Nogen der har en idé???




-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
okay, så er der flere måder at gøre det på..
enten kan du bruge selve Richedit komponentet ved brug af Richedit.SelAttributes.Color:=clred;

Problemet med denne metode er at den er sindsyg langsom ved konventering af længere stykker tekst.

Den mest optimale metode er således:
Fold kodeboks ind/udKode 


Koden regner med at du har valgt den/de karakterer der skal ændres farve på.
Dette kan du gøre vha.
Fold kodeboks ind/udKode 


For yderligere info angående optimering af koden, kan jeg klart anbefale at du læser følgende dokument. Det er godtnok skrevet til brug med C++, men omskrivningen til Pascal er forholdsvis simpel :)

http://home.att.net/~robertdunn/Papers/FasterSyntaxHighlighting.doc

Med venlig hilsen
Ken Christensen



Hey Jonas,
det er faktisk pure simpelt når først man kender tricket :D

Men .. er der "kun" tale om selve tekstfarven eller skal baggrundsfarven også ændres? :)

Med Venlig Hilsen
Ken Christensen



Nej det er kun tekstfarven der skal ændres.


-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------



Undeclared Identifier: TCharFormatA
Uff! :P. Prøvede at tilføje ComCtrls...stadig undeclared identifier

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------



Ahh tilføj lige richedit til uses :P
så skulle det gerne være der :D

Med venlig hilsen
Ken Christensen



Det hele bliver en farve selvom jeg undervejs ændrer farven. Tror problemer er at Richedit.text ikke giver det rigtige resultat. Hvis jeg ændrer det til Richedit.text - 10 bliver noget farvet anderledes, men stadig ikke rigtigt.


-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------



Det hele bliver en farve selvom jeg undervejs ændrer farven. Tror problemer er at Richedit.text ikke giver det rigtige resultat. Hvis jeg ændrer det til Richedit.text - 10 bliver noget farvet anderledes, men stadig ikke rigtigt.


Prøve eventuelt at sætte starten og længden af det selectede område med som du ønsker farvet
Richedit1.selstart := "Position for start af farvning";
Richedit1.sellength := "Længden";

Huske at sætte fonten du farver med. Du kan eventuelt bare oprette en LAbel som du så indstiller til den font og farve du vil bruge og derefter sætter du Select fonten i richedit til label.fonten.

mine freeware og shareware programmer : http://www.veloci.dk

Mine Freeware spil : http://www.nino.dk/gamebiz & http://www.osirisgames.com



t