Listbox item click sorunu
- yakupbaser
- Üye
- Mesajlar: 11
- Kayıt: 29 Haz 2013 01:07
Listbox item click sorunu
Merhabalar,
Xe7 de listboxtaki tüm itemlerın onclick eventını kullanarak bir uygulama hazırladım ve şöyle bir sorunla karşılaşıyorum.
Parmağımızla sürükleyip listboxun alt satırlarına gitmek istediğimizde parmağımızın dokunduğu itemın istemeden onclick metodunu çağırmış oluyoruz.
Bunun önüne geçmek için ondblclick kullanayım dedim. Malum firemonkeyde mobil için double click çalışmıyor ve bu bug henüz fixlenmiş değil.
Ben de manuel olarak kodlarla double click metodu geliştirdim fakat istediğim performansı vermiyor.
Bu istemeden tıklama olayına en stabil nasıl çözüm geliştirebiliriz? Listboxun onmousedown eventındaki TShiftState le ya da farklı bir yöntemle sorunu çözebilmemiz mümkün mü?
Xe7 de listboxtaki tüm itemlerın onclick eventını kullanarak bir uygulama hazırladım ve şöyle bir sorunla karşılaşıyorum.
Parmağımızla sürükleyip listboxun alt satırlarına gitmek istediğimizde parmağımızın dokunduğu itemın istemeden onclick metodunu çağırmış oluyoruz.
Bunun önüne geçmek için ondblclick kullanayım dedim. Malum firemonkeyde mobil için double click çalışmıyor ve bu bug henüz fixlenmiş değil.
Ben de manuel olarak kodlarla double click metodu geliştirdim fakat istediğim performansı vermiyor.
Bu istemeden tıklama olayına en stabil nasıl çözüm geliştirebiliriz? Listboxun onmousedown eventındaki TShiftState le ya da farklı bir yöntemle sorunu çözebilmemiz mümkün mü?
- barisatalay
- Üye
- Mesajlar: 398
- Kayıt: 02 Nis 2013 05:43
- İletişim:
Re: Listbox item click sorunu
Değişik bir çözüm önerebilirim.
formun private bölümüne "FTimeStamp: TDateTime;" şeklinde bir değişken tanımlayın ve geliştirmenize şu şekilde devam edin.
Listbox itemin onMouseDown eventine:
Aynı itemin onMouseUp eventine:
Biz burada ne yapmıs olduk saniyenin 10/2 si bir zaman aralığında Listboxun o iteminden parmak havaya kalkarsa tıklanma olayını gerçekleştirmesini istedik. Yani test edebilirsiniz kaydırırken bu zaman aralığına düşmemesi gerekir istediğiniz ölçüde değiştirebilirsinizde şirketteki projemizde bu şekilde çözüm getirebildik.
formun private bölümüne "FTimeStamp: TDateTime;" şeklinde bir değişken tanımlayın ve geliştirmenize şu şekilde devam edin.
Listbox itemin onMouseDown eventine:
Kod: Tümünü seç
FTimeStamp := Now;
Kod: Tümünü seç
if (MilliSecondOf(Now-FTimeStamp) < 200) then
begin
//Tıklanınca yapılmasını istediğiniz şeyler.
end;
Yeni bloğum: http://brsatalay.blogspot.com.tr/
- yakupbaser
- Üye
- Mesajlar: 11
- Kayıt: 29 Haz 2013 01:07
Re: Listbox item click sorunu
teşekkürler,
Double click olayı için de benzer bir çözüm üretmiştim:
Double click olayı için de benzer bir çözüm üretmiştim:
Kod: Tümünü seç
//global değişkenler
var
dbl: integer;
time: TDateTime;
procedure TForm2.btn1Click(Sender: TObject);
begin
// ondblclick
if dbl mod 2 <> 1 then
begin
Inc( dbl );
time := GetTime;
Exit;
end;
if MillisecondsBetween( GetTime, time ) > 400 then
begin
dbl := 0;
Exit;
end;
Inc( dbl );
// İşletmek istediğimiz kodlar buraya
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
Re: Listbox item click sorunu
bende buna benzer bir sorunu farklı bir şekilde çözdüm listview için edit mode dışında ise itemclick çalışsın aksi taktirde çalışmasın diye
procedure TMainScreen.lw_spamlistItemClick(const Sender: TObject;
const AItem: TListViewItem);
begin
if not lw_spamlist.EditMode=true then
ShowMessage(lw_spamlist.Items[lw_spamlist.ItemIndex].Detail);
end;
procedure TMainScreen.lw_spamlistItemClick(const Sender: TObject;
const AItem: TListViewItem);
begin
if not lw_spamlist.EditMode=true then
ShowMessage(lw_spamlist.Items[lw_spamlist.ItemIndex].Detail);
end;
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
- yakupbaser
- Üye
- Mesajlar: 11
- Kayıt: 29 Haz 2013 01:07
Re: Listbox item click sorunu
Baris hocam çözüm kısmen işe yaradı hatta biraz daha düşürdüm 1.3 milisaniye yaptım. Fakat şu var Whatsappi inceledim. listbox iteminde 1 milisaniye bile kalsam click metodunu çağırmıyor. Demekki daha sağlıklı bir çözümü olmalı. Bulabilirsem burdan paylasirim
Re: Listbox item click sorunu
Zaman tutma işlemini son tıklanan item indexini de tutarak güçlendirebilir, istediğiniz sonuca ulaşabilirsiniz.
Son item değişirse zamanı yenisiyle resetlersiniz, aynı item tıklanmış ise zamanı gözeterek çift tıklama olarak yorumlayabilirsiniz.
Son item değişirse zamanı yenisiyle resetlersiniz, aynı item tıklanmış ise zamanı gözeterek çift tıklama olarak yorumlayabilirsiniz.
- aytunccankir
- Üye
- Mesajlar: 6
- Kayıt: 10 Ara 2014 03:59
- Konum: Istanbul
- İletişim:
Re: Listbox item click sorunu
Kod: Tümünü seç
procedure TfrmMain.btnBilisimClick(Sender: TObject);
begin
TabActionBrowser.ExecuteTarget(nil);
browser.Navigate('http://xxxx);
end;
Software Engineering Stu @ BAU