Delphi Can

Orjinalini görmek için tıklayınız: Classım ile birlikte Listview Elemanlarımın yok olması
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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 ?
Kodunu görebilir isek daha isabetli yorum yapabiliriz sanırım güzel kardeşim.
Gündüz iş yerinde okuduğumda soruyu anlayamamıştım. Şimdi eve geldim, sakin kafa ile tekrar okudum: yine anlayamadım Sad
(19-09-2016, Saat: 22:06)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Gü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.
Ö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.
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.
(20-09-2016, Saat: 09:29)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ö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 Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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.

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
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?
(20-09-2016, Saat: 09:48)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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?

Orada temizleyip yeniden çekeyim bari diye kod yazmıştım ve silmiştim ondan artık kalmış sonu kaldırsamda sonuç değişmiyor