Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TButton.Create(VertScrollBox1) içerisinden TRectangle.Create(VertScrollBox1) ulaşmak
#1
Merhaba arkadaşlar.

Ben create ile oluşturduğum nesneler içerisinden birbirinin özelliklerine ulaşmak istiyorum ancak hata veriyor.
Yapmak istediğim şey oluşturduğum buton a tıklandığında bulunduğu rectangle in rengini değiştirmesi.
Program çalışıyor ancak butona tıklandığında hata veriyor.

Araştırma yaptım
 Application.FindComponent('Rectangle'+TButton(Sender).Name) as  TRectangle;
kodunu buldum ancak pek işe yaramadı.

Bu konuda tavsiyesi olan varmı acaba



procedure TForm1.Komut(Sender: TObject);
var
  bRectangle: TRectangle;
begin

  bRectangle:= Application.FindComponent('Rectangle'+TButton(Sender).Name) as  TRectangle; ////
  bRectangle.Fill.Color:= TAlphaColors.Aqua;  /////

  if Assigned(bRectangle)
  then
  ShowMessage('var')
  else
  ShowMessage('yok');

end;


procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
  aRectangle: TRectangle;
  aButton: TButton;
begin
  VertScrollBox1.BeginUpdate;
  try
    for i := 1 to 30 do
    begin
      aRectangle := TRectangle.Create(VertScrollBox1);
      aRectangle.Parent := VertScrollBox1;
      aRectangle.Align := TAlignLayout.Top;
      aRectangle.Height := 60;
      aRectangle.Margins.Left := 10;
      aRectangle.Margins.Top := 15;
      aRectangle.Margins.Right := 15;
      aRectangle.TagString := 'Rectangle'+'Button' + i.ToString;
      aRectangle.Name:= 'Rectangle'+'Button'+ i.ToString;
 

      aButton := TButton.Create(VertScrollBox1);
      aButton.Parent := aRectangle;
      aButton.Align := TAlignLayout.Right;
      aButton.Text := 'Button' + i.ToString;
      aButton.Name := 'Button' + i.ToString;
      aButton.TagString := 'Button' + i.ToString;
      aButton.Margins.Top := 5;
      aButton.Margins.Bottom := 5;
      aButton.Margins.Right := 10;
      aButton.OnClick:= Komut;  //// 
    end;
  finally
    VertScrollBox1.EndUpdate;
  end;
end;
Cevapla
#2
Merhaba,

Yeni oluşturduğunuz komponent 1 tane ise isimlendirmesini özel olarak elinizle yapın. Daha sonra tekrar deneyin. Yine aynı hatayı mı verecek görelim. Birde hata kodunu paylaşırsanız daha sağlıklı yanıtlar bulabilirsiniz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#3
(16-01-2018, Saat: 13:36)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Yeni oluşturduğunuz komponent 1 tane ise isimlendirmesini özel olarak elinizle yapın. Daha sonra tekrar deneyin. Yine aynı hatayı mı verecek görelim. Birde hata kodunu paylaşırsanız daha sağlıklı yanıtlar bulabilirsiniz.

Örnekte 30 tane oluşturuyorum. Ancak denemek için 30 tane oluşturdum. Sayısı değişken olacaktır. 
Hatayı hemen paylaşıyorum

Çıkan Hata

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#4
Merhaba,
Kitabın tamda bu bölümü (reklamlara devam Smile ) ile ilgileniyordum ki; bu konuyu gördüm. Hem ara vermiş olayım, hem de bir DelphiCan'a yardımcı olayım dedim. Smile
Yalnızca Komut metodunu aşağıdaki şekilde değiştirmeniz yeterli olacaktır.
procedure TForm1.Komut(Sender: TObject);
begin
 if Sender is TButton then
 begin
   if TButton(Sender).GetParentComponent is TRectangle then
   begin
     TRectangle(TButton(Sender).GetParentComponent).Fill.Color := $FF000000 or
       TAlphaColor(random($FFFFFF));
   end;
 end;
end;



While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Thumbs Up 
Fesih Bey her zamanki gibi imdadıma yetiştiniz  Smile  
Denedim şimdi aslanlar gibi çalışıyor Çok teşekkürler

Kitap çıkarıyorsanız çıktığında almak isterim. Çünkü bu koda pek rastlamamıştım başka yerlerde.
Cevapla
#6
(16-01-2018, Saat: 14:23)webprog Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlFesih Bey her zamanki gibi imdadıma yetiştiniz  Smile  
Denedim şimdi aslanlar gibi çalışıyor Çok teşekkürler

Kitap çıkarıyorsanız çıktığında almak isterim. Çünkü bu koda pek rastlamamıştım başka yerlerde.

Kitapta o kodlar var diye bir şey demedim. Kitapta bileşen olaylarının Sender parametresi ile ilgili kısa bir bilgi yazıyordum ki bir ara vereyim dedim, o arada konunuzu gördüm. 
Her şeyi yazmak da maalesef mümkün olmuyor. Aslında zaman olsa çok aşırı detaylara inilebilir. Sonraki baskılarda İnşallah.
Aslında bu ve buna benzer tüm özellik veya metodlara, üzerinde çalıştığınız sınıf kadar yakınsınız. 
İlgili Unit altında bileşenin alt özelliklerine kısa bir göz gezdirmeniz yeterli olacaktır.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Create edilen resmin detayları Dostk 7 536 26-02-2018, Saat: 12:24
Son Yorum: Dostk
  Create ListBoxItem Dostk 11 913 16-01-2018, Saat: 01:15
Son Yorum: Dostk



Konuyu Okuyanlar: 1 Ziyaretçi