Mega Code Archive

 
Categories / Delphi / Examples
 

Neoturk forum - yazıya göre renkli richedit

" 14 Aralık 2005 02:07 Richedit richedit'e her karakter girişinde yazıyı kontrol ederek renklendirmesini istiyorum, mesela 'delphi' yazarsam richeditte anında "delphi" yazısı kırmızı renke dönüşecek 'borland' yazarsam richeditte anında "borland" yazısı yeşil renke dönüşecek gibi.. shafack " cevap: merhaba, güzel sorunuz için teşekkür ederim. forma 1 adet richedit 1 adet button yerleştiriniz. //...written by neoturk - 16.12.2005 procedure TForm1.Button1Click(Sender: TObject); const ozel_kelime_sayisi=7; var ozel_kelimeler:array[1..ozel_kelime_sayisi] of string; ozel_renkler:array[1..ozel_kelime_sayisi] of integer; posx,m,n:integer;x:string; function toplam(sonsatir:integer):integer; var t,m:integer; begin t:=0; for m:=sonsatir downto 0 do t:=t+length(richedit1.lines[m])+2; result:=t; //final end; begin m:=1;ozel_kelimeler[m]:='neoturk ';ozel_renkler[m]:=clred; m:=2;ozel_kelimeler[m]:='delphi ';ozel_renkler[m]:=clgreen; m:=3;ozel_kelimeler[m]:='programlama ';ozel_renkler[m]:=clblue; m:=4;ozel_kelimeler[m]:='praktik ';ozel_renkler[m]:=clred; m:=5;ozel_kelimeler[m]:='çalışması ';ozel_renkler[m]:=claqua; m:=6;ozel_kelimeler[m]:='byte ';ozel_renkler[m]:=cllime; m:=7;ozel_kelimeler[m]:='function';ozel_renkler[m]:=clpurple; richedit1.Clear; richedit1.Lines.add('delphi richeditte nasıl renkli satırlar yapabiliriz'); richedit1.Lines.add('bu örnek bir praktik çalışmasıdır'); richedit1.Lines.add('amacım özel kelimeleri renklendirmektir'); richedit1.Lines.add('algoritması kolay bir çalışmadır'); richedit1.Lines.add('programlama deneyimini geliştirir'); richedit1.Lines.add('tek dikkat edilecek olan nokta'); richedit1.Lines.add('toplam functionundaki +2 sayısının eklenmiş olmasıdır'); richedit1.Lines.add('çünkü satır sonu özel karakteri 2 byte yer kaplar.'); richedit1.Lines.add('1 byte demek 1 karakter demektir.'); richedit1.Lines.add('ayrıca özel kelimeler dizisindeki'); richedit1.Lines.add('boşluk durumu tercihe bırakılmıştır.'); richedit1.Lines.add('örnek olarak function kelimesinde boşluk yoktur'); richedit1.Lines.add('functionel örneğinde olduğu gibi....'); richedit1.Lines.add('neoturk delphi programcısıdır'); for m:=0 to richedit1.Lines.Count-1 do begin x:=richedit1.Lines[m]; for n:=1 to ozel_kelime_sayisi do begin posx:=pos(ozel_kelimeler[n],x); if posx>0 then begin richedit1.SelStart:=toplam(m-1)+posx-1; richedit1.SelLength:=length(ozel_kelimeler[n]); with richedit1.SelAttributes do Color := ozel_renkler[n]; end; end; end; //final end; yazı yazma anında renklendirmek için richeditin keypress olayından faydalanabiliriz. bu durumda akıllı bir sorgulama-renklendirme motoru yazmak gerekiyor. bunu şu anda aklımdan yazdım ama vaktim az olduğu için başka bir zamana bırakıyorum. bu örneği geliştirerek kendinize göre düzenleyiniz.... saygılarımla_ neoturk_