bileşeni diziden çağırma?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

bileşeni diziden çağırma?

Mesaj gönderen cfyasar »

başlığa ne yazacağımı bile bilemedim aslında :) yapmak istediğim şöyle bişey. bir tür derleyici yazıyorum. formun çalışma anında sayfaya editbox, button... bileşenler ekliyorum ve her eklediğim bileşeni bir dizide tutuyorum. daha sonra diziden bileşeni çağırıyorum. mesela dizinin birinci elemenının left değerini değiştirecem ve dizinin birinci elemanı buton olsun. butonun left değerini değiştirmek için şöyle bişey yazdığımda şu işlemi yapmasını istiyorum.
dizi[1].left:=20; // yerine getirilmesi gereken işlem button1.left:=20;

dizi[1] deki string değerin bileşen ismini ifade etmesi için ne yapmam lazım? :roll: [/code]
öğrenmek, zorlukları yenmektir.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

eğer nesne button ise

Kod: Tümünü seç

Tbutton(dizi[1]).left:=20;
bunun yerine neden diziyi direk nesne olrak tanıtmıyorsun?

Kod: Tümünü seç

dizi:array of tbutton;
kolay gelsin.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

merhaba.
Bana sorarsanız bileşenleri dizilerde tutmak pek mantıklı değil. Bir "List" tanımlayıp bileşenleri buradan idare etmek her açıdan daha mantıklı olacaktır. Ulaşmak istediğizde de bileşenin "Name" property'sini de tuttuğunuz (tuttuğunuzu varsayarak..) için "FindComponent" ile istediğiz ortamı oluşturabilirsiniz.
kolay gelsin.
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

bilesen sayisi az ise fazla problem olmaz eger artarsa hafiza acisindan problem cikabilir.

Saygılar...
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

ben herzaman bu tip pointer işlemleri için TList kullanırım. forumda birkaç kere anlatmıştım. Kullanırkende direk

Kod: Tümünü seç

Tbutton(MyButtonList.Items[1]).left:=20;
şeklinde kullanabilirsin

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 !!!
gorecelik
Üye
Mesajlar: 23
Kayıt: 27 Nis 2005 02:59
Konum: İstanbul
İletişim:

Re: bileşeni diziden çağırma?

Mesaj gönderen gorecelik »

Kod: Tümünü seç

var
  dizi: TStringList;

procedure TForm1.FormCreate(Sender: TObject);
begin
       RegisterClasses([TButton,TEdit,Tform,TLabel]); //kullanabileceğin class ları burda bi kaydettirmen lazım
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
var
  CClass : TPersistentClass;
  PTI : PTypeInfo;
  AControl : TControl;
begin
for i :=0 to dizi.count - 1 do
begin
  CClass := GetClass(dizi[i]);
  if CClass <>nil then
  begin
     AControl := TControl(TControlClass(CClass).Create(Self));
     with AControl do
     begin
        Parent := Self;
        Width := 50;
        Height := 30;
     end;
     Inc(Id);
  end else MessageDlg('Class kaydedilmemiş', mtWarning, [mbOk], 0);
end;
end;

burda TControl olacak create ediyor gibi gelebilir sana ama sonuçta buton edit label gibi vcl componentlerinin hepsinin atası TControldür bu getclass fonksiyonu ile diziden aldığı değere bakar eğer applicationda bu class register edilmişse belirtilen componenti create eder kolay gelsin..

bunu bi test et 1 aydır netten uzağım cafeden bağlanıyorum telefon hattımızda sorun varmış telekom bir aydır gelmedi hala :cry:

haa bu arada arkadaşın biri FindComponenti kullan demiş create edilmemiş componenti findcomponent bulamaz onu yazmayı unutmuşum
En son gorecelik tarafından 30 Nis 2005 03:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Mesaj gönderen cfyasar »

dizinin elemanları farklı olabilir. 1. eleman buton olur ikinci eleman editbox üçüncü eleman daha başka bişey. yazdıklarınızdan çıkardığım sonuca göre her bileşen için farklı dizi oluşturup tiplerine göre ayrı ayrı tutmanın en iyi yol olduğu. herkese teşekkürler. tlist olayını da inceleyecem.
öğrenmek, zorlukları yenmektir.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

viewtopic.php?t=7057 de verdiğim örneği Tcomponent sınıfıyla kullanıp, çeşitli componentlerle yapmaya dene belki olur...
Cevapla