Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Merhaba;
Runtime'da Edit label vb nesneler oluşturuyorum. Form'u kapatırken hangi nesneleri oluşturmuşum bunları listeletmek istiyorum, bunu nasıl yapabilirim.
Örneğin.
Formda 2 Edit 1 Button oluşturmuşsam.
Edit1
Edit2
Button1
Şeklinde bir bilgiye ihtiyacım var.
Saygılarımla
Teşekkürler.
Runtime'da Edit label vb nesneler oluşturuyorum. Form'u kapatırken hangi nesneleri oluşturmuşum bunları listeletmek istiyorum, bunu nasıl yapabilirim.
Örneğin.
Formda 2 Edit 1 Button oluşturmuşsam.
Edit1
Edit2
Button1
Şeklinde bir bilgiye ihtiyacım var.
Saygılarımla
Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
.Components[x] şeklinde ulaşabilirsin. Yada bunların handle ları nerde? Edit1 diye bir değişken varsa nil yada assigned() ile kontrol edebilirsin, yada ben Tlist kullanmayı tercih ederim.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Merhaba;
Cevap için teşekkür ederim hocam.
FindComponent fonksiyonunu buldum sanırım burada döngüyle çözülecek gibi. Fakat henüz yoğunlaşamadım. Hata alıyorum (invalid class typeclass)
Aşağıdaki şekilde editleri oluşturuyorum.
Kullanıcının kaç edit oluşturduğunu bilmiyorum.
Teşekkürler.
İyi çalışmalar.
Cevap için teşekkür ederim hocam.
FindComponent fonksiyonunu buldum sanırım burada döngüyle çözülecek gibi. Fakat henüz yoğunlaşamadım. Hata alıyorum (invalid class typeclass)
Aşağıdaki şekilde editleri oluşturuyorum.
Kod: Tümünü seç
E1 := E1 +1;
with TEdit.Create(Self) as TEdit do
begin
Left := LastX;
Top := LastY;
Parent := ContainerPanel1;
Text := 'Edit'+IntToStr(E1);
Name := Text;
Draggable.Enabled := True;
Cursor := crDrag;
OnEndDrag := AnyComponentsEndDrag;
Teşekkürler.
İyi çalışmalar.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
with TEdit.Create(Self) as TEdit do
TEdit create ettiğin class ı tekrar cast etmene gerek yok ki? ayrıca ilk mesajımda yazdığım gibi bunları TList içerisinde topla, daha önce benzer bir soru vardı, daha öncede forumda konuşulmuştu, örnekler olacak. bana senin yaptığın belirsiz gibi geliyor. TList ile tüm kontrol sende olur, istediğine erişip silebilirsin, memoryleak sorunun olmaz vs gibi daha kontrollü olur.
componentcount, components[] senin yönteminde kullanabileceğin function ve property ler.
kolay gele
TEdit create ettiğin class ı tekrar cast etmene gerek yok ki? ayrıca ilk mesajımda yazdığım gibi bunları TList içerisinde topla, daha önce benzer bir soru vardı, daha öncede forumda konuşulmuştu, örnekler olacak. bana senin yaptığın belirsiz gibi geliyor. TList ile tüm kontrol sende olur, istediğine erişip silebilirsin, memoryleak sorunun olmaz vs gibi daha kontrollü olur.
componentcount, components[] senin yönteminde kullanabileceğin function ve property ler.
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Basit bir önerim olacak.
Doğrusu @freeman35'in bahsettiği gibi her create edilen nesnenin senin kontrolünde olması için bir listede tutulmasıdır.
Alternatif teknik önerim: NAME olarak verdiğin ismi 'Edit' olarak değil de örneğin 'ProEdit', 'ProButton', 'ProLabel' gibi ayrı bir ön takı ile isimlendirirsen; for döngüsünde istediğin listeyi elde edersin. Ya fonksiyon içinde ya da sonradan bunları sınıflarına göre sayarsın
Kullanımı :
Tümü için
Edit'ler için
Label'lar için
Doğrusu @freeman35'in bahsettiği gibi her create edilen nesnenin senin kontrolünde olması için bir listede tutulmasıdır.
Alternatif teknik önerim: NAME olarak verdiğin ismi 'Edit' olarak değil de örneğin 'ProEdit', 'ProButton', 'ProLabel' gibi ayrı bir ön takı ile isimlendirirsen; for döngüsünde istediğin listeyi elde edersin. Ya fonksiyon içinde ya da sonradan bunları sınıflarına göre sayarsın
Kod: Tümünü seç
Function Nesneler( Form:TForm; strOnTaki:String ): String;
Var
i : Integer;
begin
for i := 0 to Form.ComponentCount-1 do
if Copy( Form.Components[i].Name, 1, Length(strOnTaki) ) = strOnTaki
then Result := Result + Form.Components[i].Name + #13;
end;
Tümü için
Kod: Tümünü seç
ShowMessage( Nesneler( self, 'Pro' ) );
Kod: Tümünü seç
ShowMessage( Nesneler( self, 'ProEdit' ) );
Kod: Tümünü seç
ShowMessage( Nesneler( self, 'ProLabel' ) );
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Bu kod işini görür sanırım
kullanımı
RefreshTree(Senin Treeview'in)
Kod: Tümünü seç
procedure TForm1.RefreshTree(ATree : TTreeview);
var
i: Integer;
r: TTreeNode;
procedure AddComponent(AObject: TWinControl; ARoot: TTreeNode);
var
i: Integer;
n: TTreeNode;
begin
for i:=0 to AObject.ControlCount-1 do
begin
n:=ATree.Items.AddChildObject(ARoot,Format('%s: %s',[AObject.Controls[i].Name,AObject.Controls[i].ClassName]),AObject.Controls[i]);
if AObject.Controls[i] is TWinControl then
Begin
AddComponent(TWinControl(AObject.Controls[i]),n);
End;
end;
end;
begin
ATree.Items.Clear;
r:=ATree.Items.AddChild(nil,Format('%s: %s',[Self.Name,Self.Classname]));
AddComponent(Self,r);
//Componentleride göstermek için
{for i:=0 to Self.ComponentCount-1 do
if not(Self.Components[i] is TControl) then
ATree.Items.AddChildObject(r,Format('%s: %s',[Self.Components[i].Name,Self.Components[i].ClassName]),Self.Components[i]);}
ATree.FullExpand;
ATree.Selected:=r;
end;
RefreshTree(Senin Treeview'in)
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim

Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Kapsayıcı nesnelerin içinde; ComponentCount, Components[?]; yada ControlCount, Controls[?] biçiminde döngü ile dönüp istediğinizi elde edebilirsiniz. Maksat sadece sizin runtime sırasında oluşturduğunuz nesneleri elde etmek ise; en basit yol nesneleri oluşturma esnasında ilgili sınıfların Tag propertysine istediğiniz bir değeri vermek ve daha sonra döngüde bu değeri kontrol etmektir.
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
+1 Tag property
There's no place like 127.0.0.1
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Çok değerli cevaplarınız için hepinize ayrı ayrı teşekkür ederim.
Muharrem bey'in örneğindeki şekilde sorunumu çözdüm.
Saygılarımla
İyi çalışmalar.
Muharrem bey'in örneğindeki şekilde sorunumu çözdüm.
Saygılarımla
İyi çalışmalar.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Tag property çok güzel bir state flag enstrumanıdır. Bu gibi statik ayırt edici unsur için harcanmayacak kadar değerlidir. En son düşünülmelidir diye değerlendiriyorum.
Yeri gelir aktif kayıt nosunu koyarsınız ilgili nesne ona göre davranır, yeri gelir işlem durumunu dinamik olarak yine tag üzerinde bir değer ile ifade edersiniz.
Yayın hayatında daha sonra değişmeyecek Statik tanımlamaları nesne adı gibi statik enstrüman kullanmak daha verimlidir bu açıdan da bir bakın.
Yeri gelir aktif kayıt nosunu koyarsınız ilgili nesne ona göre davranır, yeri gelir işlem durumunu dinamik olarak yine tag üzerinde bir değer ile ifade edersiniz.
Yayın hayatında daha sonra değişmeyecek Statik tanımlamaları nesne adı gibi statik enstrüman kullanmak daha verimlidir bu açıdan da bir bakın.
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Merhaba;
konunun devamı olarak; Muharrem bey'in mantığında bir yapı oluşturdum. Oluşturduğum bu Nesneye Mause İle Tıkladığımda NesneName'ini nasıl alırım.
Örneğin Runtime de 2 adet edit oluşturdum. Sonrasında bu editlerden herhangi birine mause ile tıkladığımda Nesne Name'ini (yani hangi edit olduğunu) nasıl alabilirim.
Yardımlarınız için şimdiden teşekkürler.
konunun devamı olarak; Muharrem bey'in mantığında bir yapı oluşturdum. Oluşturduğum bu Nesneye Mause İle Tıkladığımda NesneName'ini nasıl alırım.
Örneğin Runtime de 2 adet edit oluşturdum. Sonrasında bu editlerden herhangi birine mause ile tıkladığımda Nesne Name'ini (yani hangi edit olduğunu) nasıl alabilirim.
Yardımlarınız için şimdiden teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
ActiveControl'a bakabilirsiniz yada FindVCLWindow metodunu kullanabilirsiniz.pro_imaj yazdı:Merhaba;
konunun devamı olarak; Muharrem bey'in mantığında bir yapı oluşturdum. Oluşturduğum bu Nesneye Mause İle Tıkladığımda NesneName'ini nasıl alırım.
Örneğin Runtime de 2 adet edit oluşturdum. Sonrasında bu editlerden herhangi birine mause ile tıkladığımda Nesne Name'ini (yani hangi edit olduğunu) nasıl alabilirim.
Yardımlarınız için şimdiden teşekkürler.
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Söylediğiniz kodları hangi olaya yazmalıyım?
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
Re: Runtime Oluşturduğum Bütün Nesneleri Nasıl Listelerim
Oluşturduğunuz Edit'ler için ortak bir OnClik olayı yazmışsınız diye tahmin ediyorum. OnClick'in tek bir parametresi var: Sender: TObjectpro_imaj yazdı:Merhaba;
konunun devamı olarak; Muharrem bey'in mantığında bir yapı oluşturdum. Oluşturduğum bu Nesneye Mause İle Tıkladığımda NesneName'ini nasıl alırım.
Örneğin Runtime de 2 adet edit oluşturdum. Sonrasında bu editlerden herhangi birine mause ile tıkladığımda Nesne Name'ini (yani hangi edit olduğunu) nasıl alabilirim.
Yardımlarınız için şimdiden teşekkürler.
Bu parametre hangi Edit tıklandıysa onu size verir ve Edit'in ismi:
Kod: Tümünü seç
TEdit(Sender).Name
There's no place like 127.0.0.1