Konuyu Paylaş : facebook gplus twitter

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 Giriş yap veya Üye Oliç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 Giriş yap veya Üye OlOluşturduğunuz nesneleri Linkleri Görebilmeniz İçin Giriş yap veya Üye Oliç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 Giriş yap veya Üye OlYazdığı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 Giriş yap veya Üye Ol'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 Giriş yap veya Üye OlArkadaş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 Giriş yap veya Üye Ol
WWW
Cevapla
#8
(15-04-2017, Saat: 11:14)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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 Giriş yap veya Üye Ol ) şö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

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Timer İçerisinde Thread yhackup 9 615 14-08-2018, Saat: 10:54
Son Yorum: Tuğrul HELVACI
  TreeViewi ListView gibi kullanma Dostk 0 112 10-07-2018, Saat: 16:04
Son Yorum: Dostk
  dbgrid de sağ sol tuşlarını kullanma erdogan 6 446 03-04-2018, Saat: 18:40
Son Yorum: erdogan
  Delphide ki sınıfı C# ta kullanma ilhan03 11 1.263 28-07-2017, Saat: 17:32
Son Yorum: ismailkocacan
  Activex Kullanma veya oluşturma Lord_Ares 4 779 25-05-2017, Saat: 16:31
Son Yorum: Lord_Ares



Konuyu Okuyanlar: 1 Ziyaretçi