Hayirli Ramazanlar
Web sayfalarinda oldugu gibi. kelimenin uzerine fareyle gidildiginde kelimenin altinin cizilmesi veya renklendirilmesi veya sisirilmesi Richeditte mumkunmu.
Yani cumle icinde herhangi bir kelimeyle kontrol yapmak istiyorum.
ilginizden dolayi simdiden tesekkurler
Selamlar
Richedit-Kelime isaretleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Merhaba size de hayırlı ramazanlar,
İstediğiniz tam olarak nedir onu bilmiyorum ama biraz uğraştım şöyle bir şey çıktı işinize yarar mı bilmiyorum, bir bakarsınız. Burada richeditin içinde bir yazı mevcut. Yazıdaki kelimenin üstüne gelince richeditte bu kelimeyi arayıp bu kelimeden ne kadar varsa hepsini renklendiriyor. Siz isteğinize göre şekillendirirsiniz bunu.
Kolay gelsin
İstediğiniz tam olarak nedir onu bilmiyorum ama biraz uğraştım şöyle bir şey çıktı işinize yarar mı bilmiyorum, bir bakarsınız. Burada richeditin içinde bir yazı mevcut. Yazıdaki kelimenin üstüne gelince richeditte bu kelimeyi arayıp bu kelimeden ne kadar varsa hepsini renklendiriyor. Siz isteğinize göre şekillendirirsiniz bunu.
Kod: Tümünü seç
uses Richedit;
...
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
iCharIndex, iLineIndex, iCharOffset, i, j,p: Integer;
Pt: TPoint;
s,kelime: string;
begin
with TRichEdit(Sender) do
begin
Pt := Point(X, Y);
// İmlecin altındaki kelimenin karakteri indexi değişkene atanıyor
iCharIndex := Perform(Messages.EM_CHARFROMPOS, 0, Integer(@Pt));
if iCharIndex < 0 then Exit;
// Satır indexi değişkene atanıyor
iLineIndex := Perform(EM_EXLINEFROMCHAR, 0, iCharIndex);
iCharOffset := iCharIndex - Perform(EM_LINEINDEX, iLineIndex, 0);
if Lines.Count - 1 < iLineIndex then Exit;
// Mevcut satır değişkene kaydediliyor
s := Lines[iLineIndex];
// Kelimenin başlangıcı aranıyor
i := iCharOffset + 1;
while (i > 0) and (s[i] <> ' ') do Dec(i);
// Kelimenin bitişi aranıyor
j := iCharOffset + 1;
while (j <= Length(s)) and (s[j] <> ' ') do Inc(j);
// İmlecin altında bulunan yazı değişkene atanıyor
kelime:= Copy(s, i, j - i);
//<----üstüne gelinen kelimeyi renklendirme başlangıcı
p := RichEdit1.FindText(kelime, 0, Length(RichEdit1.Text),[stMatchCase]);
while p <> -1 do
begin
RichEdit1.selstart := p;
RichEdit1.SelLength := Length(kelime);
Richedit1.SelAttributes.Style := [fsBold];
RichEdit1.SelAttributes.Color:=clPurple;
p := RichEdit1.FindText(kelime, Richedit1.SelStart+1,Length(RichEdit1.Text), [stMatchCase]);
end;
//üstüne gelinen kelimeyi renklendirme bitisi---->
end;
end;
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
Richedit-Kelime isaretleme
Hayirli Ramazanlar
Elinize kolunuza gonlunuza saglik
Anlatmak istedigim sey bu formun basindaki ""SSS" Arama" Uye Listesi" vs. fareyle uzenine gidildiginde "kirmizi renklenmesi-altinin cizilmesi" idi.
Ayni yontem Richeditte olabilirmi diyeydi.
Kodu denerim insa.
Elinize kolunuza gonlunuza saglik
Anlatmak istedigim sey bu formun basindaki ""SSS" Arama" Uye Listesi" vs. fareyle uzenine gidildiginde "kirmizi renklenmesi-altinin cizilmesi" idi.
Ayni yontem Richeditte olabilirmi diyeydi.
Kodu denerim insa.
Jedi bileşenlerinde RichEdit url özelliği var(web adresi yazarken köprüyü kuruyor, aynı zamanda eventsinde onurlclick olayı, işinizi görür mü bilmiyorum. Ücretsiz bileşen kurulumu da forumda mevcut, bir bakın isterseniz.Ayrıca forumda da bayağı bahsediliyor bu bileşen..
viewtopic.php?t=7702&highlight=jedi
viewtopic.php?t=7702&highlight=jedi
Meramimi anlatamadin ozur
Hayirli ramazanlar
Hepinizin ilgisine, elinize, gonlunuze saglik
Meramimi anlatamadim. Soyle diyeyim: Richeditte "Allah muminlerin yardimcisidir" diye bir cumle var. Ben bu cumlenin icinden bir kelimeyle bir olayi kontrol etmek istiyorum.
Ornegin: "Allah"in uzerine fareyle gittigimde burada bir olay meydana gelmesi lazimki yazdigim kodda bir kontrol yapabileyim.
Burada "Allah" isminin uzerindeyken markalamadan ya "Renk" degismesi lazim veya "Allah"in alti cizilmesi"lazimki bir olay meydana gelsin, bu olaydan sonra kontrol yapilabilsin.
Yani cumle icinde (Richedit) tipki bilesenlerin "hint"i gibi bir cok kelimeye aciklama yazilmasi lazim. Bu aciklamalarda kelimenin uzerine fareyle gidildiginde o kelimeyle kontrol edilip bir richeditte goruntulenecek.
Ben bunu selsatart ve sellength ile yapmaya calistim olmadi.
Tesekkurler
Hepinizin ilgisine, elinize, gonlunuze saglik
Meramimi anlatamadim. Soyle diyeyim: Richeditte "Allah muminlerin yardimcisidir" diye bir cumle var. Ben bu cumlenin icinden bir kelimeyle bir olayi kontrol etmek istiyorum.
Ornegin: "Allah"in uzerine fareyle gittigimde burada bir olay meydana gelmesi lazimki yazdigim kodda bir kontrol yapabileyim.
Burada "Allah" isminin uzerindeyken markalamadan ya "Renk" degismesi lazim veya "Allah"in alti cizilmesi"lazimki bir olay meydana gelsin, bu olaydan sonra kontrol yapilabilsin.
Yani cumle icinde (Richedit) tipki bilesenlerin "hint"i gibi bir cok kelimeye aciklama yazilmasi lazim. Bu aciklamalarda kelimenin uzerine fareyle gidildiginde o kelimeyle kontrol edilip bir richeditte goruntulenecek.
Ben bunu selsatart ve sellength ile yapmaya calistim olmadi.
Tesekkurler
Re: Meramimi anlatamadin ozur
Öncelikle RichEdit 'e sen (funksiyon veya procedure) ile belirtmezsen nerden bilecek senin hangi kelime hakkında bilgi ve olay istediğini bu bir,Orhan yazdı:Hayirli ramazanlar
Hepinizin ilgisine, elinize, gonlunuze saglik
Meramimi anlatamadim. Soyle diyeyim: Richeditte "Allah muminlerin yardimcisidir" diye bir cumle var. Ben bu cumlenin icinden bir kelimeyle bir olayi kontrol etmek istiyorum.
Ornegin: "Allah"in uzerine fareyle gittigimde burada bir olay meydana gelmesi lazimki yazdigim kodda bir kontrol yapabileyim.
Burada "Allah" isminin uzerindeyken markalamadan ya "Renk" degismesi lazim veya "Allah"in alti cizilmesi"lazimki bir olay meydana gelsin, bu olaydan sonra kontrol yapilabilsin.
Yani cumle icinde (Richedit) tipki bilesenlerin "hint"i gibi bir cok kelimeye aciklama yazilmasi lazim. Bu aciklamalarda kelimenin uzerine fareyle gidildiginde o kelimeyle kontrol edilip bir richeditte goruntulenecek.
dediğin olayı bir dini cd içerisinde görmüştüm...
Ama açıklanmasını istediğin kelimelerle ilgili başka bir bilgi deposu olması gerekir. Burada yazdığın prosedure içerisine anılı kelimelerin bu depodan karşılığını çağırmasını ve yine buraya bir başka yerde oluşturacağın procedure yi tetiklemesi için bir olay yazmak gerekir ki bu da o bilgi deposundaki istenen bilgiyi ekrana getirsin.
Tekrar kolay gelsin....
Tekrar merhaba,
önce gönderdiğim kod üzerinde biraz değişiklik yaptım. Açıklamayı diğer bir richeditte göstermek istediğinizi söylemişsiniz. Ben de form üzerine iki richedit koydum, birincisinde asıl metin olacak. ikincisi boş olacak, açıklamalar burada gösterilecek. Örnek olsun diye iki kelime için yapmaya çalıştım.
Birinci richedite bir text koyun, bu text içerisinde "Allah" ve ramazan kelimeleri geçsin. Bu şekilde bir bakın. Sizin dediğinize yakın işlev görüyor. Yalnız büyük küçük harf duyarlı oluyor. Umarım işinize yarar
önce gönderdiğim kod üzerinde biraz değişiklik yaptım. Açıklamayı diğer bir richeditte göstermek istediğinizi söylemişsiniz. Ben de form üzerine iki richedit koydum, birincisinde asıl metin olacak. ikincisi boş olacak, açıklamalar burada gösterilecek. Örnek olsun diye iki kelime için yapmaya çalıştım.
Kod: Tümünü seç
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
iCharIndex, iLineIndex, iCharOffset, i, j,p: Integer;
Pt: TPoint;
s,kelime: string;
begin
with TRichEdit(Sender) do
begin
Pt := Point(X, Y);
// İmlecin altındaki kelimenin karakteri indexi değişkene atanıyor
iCharIndex := Perform(Messages.EM_CHARFROMPOS, 0, Integer(@Pt));
if iCharIndex < 0 then Exit;
// Satır indexi değişkene atanıyor
iLineIndex := Perform(EM_EXLINEFROMCHAR, 0, iCharIndex);
iCharOffset := iCharIndex - Perform(EM_LINEINDEX, iLineIndex, 0);
if Lines.Count - 1 < iLineIndex then Exit;
// Mevcut satır değişkene kaydediliyor
s := Lines[iLineIndex];
// Kelimenin başlangıcı aranıyor
i := iCharOffset + 1;
while (i > 0) and (s[i] <> ' ') do Dec(i);
// Kelimenin bitişi aranıyor
j := iCharOffset + 1;
while (j <= Length(s)) and (s[j] <> ' ') do Inc(j);
// İmlecin altında bulunan yazı değişkene atanıyor
kelime:= Copy(s, i, j - i);
if pos('Allah',kelime)>0 then
begin
RichEdit2.Text:='Aciklama1';
// veya richedit1.showhint:=true; richedit1.hint:='Aciklama1';
p := RichEdit1.FindText(kelime, iCharIndex-Length(kelime), iCharIndex+Length(kelime),[stMatchCase]);
RichEdit1.selstart := p;
RichEdit1.SelLength := Length(kelime);
//Richedit1.SelAttributes.Style := [fsBold,fsUnderline];
//RichEdit1.SelAttributes.Color:=clPurple;
end
else if pos('ramazan',kelime)>0 then
begin
RichEdit2.Text:='Aciklama2';
// veya richedit1.showhint:=true; richedit1.hint:='Aciklama2';
p := RichEdit1.FindText(kelime, iCharIndex-Length(kelime), iCharIndex+Length(kelime),[stMatchCase]);
RichEdit1.selstart := p;
RichEdit1.SelLength := Length(kelime);
//Richedit1.SelAttributes.Style := [fsBold,fsUnderline];
//RichEdit1.SelAttributes.Color:=clPurple;
end
else
begin
RichEdit2.Text:='';
RichEdit1.selstart := 0;
RichEdit1.SelLength := 0;
end;
end;
end;
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
Kelimeyle kontrol
Hayirli Ramazanlar
Ilgilerinizden dolayi hepinize tesekkurler.
Ayni yontemi bende denemistim, fakat bana cok mantikli gelmedigi icin, cokta kod gerektigi icin vaz gecmistim. Yani mantik asagi yukari ayni. Richeditte bir kelimeyle kontrol edip ayni kelimeye hint yazmak veya aciklama yazmak vs. Baska farkli metotlar deneyecegim olmazsa bu metodu herhalde kullanirim.
Ozellikle ilgilerinizden dolayi tesekkurden baska yapabileck bir seyim yok
Hos ve saglikli kalin
Ilgilerinizden dolayi hepinize tesekkurler.
Ayni yontemi bende denemistim, fakat bana cok mantikli gelmedigi icin, cokta kod gerektigi icin vaz gecmistim. Yani mantik asagi yukari ayni. Richeditte bir kelimeyle kontrol edip ayni kelimeye hint yazmak veya aciklama yazmak vs. Baska farkli metotlar deneyecegim olmazsa bu metodu herhalde kullanirim.
Ozellikle ilgilerinizden dolayi tesekkurden baska yapabileck bir seyim yok
Hos ve saglikli kalin