folder Tahribat.com Forumları
linefolder Delphi - Pascal
linefolder Delphi Clientdisconnect Eventinde Listviewden İtem Silme[Yardım]



Delphi Clientdisconnect Eventinde Listviewden İtem Silme[Yardım]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ★★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    formda 1 serversocket 1 tanede listviewmevcut.

    şimdi socket te onclientconnect eventine

    ListView1.Items.Add;
    index:=listview1.Items.Count-1;
    ListView1.Items[index].Caption:=pcadi;
    ListView1.Items[index].SubItems.Add(ip);

    şeklinde bir kodla listviewe düzgünce ekleme yapabiliyorum.

    Sorum şu bu clientdiscconnect olduğu zaman nasıl bir kod kullanmalıyımki dc olan makineyi listviewden kaldırayım.

    Timer vs kullanmadan yapmak mümkün mü ?

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ★★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>><<up

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    karakutu
    karakutu's avatar
    Kayıt Tarihi: 30/Ağustos/2005
    Erkek

    kod tam aklımda değil ama  şöyle izah edeyim 

     listeya  sağ tık eklersin  sağ tıka  bir sil yazarsın  silin altına da  ListView1.Items.delete  dersin olar biter ( kod parametresi  yanlış olabilir ) 


    Mevzu derin | Papikolas Planet
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ★★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    selected olan itemi değil clientdisconnect olan itemi silmeyi istiyorum.

     

    biraz daha açayım. Listview şu şekilde düşünün.

     

    ----ad --------- ip --------- tarih ----

    genki        127.0.0.1      11.02.2010

    genki2      192.168.1.1   11.02.2010

     

    şimdi clientconnect olayına item ekleme olayını yaptım. Yani dışardan bi bağlantı geldiğinde ad ip tarih şekilde ekleme yapıyor. Bu bağlantılar aktif olduğu sürece listviewde gözüksün ancak bağlantı disconnect olduğu zaman kendini sildin. Yani genki2 clienti kapadı ve disconnect olduğu zaman benim listview

    ----ad --------- ip --------- tarih ----

    genki        127.0.0.1      11.02.2010

     

    bu şekilde olsun.

     

     

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tnrsk
    Tnrsk's avatar
    Kayıt Tarihi: 01/Ağustos/2005
    Erkek

    koy bi timer hiç uğraşma

    serverin event'ında bağlı olup olmadığını kontrol edebilceğin bi kontrol yok çünkü

    ama indy serverin tcp serverinda ondisconnect eventı var o işini görmüyomu


  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ★★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    şimdi şöyle bişi var

    procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    statusbar1.SimpleText:=(socket.RemoteAddress + ' baglantisi koptu');
    end;

     

    serversocket1clientdisconnect olduğu an ben hangi adresin koptuğunu statusbara rahatlıkla basabiliyorum. Düşündüm ki kopan clientin ip numarasını biliyorsam timera gerek kalmadanda listviewden bu ip numarasına ait olan satırı kaldırabilirim. Ama listviewde sadece listview1.items.delete(1) şeklinde silme oluyor sanırsam. Ordaki 1 de satır noyu temsil ediyor.

    Şöle birşey düşündüm kopan ip numarasını listviewde aratıcak[ip adlı colunms mevcut] eğer ipyi bulursa count ile hangi satırda olduğunu integer olarak bir değişkene atayıp son olarakta listview1.items.delete(degisken) olarakta listviewden kaldırcak.

    Böyle birşey mümkün mü ? ki bana mümkün gibi geliyor ama delphi bilgim çok az olduğu için koda dökemedim :D

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurk
    nurk's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 15/Eylül/2006
    Erkek

    up.


    [22817//kaanabak]
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ★★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    sorunu cözdüm. Belki faydası olur kodları paylaşayım

    procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    var
    ara: TListItem;
    begin
    statusbar1.SimpleText:=(socket.RemoteAddress + ' baglantisi koptu');
    ara := ListView1.FindCaption(0, socket.RemoteAddress, True, True, False);
      if ara <> nil then
      begin
        ListView1.Selected := ara;
        ara.MakeVisible(True);
        ListView1.SetFocus;
        Listview1.DeleteSelected;
      end;
    end;

Toplam Hit: 3136 Toplam Mesaj: 8