oluşturduğumuz nesnleri silmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

oluşturduğumuz nesnleri silmek

Mesaj gönderen tuanna »

diyelimki ben 5 tane panle oluşturdum hnagisnin üzerinde tıklamış isem onu geri silmek istiyorum bunu nasıl yapabiliriz...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

click eventlerine free yazarak

Kod: Tümünü seç

procedure TForm1.Panel1Click(Sender: TObject);
begin
  panel1.Free;
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.
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

ama bunlar run timede oluşturuldu demeyi ben sölemedim hüseyin hocam....
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- TPanel crate edilen procedure'de bir popup menüyü o nesneye bağlarsın.

- Sonra da popup menude Sil seçildiğinde

Kod: Tümünü seç

TPanel(Sender).Free;
der halledersin...
Resim
Resim ....Resim
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

muharrem hocam sizin sölediğiniz gibi create ettikten sonra
create ettiğim nesneye popup menü atadım atadığım popup menüde sil diye menü item ekledim ve bu itemin click olayınada
TPanel(Sender).Free;
konutunu yazdım ama sonuc...değişmedi vaktiniz varsa bir örnek yazarsanız sevinirim....tahsin_balci@hotmail.com

iyi çalışmalar sağ olun....
Siz hayal edin...Biz yapalım TuannaSoft...
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

Kod: Tümünü seç

procedure TForm1.CreatePanel;
var Panelx : TPanel;
begin
 Panelx := TPanel.Create(self);
 Panelx.OnClick := PanelClick(sender);
end;

procedure TForm1.PanelClick(sender TObject);
begin
TPanel(Sender).Free;
end;
yanilmiyor isem bu sekilde olmali... panelleri create ettikten sonra onClick event larini senin belirledigin bir onClick procedure'una bagla.
kıdemsiz üye
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@tuanna

- Tabii yaa.. Acele ile cevap verince eksik olmuş. Sender aslında TPanel olsa da, popup oldukta sonra seçtiğin TMenuitem sender pozisyonuna geçiyor...

- Hiçbir değişiklik yapmadan şöyle düzeltelim...

TPanel(Sender).Free; yazdığın satırı silip yerine şunu yaz olacaktır...

Kod: Tümünü seç

  PopUpMenu1.PopUpComponent.Free;
- Yanlış yönlendirme için üzgünüm, bu şekilde telafi etmiş olucaz... Başarılar... 8)

// Edit // Ek:

Örnek demiştin onu da ekleyim...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
Const
{$j+}  Sayac : Integer = 0; {$j-}
Var
  YeniPanel : TPanel; // Uses ExtCtrls
begin
  Inc(Sayac);
  YeniPanel := TPanel.Create(Form1);
  With YeniPanel do
  begin
    Name      := Format('Panelim_%.2d', [Sayac]);
    Parent    := Form1;
    Caption   := Name;
    Width     := 100;
    Height    := 100;
    Left      := (15 * Sayac);
    Top       := (15 * Sayac);
    PopUpMenu := PopUpMenu1;
  end;
end;

Kod: Tümünü seç

procedure TForm1.Sil1Click(Sender: TObject);
begin
  PopUpMenu1.PopUpComponent.Free;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

yalniz free edilme isi nesnenin kendi tetiklemesinde(?) olmamasi lazim. Delphi de intahar etmek yasak ama, serbest birakmak serbest.
Sacmalamis olabilirim.
panel nesnesine verdigimiz bütün Event leri de nil lememiz lazim.
Cikis noktam Form1 kendi icinde free edilemez.

Birde Panel'in secilirken free edilmesine anlam veremedim. Niye öyle bir sey yapmak istiyorsun?
miskin
Ve Tanri, bütün kullarini davul edecek :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@miskin

- Kimseyi yanıltmak istemem ama bildiğim ve gördüğüm kadarıyla sistem şöyle işliyor.

- Delphi içinde komutlar, windows genelindekilere benzeri birer local mesaj şeklinde yayınlanıp işleme alınıyor. Yani FREE et dediğimiz için anında işleneme konmayıp mousemove, paint, timer vs. gibi diğer application mesajlardan sonraki sırasını beklemek durumunda.

- Burada Active control, PopUp seçim yapılan menüye geçmiş durumdayken mesaj yayınını (free komutu) yapılıyor. Application seviyesindeki mesaj icra ettiğinden, parenti TPanel için de olsa PopUp menüitemi mesajı yayınlayarak görevni tamamlamış halde kendisinin de yok olmasını beklemekten başka çaresi kalmıyor... :lol:
Resim
Resim ....Resim
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

evet muharram hocam sağ olun sizin dediğinizi denedim oldu....diğer arkadaşlarada teşekürler ....
Siz hayal edin...Biz yapalım TuannaSoft...
Cevapla