Listbox sorunu ..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Listbox sorunu ..

Mesaj gönderen s1lv3r »

Arkadaşlar timer ile sürekli kontrol ettireceğim.

Listboxa eklenen satırlardan iki veya daha fazlası aynı olunca listboxın temizlenmesini istiyorum. Yani listbox dinamik durumda ve sürekli birşeyler ekleniyor. Eğer iki veya daha fazla aynı satır eklenirse listbox temizlensin nasıl yapabiliriz :roll:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

var
  i, j: integer;
begin
  for i := 0 to ListBox.ItemCount do
    for j := i + 1 to ListBox.ItemCount - 1 do
      if ListBox.Items[i] = ListBox.Items[j] then
        begin
          ListBox.Items.Clear;
          break;
        end;
//...
end;
gibi bir şey sorunu çözebilir.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Mesaj gönderen s1lv3r »

Kod istediğim olayı tam olarak karşılıyor teşekkürler DelphiTurkiyeyi seviyorum :)
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Re: Listbox sorunu ..

Mesaj gönderen tuanna »

s1lv3r yazdı:Arkadaşlar timer ile sürekli kontrol ettireceğim.

Listboxa eklenen satırlardan iki veya daha fazlası aynı olunca listboxın temizlenmesini istiyorum. Yani listbox dinamik durumda ve sürekli birşeyler ekleniyor. Eğer iki veya daha fazla aynı satır eklenirse listbox temizlensin nasıl yapabiliriz :roll:

ya bu aşamada timer ı kod yazımlarına dikkat etmek lazım derim ben her zaman...timer yazılan kodlar çok sık süreli çalıştığı için genelde işlemcimi baya yoruyor....sevmiyorum...bence listbox un change olayı sanki daha antıklı ben olsam ve durum sadece bu olsa onu kullanırdım...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

s1lv3r yazdı:Kod istediğim olayı tam olarak karşılıyor teşekkürler DelphiTurkiyeyi seviyorum :)
Sloganımız; sevgiyi de, bilgiyi de paylaşarak artırmak :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Merhabalar,

Timer ile ya da bir döngü ile bu tip kontrolü yapmak zahmetlidir. En iyi yöntem

ListBox'a bir string eklemek için ListBox1.Items.Add('falanca'); şeklide değilde, ayrıca bir procedure yazarak kontrol etmek daha iyidir.

Şöyle bir şey yap; Tabi istediğin gibi eğer aynı satırdan 2 yada daha fazla olunca listbox sıfırlanacaktır.

Kod: Tümünü seç

function TForm1.Add2ListBox(LB : TListBox; S : String) : Boolean;
begin
   Result := (LB.Items.IndexOf(S) = -1);
   if Result Then
      LB.Items.Add(S)
   Else
      LB.Clear;

   //Result=True ise veri listeye eklendi.
   //result=False ise veri zaten listede vardı ve listeyi sıfırladık..
end;
Görüldüğü gibi ne timer ne de bir döngü kullanıldı.

program içinde ise şu şekilde bu fonksiyonu işleteceksiniz.

Kod: Tümünü seç

.
.
   b := Add2ListBox(ListBox1, 'yeni metin');
   b := Add2ListBox(ListBox2, 'değişik bişey');
   b := Add3ListBox(ListBox2, 'delphi güzeldir');

   //bu satır ile ListBox1 sıfırlanacaktır...
   b := Add1ListBox(ListBox2, 'yeni metin');

   //Dönüş değeri sadece bilgi olsun diye var. Gerekmiyorsa
   //bu şekilde de kulanabilirsiniz.
   Add2ListBox(ListBox1, 'abcde');
.
.


Kolay gelsin..
Cevapla