panellerin yok edilmesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
korendon1971
Üye
Mesajlar: 52
Kayıt: 03 May 2005 06:16

panellerin yok edilmesi

Mesaj gönderen korendon1971 »

Merhabalar
Ben formadaki tüm panelleri yok etmek istedim ama başaramadım.
böyle bir kod yazdım.


for n:=1 to componentcount-1 do
begin
if components[n] is tpanel then
begin
tpanel(components[n]).destroy;
end;
end;

panellerin 3, 5 tanesini yok etti ama daha sonra hata mesajı verdi.
Bu neden kaynaklanıyor olabilir.Teşekkürler......
bilbeyi
Üye
Mesajlar: 104
Kayıt: 24 Kas 2004 10:48
Konum: ist

Mesaj gönderen bilbeyi »

Hatayı yazsan daha sağlıklı ilerlerdik ama şunlara birbak istersen
Acaba üstüste panel kullanmış olabilirmisin ?
ana panel gidince hali ile üzerinde ki panellerde gidecek.
bu dikkat etmeni öneririm.
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

Mesaj gönderen muskut »

evet, for döngüsünde yok olan paletlerin sırasını bi kontrol et
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Destroy yerine Free kullan.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

viewtopic.php?t=8332&highlight=

benzer bir soru daha önce sorulmuş
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Birde Componentler silindiği Component indexi değişecektir bu sebepten ListBound hatası verecektir bunu iki şekilde aşabiliriz Ya döngüyü(Tersten) Count tan sıfıra kadar döndürerek yada While döngüsü kullanarak.

Kod: Tümünü seç

    for n := Pred(ComponentCount) downto 0 do
    begin
        if (components[n] is tpanel) then
        begin
            ShowMessage(intToStr(n));
            TPanel(Components[n]).Free;
        end;
    end;

Kod: Tümünü seç

var
  I: Integer;
begin
  I := 0;
  while (I < ComponentCount) do
    if (Components[I] is TPanel) then
      Components[I].Free
    else
      Inc(I);
end;
Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

Mesaj gönderen andronoid »

daha önceden ben de böyle bişey denemiştim. kodu denemedim ama şu şekilde sanırım olmalı.

Kod: Tümünü seç

for n:=1 to componentcount-1 do 
begin 
  if components[n] is tpanel then 
  begin 
    (components[n] as tpanel).free; //  
  end; 
end; 
korendon1971
Üye
Mesajlar: 52
Kayıt: 03 May 2005 06:16

Mesaj gönderen korendon1971 »

Herkese yardımlarınızdan dolayı teşekkür ederim.Hüseyin hocama ayrıca teşekkür ederim.Hakikaten silinen componentlerin index numarasının değişeceğini unutmuşum.Herkese Sevgi ve Saygılar.......
Cevapla