"
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_