Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Classım ile birlikte Listview Elemanlarımın yok olması
#1
Nerede Enteresan şey olur beni bulur  Tongue

MyRDPClient adında bir classım var,
Formumda ListViewim var bu ListViewde uzak masaüstü yapabildiğim sunucu listesi var, üzerine çift tıklayınca onun bilgilerini alıp MyRDPClient create edip bağlantıyı sağlıyorum. MyRDPClient parentim ListView

Bağlantıyı bitirdiğimde MyRDPClient  Free ve Nil yapıyorum. rdp sonlanıyor listem geri geliyor.

Fakat Free ve Nil yaptıktan sonra log atması için bir procedure yazmıştım onu çalıştırdım. bu sefer listem geri dönmedi, herhalde proceduremde hata var dedim sildim. yine de dönmüyor. rdp sonlanıyor ama Listviewimdeki elemanlar kayıp.

Uygulamayı sildim yeniden yazdım yine Rdp sonlanıp listeme geri döndüm. Belki başka bir yerde hata yapmışımdır dedim procedureyi yeniden yazdım hoppala yine aynı. Listviewimdeki elemanlar görünüp kayboluyor.

Acaba parenti ListView seçtiğim için midir dedim panel koydum listvieve tıklıyorum panelde uzak rdp sağlanıyor, bağlantı sonlandırıyorum yine listvievim gidiyor yani benim MyRDPClient ile ListView parent bağlantısını koparsam bile MyRDPClient mi free edince ListView elemanlarım gidiyor.

Bu neden olabilir ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
Kodunu görebilir isek daha isabetli yorum yapabiliriz sanırım güzel kardeşim.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#3
Gündüz iş yerinde okuduğumda soruyu anlayamamıştım. Şimdi eve geldim, sakin kafa ile tekrar okudum: yine anlayamadım Sad
There's no place like 127.0.0.1
WWW
Cevapla
#4
(19-09-2016, Saat: 22:06)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlGündüz iş yerinde okuduğumda soruyu anlayamamıştım. Şimdi eve geldim, sakin kafa ile tekrar okudum: yine anlayamadım Sad

Normal Abi bende anlayamadım Smile
Bakın şimdi böyle bir listvievim (rdp bağlantı bilgisayarlarım) var
kEMgEm.png

Listemden bağlanacağım sunucuya dbclik yapınca rdp yapıyor işimi hallediyorum.
1NpkVD.png

İşim bitip bağlantıyı sonlandırınca listem yok oluyor
ZY5VZA.png

şimdi ilk mesajı okursanız daha anlaşılır olur...

Proje kodlarını ekledim.


Ek Dosyalar
.zip   MSRDP.zip (Dosya Boyutu: 165,06 KB / İndirme Sayısı: 8)
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#5
Öncelikle sana tavsiyem; imkanın el verdiği ölçüde lokal değişkenler kullan. Sadece tek bir fonksiyon içinde kullanılacak bir değişkeni muhakkak o fonksiyon içinde tanımla. (list: Tlistitem; değişkeni gibi)
Form1'in fonksiyonları içinde kullanılacak bir değişkeni Form1'in private bölümünde tanımla.(MyRDPClient, maxsure, second, gerisayim vs...)
Kısacası interface bölümünün var bloğunu zorunlu olmadıkça kullanma.

MyRDPClient'in bir event'i içinde MyRDPClient'i Free ediyorsun. Bu da yanlış bir kullanım.
Kodlarını yanlış yorumlamadıysam her seferinde senin MyRDPClient'i Free ve nil yapmana gerek yok. Sadece disconnect yeterli. Madem 
if NOT Assigned(MyRDPClient) then

   MyRDPClient := TMsRdpClient7NotSafeForScripting.Create(self);
ile bir kez create ediyorsun o zaman sadece bir kez Free etmelisin. Form'un OnClose yada OnDestroy'unda olabilir.
There's no place like 127.0.0.1
WWW
Cevapla
#6
Merhaba,
Kodlarınızı incelemedim, yalnızca ekran görüntüsünden yola çıkarak yorum yapıyorum; Sunucu Listesi ve Uzak Bağlantı sekmeleriniz ayrı ayrı olmasına rağmen, Sunucu Listesi ile Uzak Bağlantını işlemlerinin her ikisini de aynı sekmede (Uzak Bağlantı ) görüntülüyorsunuz.
Görüntüler üst üste geldiğine ve siz alt kısımda kalan taşıyıcı kontrolleri yok ettiğinizde doğal olarak en üstte ve altta kalan tüm Objeler de yok olacaktır.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
(20-09-2016, Saat: 09:29)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÖncelikle sana tavsiyem; imkanın el verdiği ölçüde lokal değişkenler kullan. Sadece tek bir fonksiyon içinde kullanılacak bir değişkeni muhakkak o fonksiyon içinde tanımla. (list: Tlistitem; değişkeni gibi)
Form1'in fonksiyonları içinde kullanılacak bir değişkeni Form1'in private bölümünde tanımla.(MyRDPClient, maxsure, second, gerisayim vs...)
Kısacası interface bölümünün var bloğunu zorunlu olmadıkça kullanma.

MyRDPClient'in bir event'i içinde MyRDPClient'i Free ediyorsun. Bu da yanlış bir kullanım.
Kodlarını yanlış yorumlamadıysam her seferinde senin MyRDPClient'i Free ve nil yapmana gerek yok. Sadece disconnect yeterli. Madem 
if NOT Assigned(MyRDPClient) then

   MyRDPClient := TMsRdpClient7NotSafeForScripting.Create(self);
ile bir kez create ediyorsun o zaman sadece bir kez Free etmelisin. Form'un OnClose yada OnDestroy'unda olabilir.

el verdiği ölçüde lokal değişkenler kullan -------- listi sonradan yukarı aldım belki bir ilgisi olabilir diye,

MyRDPClient'in bir event'i içinde MyRDPClient'i Free ediyorsun. Bu da yanlış bir kullanım. ----- Haklısın,

Peki listem neden yok oluyor olabilir ?

(20-09-2016, Saat: 09:34)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Kodlarınızı incelemedim, yalnızca ekran görüntüsünden yola çıkarak yorum yapıyorum; Sunucu Listesi ve Uzak Bağlantı sekmeleriniz ayrı ayrı olmasına rağmen, Sunucu Listesi ile Uzak Bağlantını işlemlerinin her ikisini de aynı sekmede (Uzak Bağlantı ) görüntülüyorsunuz.
Görüntüler üst üste geldiğine ve siz alt kısımda kalan taşıyıcı kontrolleri yok ettiğinizde doğal olarak en üstte ve altta kalan tüm Objeler de yok olacaktır.

Ama Hocam bahsettiğim gibi parentimi listviewe değil de panele bağlasam ve üst üste değil yan yana koysam, yine de listviewvimi temizliyor.

Uygulamayı ilk yazdıgımda sıkıntı olmuyor ne zaman ki disconnect eventime bir procedure yazayım bu hale geliyor ve düüzeltemiyorum durumu
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
RDPconnect içinde Aktif'i çağırıyorsun ve Aktif içinde ListView1.Clear yapıyorsun. Bu durumda ListView1'in temizlenmesi normal değil mi?
There's no place like 127.0.0.1
WWW
Cevapla
#9
(20-09-2016, Saat: 09:48)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlRDPconnect içinde Aktif'i çağırıyorsun ve Aktif içinde ListView1.Clear yapıyorsun. Bu durumda ListView1'in temizlenmesi normal değil mi?

Orada temizleyip yeniden çekeyim bari diye kod yazmıştım ve silmiştim ondan artık kalmış sonu kaldırsamda sonuç değişmiyor
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Listview içinde arada dilo 4 122 06-12-2017, Saat: 09:09
Son Yorum: Fesih ARSLAN
  Listview item ekleme problemi boş olarak görünüyor Delphiseven 2 212 12-07-2017, Saat: 18:32
Son Yorum: esistem
  Listview den edite sürükle bırak dilo 2 300 17-06-2017, Saat: 00:10
Son Yorum: dilo
  ListView selected Dostk 5 397 11-03-2017, Saat: 18:12
Son Yorum: barutali



Konuyu Okuyanlar: 1 Ziyaretçi