Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Nesneleri döngü içerisinde kullanma
#1
Arkadaşlar nesneleri döngü içerisinde kullanma imkanımız var mı?
Örneğin; çok sayıda Image nesnesi kullanmaktayım. Bunları bir for döngüsü içerisinde saydırabilirmiyim? Yani Image1 yerine Image[sayac] gibi.
Cevapla
#2
Oluşturduğunuz nesneleri Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.içerisinde tutabilirsiniz.

Yada kendiniz bir tip tanımlarsınız:

type
  Resimler: array of TImage
yada sayısı belli ise
type
 Resimler: array[0..10] of TImage
gibi...
There's no place like 127.0.0.1
WWW
Cevapla
#3
Photo 
(14-04-2017, Saat: 19:48)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Oluşturduğunuz nesneleri Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.içerisinde tutabilirsiniz.

Yada kendiniz bir tip tanımlarsınız:

type
  Resimler: array of TImage
yada sayısı belli ise
type
 Resimler: array[0..10] of TImage
gibi...

Yazdığınız gibi dizi tanımlayarak kullanmaya çalışıyorum ama başaramadım, hata mesajı alıyorum.


type       //tip tanımlama işlemini nerede yapacağım???          
 Resimler: array[0..10] of TImage

Örneğin bunu yapmasını istedim:
 Resimler[sayac].Visible:=false;
Cevapla
#4
var
 I: Integer;
begin
for I := 0 to Self.ComponentCount -1 do
begin
  if Self.Components[I].ClassType = TImage then
  Begin
     TImage(Self.Components[I]).Visible := False;
  End;
end;
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#5
generic collection kullanabilirsin.
WWW
Cevapla
#6
(15-04-2017, Saat: 10:38)dnzmobile Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Yazdığınız gibi dizi tanımlayarak kullanmaya çalışıyorum ama başaramadım, hata mesajı alıyorum.
type       //tip tanımlama işlemini nerede yapacağım???          
 Resimler: array[0..10] of TImage

Kod yazdığınız Unit'in üst kısmında type bloğu başlangıcı vardır. Yeni tip tanımlamalarını orada yazabilirsiniz.

Fakat siz sadece formunuz üzerinde bulunan Image'lar üzerinde gezinecek bir yöntem arıyorsanız Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.'nin paylaştığı yöntem daha kolay olabilir sizin için. 

Image'larınızın hepsi aynı TPanel vs. üzerinde ise tüm form elemanlarının olduğu döngü yerine örneğin Panel1 üzerindeki bileşenler arasında arama yapabilirsiniz ;
 
for I := 0 to Panel1.ComponentCount -1 do
begin
 if Panel1.Components[I].ClassType = TImage then
    TImage(Panel1.Components[I]).Visible := False;
end;

Ayrıca Image'ları form üzerine koyduktan sonra Tag değişkenlerini kullanarak her Image'a istediğiniz numarayı atayarak daha sonra ayrıştırma yapabilirsiniz. İstediğiniz Tag'a ait Image'ı bulabilmek için şöyle bir fonksiyon kullanılabilir(Aradığınız Image'ların hepsinin Panel1 üzerinde olduğunu farzediyorum):
function GetImageByTag(TagNo: Integer): TImage;
var I: Integer;
begin
  Result := Nil;
  for I := 0 to Panel1.ComponentCount -1 do
  begin
    if Panel1.Components[I] is TImage then
      if TImage(Panel1.Components[I]).Tag = TagNo then
      begin
        Result := TImage(Panel1.Components[I])
        Break;
      end;
  end;
end;
There's no place like 127.0.0.1
WWW
Cevapla
#7
(14-04-2017, Saat: 18:58)dnzmobile Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Arkadaşlar nesneleri döngü içerisinde kullanma imkanımız var mı?
Örneğin; çok sayıda Image nesnesi kullanmaktayım. Bunları bir for döngüsü içerisinde saydırabilirmiyim? Yani Image1 yerine Image[sayac] gibi.

Selam,
Sizin düşündüğünüz şekilde kodlamayı php de yapabilirsiniz hocam, fakat delphi de arkadaşların anlattığı şekilde yapmak mecburiyetindesiniz. Bu arada delphi de şu olsa bu olsa diye yakınan arkadaşlara ilave olayım bende, aşağıda bahsettiğim şekilde kodlama kolaylığı istiyorum bende Smile

diyelim formumuzda Resim1, Resim2 ...... Resim10 isminde imajlarımız var.
var
x:Integer;
begin
for x:=1 to 10 
     do begin
Resim(x).Visible := False;
          end;
end;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#8
(15-04-2017, Saat: 11:14)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
var
 I: Integer;
begin
for I := 0 to Self.ComponentCount -1 do
begin
  if Self.Components[I].ClassType = TImage then
  Begin
     TImage(Self.Components[I]).Visible := False;
  End;
end;

Anlaşılır ve kolay bir çözüm olmuş. Teşekkürler..
Cevapla
#9
Benim verdiğim son örnekte ClassType yerine is kullandığıma dikkat edin lütfen.

Çünkü; ClassType'ın açıklamasında ( Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. ) şöyle yazıyor:

Avoid using ClassType in application code.
Note: In Delphi code, use the is or as operators instead of ClassType.
There's no place like 127.0.0.1
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Dbgrid icerisinda combobox kullanma TheEAK 6 150 20-09-2019, Saat: 07:56
Son Yorum: serdar
  Thread içerisinde Tstrings & TStringList yhackup 2 107 10-09-2019, Saat: 22:45
Son Yorum: yhackup
  Thread içerisinde sleep kullanımı berk06 1 178 26-08-2019, Saat: 11:36
Son Yorum: Tuğrul HELVACI
  Delphi 7- 4 Adet Tablo Döngü Problemi bsrgmsy 2 426 20-05-2019, Saat: 17:17
Son Yorum: bsrgmsy
  Döngü eşitlik sağlama metehangumusay 7 485 18-05-2019, Saat: 15:58
Son Yorum: metehangumusay



Konuyu Okuyanlar: 1 Ziyaretçi