Mouse üzerine geldiğinde item'ı otomatik seçen listbox

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mouse üzerine geldiğinde item'ı otomatik seçen listbox

Mesaj gönderen hdayi »

Merhaba,
Sanırım doğru anlatabildim, mouse listbox'ta hangi item'ın üzerinde ise o item'ı seçmiş olsun istiyorum.
Bunu kod ile biraz yaptım. Listbox'ta itemheight 13 pixel; Lİstbox'ın onMouseMove olayında, mouse'un y koordinatını 13'e bölüyorum, listbox'ın itemindex'ine bu değeri atıyorum.
İyi güzel lakin, listbox'ta item sayısı fazla olduğu zaman (scroll bar ile aşağı doğru kaydırdığım zaman) mousun olduğu yerdeki değil daha yukardaki bir item'ı seçiyor.

Sanırım iyice karıştırdım, ne dediğimi anlayabilen oldu mu? :(

Teşekkürler,
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
highmemo

Mesaj gönderen highmemo »

Aradığın komut sanırım ItemAtPos

örnek komut aşağıda:

Kod: Tümünü seç

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var ix: Integer;
begin
  ix:= ListBox1.ItemAtPos(Point(X,Y), True);
  ListBox1.ItemIndex:= ix;
end;
İlgili koordinatta değer(item) yoksa ix değişkeni -1 iel geri dönüyor
ama ben yinede eşitledim.. Yani item yoksa index de -1 olsun ve seçim kalksın diye.

Ayrıca sondaki True parametresini false yaparsan ilgi yerde Item yoksa
sana son sıradakinin indexini döndürüyor.
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Allah razı olsun.
Tıkır tıkır çalıştı, tam istediğim gibi oldu :)
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Cevapla