Yorumları: 645
Konuları: 85
Kayıt Tarihi: 04-10-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 10
- Delphi XE Serisi
Rep Puanı: 2.772
Uzman
Merhaba,
Bir problemle karşınızdayım.
İki adet nesnemiz olduğunu varsayalım. Bir Edit ve bir Buton. Bu ikiside bizim yazdığımız nesnelerimiz. Buton nesnemizin bir propertysi var. Bunda dizayn anında Editimizi referanslıyoruz. Butondan nesnemizin referansladığı Edit nesnesine ulaşmak çok kolay. Fakat Edit nesnemiz butonu referanslamadığı için Editten butona ulaşmak istersem Form üzerindeki nesneleri taramam gerekli.
Kod ile gösterecek olursak;
property SKReferenceEdit : TWinControl read FSKReferenceEdit write setReferenceEdit;
Sorum kısaca şu;
Formdaki bileşenleri gezmeden Edit'ten beni referans olarak gösteren X sınıfından bir buton var mı, varsa bana onu getir gibi bir işlem yapmamız mümkünmüdür?
Saygılarla.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Yorumları: 1.499
Konuları: 83
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 12.314
Üstad
Bu durumda basitçe; SetReferenceEdit procedure'nizde referans kurduğunuz TWinControl'ün Tag property'sine; NativeInt(Self) ataması yapabilirsiniz.
procedure TSizinSinif.SetReferenceEdit(const Value : TWinControl);
begin
if Value <> FSKReferenceEdit then
begin
if not Assigned(Value) and Assigned(FSKReferenceEdit) then
FSKReferenceEdit.Tag := 0;
FSKReferenceEdit := Value;
if Assigned(FSKReferenceEdit) then
FSKReferenceEdit.Tag := NativeInt(Self);
end;
end;
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 645
Konuları: 85
Kayıt Tarihi: 04-10-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 10
- Delphi XE Serisi
Rep Puanı: 2.772
Uzman
(24-04-2019, Saat: 08:40)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Bu durumda basitçe; SetReferenceEdit procedure'nizde referans kurduğunuz TWinControl'ün Tag property'sine; NativeInt(Self) ataması yapabilirsiniz.
procedure TSizinSinif.SetReferenceEdit(const Value : TWinControl);
begin
if Value <> FSKReferenceEdit then
begin
if not Assigned(Value) and Assigned(FSKReferenceEdit) then
FSKReferenceEdit.Tag := 0;
FSKReferenceEdit := Value;
if Assigned(FSKReferenceEdit) then
FSKReferenceEdit.Tag := NativeInt(Self);
end;
end;
Öncelikle teşekkürler hocam, bu tarz bir özellik benimde aklıma geldi fakat kod yazarken ben veya bir başka bir kişi Bir den çok butonda aynı nesneyi referanslarsa nasıl birşey yaparımda takıldım. Bu tarz bir durumda son referanslayanı buluruz.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Yorumları: 1.499
Konuları: 83
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 12.314
Üstad
(24-04-2019, Saat: 09:19)narkotik Adlı Kullanıcıdan Alıntı: (24-04-2019, Saat: 08:40)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Bu durumda basitçe; SetReferenceEdit procedure'nizde referans kurduğunuz TWinControl'ün Tag property'sine; NativeInt(Self) ataması yapabilirsiniz.
procedure TSizinSinif.SetReferenceEdit(const Value : TWinControl);
begin
if Value <> FSKReferenceEdit then
begin
if not Assigned(Value) and Assigned(FSKReferenceEdit) then
FSKReferenceEdit.Tag := 0;
FSKReferenceEdit := Value;
if Assigned(FSKReferenceEdit) then
FSKReferenceEdit.Tag := NativeInt(Self);
end;
end;
Öncelikle teşekkürler hocam, bu tarz bir özellik benimde aklıma geldi fakat kod yazarken ben veya bir başka bir kişi Bir den çok butonda aynı nesneyi referanslarsa nasıl birşey yaparımda takıldım. Bu tarz bir durumda son referanslayanı buluruz.
Bu durumda, madem sınıflar sizin sınıflarınız; o halde TWinControl'den türeyen FSKReferenceEdit sınıfınızın içine bir adet generic liste sınıfı ekleyin. (TList<TSizinButton> gibi). Bu durumda yukarıdaki kullanımda, Tag ataması yerine, FSKReferenceEdit.List.Add(Self) ya da FSKReferenceEdit.List.Remove(Self) gibi bir yapı işinizi görebilir.
Tabii gerçekte tam olarak ne yapmak istediğinizi ifade ederseniz belki daha manidar açıklamalarımız olabilir.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 645
Konuları: 85
Kayıt Tarihi: 04-10-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 10
- Delphi XE Serisi
Rep Puanı: 2.772
Uzman
(24-04-2019, Saat: 09:25)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: (24-04-2019, Saat: 09:19)narkotik Adlı Kullanıcıdan Alıntı: Öncelikle teşekkürler hocam, bu tarz bir özellik benimde aklıma geldi fakat kod yazarken ben veya bir başka bir kişi Bir den çok butonda aynı nesneyi referanslarsa nasıl birşey yaparımda takıldım. Bu tarz bir durumda son referanslayanı buluruz.
Bu durumda, madem sınıflar sizin sınıflarınız; o halde TWinControl'den türeyen FSKReferenceEdit sınıfınızın içine bir adet generic liste sınıfı ekleyin. (TList<TSizinButton> gibi). Bu durumda yukarıdaki kullanımda, Tag ataması yerine, FSKReferenceEdit.List.Add(Self) ya da FSKReferenceEdit.List.Remove(Self) gibi bir yapı işinizi görebilir.
Tabii gerçekte tam olarak ne yapmak istediğinizi ifade ederseniz belki daha manidar açıklamalarımız olabilir.
Generic list şeklinde tutmak aslında işimi görür hocam, tabi referans gösterilen obje form üzerinden yok edilirse notificatian ile yakalayıp listedende yok etmem gerekli. O iş bende bir deneme atışı yapıyım.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..