Ubuntu Türkiye

Yazılım => Programlama => Basic => Konuyu başlatan: empax - 21 Aralık 2011 - 22:54:49

Başlık: TextBox icinde arama yapma ve secili hale getirme
Gönderen: empax - 21 Aralık 2011 - 22:54:49
VisualBasic ile textBox icinde arama yaptirip bulunan tum benzer kelimeleri secili hale getirmeye calisiyorum ama beceremedim. Yardim ederseniz sevinirim.  :)

Soyle bir deneme yaptim:
For Each AradigimKelime In TextBox3.Text //Foreach te pek iyi degilim yanlis olabilir.
                    TextBox3.Focus()
                    TextBox3.Select(X, AradigimKelime.Length) //X yazan yere sanirim aranilan kelimenin baslangic noktasini yazacagim ama nasil?
                Next


Ayrica For Each icine IF TextBox3.Text.Contains(AradigimKelim) seklinde kosul eklemem gerekir mi?
Başlık: Ynt: TextBox icinde arama yapma ve secili hale getirme
Gönderen: sem - 21 Aralık 2011 - 23:02:39
String işlemleri ile ilgili sınıfın işlevlerini inceleyiniz... find gibi bir işlev olmalı. Bu işlevleriden birisi size X değerinizi veriyor olacaktır zaten...

IF ifadesini eklemek ise yararınıza olur... Aksi halde aradığınız kelime yoksa dahi son duruma getirecek olduğunuz for each ifadesi çalıştırılacaktır...


Not: String sınıfı size bulduğu ilk alt stringin indexini döndürüyor olabilir... Eğer daha sonraileri kendiniz bulmanız gerekirse yani string sınıfı içsel olarakbunları barındırmıyorsa; daha sonra arayacağınız AradadigimKelime değişkenini TextBox3.Text[AradadigimKelimeLength] kadar sonra aramanız gerekir... Yoksa bir tane bulduğunuz takdirde sonsuz döngüye girebilir program =)
Başlık: Ynt: TextBox icinde arama yapma ve secili hale getirme
Gönderen: empax - 21 Aralık 2011 - 23:09:03
Alıntı yapılan: sem0900 - 21 Aralık 2011 - 23:02:39
String işlemleri ile ilgili sınıfın işlevlerini inceleyiniz... find gibi bir işlev olmalı. Bu işlevleriden birisi size X değerinizi veriyor olacaktır zaten...
2 saattir arastiriyorum ama yukaridaki koddan fazla ileriye gidemedim.  :(

Alıntı Yap
IF ifadesini eklemek ise yararınıza olur... Aksi halde aradığınız kelime yoksa dahi son duruma getirecek olduğunuz for each ifadesi çalıştırılacaktır...

Yukaridaki kod parcasi kosul saglaniyorsa calisyor. Yani TextBox icinde aranilan kelime varsa calisiyor. Yinede gerek var mi ?

Tesekkurler.
Başlık: Ynt: TextBox icinde arama yapma ve secili hale getirme
Gönderen: sem - 21 Aralık 2011 - 23:22:35
VisualBasic için en iyi dökümantasyon msdn olacaktır sanırım...

http://msdn.microsoft.com/en-us/library/ms172836.aspx

Bu makaleyi incelediniz mi?

Bu arada bir string içerisinde arama işlemi için

InStr işlevini kullanmanız gerekiyormuş...

http://gokhanca.com/visualbasic-makale/70-visual-basic-string-fonksiyonlar.html

Adresinde örnek mevcut...

Kolay gelsin.. =)
Başlık: Ynt: TextBox icinde arama yapma ve secili hale getirme
Gönderen: empax - 22 Aralık 2011 - 01:17:32
                For Each ArananKelime In TextBox3.Text
                    TextBox3.Select(TextBox3.Text.IndexOf(ArananKelime), ArananKelime.Length)
                    TextBox3.Focus()
                Next


Simdi secili hale getirebiliyorum ancak sadece ilk bulunan kelimeyi, tum bulunan kelimeleri secili hale getirebilir miyiz ?
Başlık: Ynt: TextBox icinde arama yapma ve secili hale getirme
Gönderen: sem - 22 Aralık 2011 - 09:23:23
For each'i biraz araştırmak gerekecek sanırım.. Örneğin ben yanlış görmüyorsam siz zaten ArananKelime olaral TextBox3.Text strign'i içerisindeki tüm kelimeleri teker teker ArananKelime'ye atıyorsunuz? Yanlış mı görüyorum... Sizin ihtiyacınız olan InStr gibi bir fonksiyon...

* ArananKelime'yi ilgili String dizisi içerisinde ara...
* Index'ini al ayrıca ve TextBox3.Select(BulunanIndex, ArananKelime.Length)

* Aramaya index'ten itibaren devam et. Taki arama sonucu 0 olana kadar bu işleme devam et...
Başlık: Ynt: TextBox icinde arama yapma ve secili hale getirme
Gönderen: empax - 22 Aralık 2011 - 15:25:03
Galiba evet, for each dongusunu yanlis kullaniyorum, eksigim var o noktada.

InStr ve IndexOf ayni degeri donduruyor, alttaki orneklere bakabilirsiniz.

Her iki ornekte, aranan string arama yapilan string icerisinde yoksa -1, varsa baslangic noktasini donduruyor.
-InStr(Kaçıncı karakterden itibaren,Nerde aranacak,Ne aranacak)
-TextBox1.Text.IndexOf(Ne aranacak,Kaçıncı karakterden itibaren,Kaç karakter)

Sanirim atladigim bir nokta var o da TextBox'un coklu secmeyi(multi select) desteklememesi(?)
Yardimin icin cok tesekkurler @sem0900, sanirim bundan daha fazlasini yapamayacagiz  :)