Nesne Adında Değişken Kullanma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
EmrahOzgur
Üye
Mesajlar: 19
Kayıt: 11 Tem 2010 01:38

Nesne Adında Değişken Kullanma

Mesaj gönderen EmrahOzgur »

Merhabalar. Yapmak istediğim işlem şu. Misal olarak formum üzerinde 10 tane edit var. ben bunların textini atıyorum göstermek istediğimde ;
showmessage(edit1.text);
showmessage(edit2.text);
showmessage(edit3.text); ... şeklinde kullanıyorum. Burda sorun yok. fakat ben bir değişken tanımlıyorum ( _EditNo). bunu orada nasıl kullanabiliriM?

Showmessage(Edit'+_EditNo+'.Text); yada // '+_EditNo+' yazdığım yerde kullanmak istiyorum
EditSonuc.Text:=Edit'+_EditNo+'.Text; // '+_EditNo+' yazdığım yerde kullanmak istiyorum
^^^ buradaki o satırların yerine tek satır kod kullanarak göstermesini istediğim değişkeni yani "_EditNo" 'yu nasıl kullanabilirim ?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen sabanakman »

Kod: Tümünü seç

i:=1;
ShowMessage(TEdit(FindComponent('Edit'+IntToStr(i))));
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen greenegitim »

burada da bir örnek var. viewtopic.php?f=2&t=12341
Mücadele güzelleştirir!
EmrahOzgur
Üye
Mesajlar: 19
Kayıt: 11 Tem 2010 01:38

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen EmrahOzgur »

ilginize teşekkür ederim öncelikle. Fakat yapmak istediğim işlemi gerçekleştiremedim.
sabanakman yazdı:

Kod: Tümünü seç

i:=1;
ShowMessage(TEdit(FindComponent('Edit'+IntToStr(i))));
bu kodu kendime göre düzenlediğim zaman

Kod: Tümünü seç

  if TEdit(FindComponent('Edit_'+IntToStr(_Pencere)+'Pen_1Sayi.Text'))='0' then begin
  ShowMessage('0 Değer İçin İşlem Yapamazsınız'); exit; 
Incompatible types hatasını alıyorum..

Kod: Tümünü seç

_Pencere:=3;
ShowMessage(TEdit(FindComponent('DEdit_'+IntToStr(_Pencere)+'Pen_1Sayi.Text')));
şeklinde uyguladığım zaman ise; Incompatible types: 'String' and 'Edit'

Yazmış olduğum kendi kodlarımdada nasıl kullanmak istediğimi anlatabilmişimdir umarım.. Şimdiden teşekkür ederim yardımlarınız için :bravo:
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen sabanakman »

Kod: Tümünü seç

if TEdit(FindComponent('Edit_'+IntToStr(_Pencere)+'Pen_1Sayi')).Text='0' then begin
  ShowMessage('0 Değer İçin İşlem Yapamazsınız'); exit;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen orhancc »

Anladığım kadarıyla şöyle birşey istiyorsun

Kod: Tümünü seç

var
  i:Byte;
  kontrol :TComponent;
begin
  for i := 1 to Form1.ComponentCount do
    begin
      kontrol := FindComponent(Format('Edit%d',[i]));
      if kontrol = nil then Continue;
      ShowMessage((kontrol as TEdit).Text);
    end;
end;
EmrahOzgur
Üye
Mesajlar: 19
Kayıt: 11 Tem 2010 01:38

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen EmrahOzgur »

sabanakman yazdı:

Kod: Tümünü seç

if TEdit(FindComponent('Edit_'+IntToStr(_Pencere)+'Pen_1Sayi')).Text='0' then begin
  ShowMessage('0 Değer İçin İşlem Yapamazsınız'); exit;
end;
Hocam teşekkür ederim. Aradığım buydu. İyi çalışmalar :bravo: :bravo:
EmrahOzgur
Üye
Mesajlar: 19
Kayıt: 11 Tem 2010 01:38

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen EmrahOzgur »

Tekrar merhabalar. Ben aynı işlemi label dada kullanmak istiyorum..
Örnek olarak 5 adet labelim var. Yapmak istediğim ise örneğin kullanıcı 3 e bastığında L_3'üm gözüksün istiyorum. 5'e bastığında L_5...

yukarıda sabanakman'ın yöntemi ile tekrardan değişkeni yerleştiriyorum;

Kod: Tümünü seç

_Deger:=Edit_Deger.Text; //kullanıcının gireceği değeri birkaç yerde farklı şekilde kullandığım için böyle kullandım
bu şekilde almaya çalışıyorum ve bunuda değişkene bağlıyorum

Kod: Tümünü seç

_LabelSakla:=TLabel(FindComponent('L_'+IntToStr(_Deger))).Caption; 
şu şekildede kullanmak istiyorum.

Kod: Tümünü seç

_LabelSakla.Hide;  // burada _LabelSakla'nın almasını istediğim değer kullanıcı 2'ye basmış sayarsak =>"L2"
yani benim kodum

Kod: Tümünü seç

 L2.Hide;
olmalı...

Şu anda bu şekilde kullanmaya çalıştığımda "Record, object or class type required" hatası alıyorum. Bu işlemi nasıl gerçekleştirebilirim ?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen sabanakman »

Değişken tipleriyle alakalı eksiklerimiz bayağı çok gibi.

Kod: Tümünü seç

_LabelSakla:=TLabel(FindComponent('L_'+IntToStr(_Deger))).Caption;
şeklinde bir kodla pek bir yere varılmaz. Öncelikle

Kod: Tümünü seç

var _LabelSakla:=TLabel
şeklinde TLabel tipinde değişken tanımlanmalı ve aranan bileşen

Kod: Tümünü seç

_LabelSakla:=TLabel(FindComponent('L_'+IntToStr(_Deger)));
koduyla değişkenine atanmalıdır. Artık

Kod: Tümünü seç

_LabelSakla.Hide
kodu ile istenen işlem gerçekleşecektir. Neden böyle olması gerektiğinden şimdilik bahsetmiyorum ama biraz zihin egzersizi ile durumu çözeceğinizi umuyorum.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
EmrahOzgur
Üye
Mesajlar: 19
Kayıt: 11 Tem 2010 01:38

Re: Nesne Adında Değişken Kullanma

Mesaj gönderen EmrahOzgur »

Hocam teşekkür ederim.. Durumu ve olayı anladım. Bu cevabınız aklımda olan diğer sorularımada cevap oldu. İlginiz için teşekkürler...
Cevapla