Çalışma zamanı oluşturulan bileşenleri kullanmak.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Çalışma zamanı oluşturulan bileşenleri kullanmak.

Mesaj gönderen palandoken »

Merhaba arkadaşlar,
bir soru sormak istiyorum.

for döngüsü ile program içerisinden i kadar buton create ediyorum.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
Var
  i : integer ;
  Buton : TButton ;
begin
   ListBox1.Items.Clear ;
   for i := 1 to StrToInt(Edit1.Text) do
      begin
         buton := TButton.Create(Self);
         Buton.Parent := Form1 ;
         buton.Name := 'A'+IntToStr(i) ;
         ListBox1.Items.Add('A'+IntToStr(i)) ;
      end;
end;
Bu butonların name'lerini " 'A'+IntToStr(i) " şeklinde veriyor ve Listbox'a listeliyorum.

Bundan sonra butonların ismi A1,A2,A3 vs.şeklinde oluyorya ben bu butonları çalışma zamanı nasıl kullanabilirim.Mesela A1 butonunun caption'ını,Left'ini vs. nasıl değiştirebilirim.

Teşekkürler.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

Kod: Tümünü seç

 ListBox1.Items.Clear ;
   for i := 1 to StrToInt(Edit1.Text) do
      begin
         buton := TButton.Create(Self);
         Buton.Parent := Form1 ;
         buton.Name := 'A'+IntToStr(i) ;
         buton.caption:='deneme'
         buton.left:=30;
         ListBox1.Items.Add('A'+IntToStr(i)) ;
      end; 
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

ALUCARD beni yanlış anladın kardeş.Butonun Caption'ını ,Left'ini,Top'unu vs. butonun bütün özelliklerini create ederken ayarlayabilirim.O sorun değil.Sorun şu:

Diyelim Formda iki tane Buton var.Button1'in click'ine yukarıdaki kodu yazdın ve 10 tane yeni buton create ettin.Create ettiğin bu butonların özelliklerini örneğin caption'ını Button2'nin click'inde nasıl değiştirirsin.Create ettiğin butonların name'leri A1,A2... vs olacak ama bu butonlara
A1.Caption := 'Deneme' ; yazarak ulaşamazsın.Sorun bu.Bu butonlara nasıl ulaşırsın.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Sorunu tam olarak bende anlayamadım..
Anladığım kadarıyla create ettiğin buttonlara onclick vs gibi olaylar eklemek istiyorsun ve button a nesne olarak erişmek istiyorsun..
Aşağaıdaki kod ile bu işlemleri yapabilirsin..

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
  buton : TButton;
begin
  for i := 1 to 5 do
    begin
       buton := TButton.Create(Self);
       Buton.Parent := Form1 ;
       buton.Name := 'A'+IntToStr(i) ;
       buton.caption:='deneme';
       buton.left:=30;
       buton.OnClick := XButtonClick;
    end;
end;

procedure TForm1.XButtonClick(Sender: TObject);
begin
  ShowMessage((Sender as TButton).Caption);
end;
DeveloperToolKit

..::|YeşilMavi|::..
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

Evet arkadaşlar ben tam anlatamadım.Şimdi,
Form üzerinde sadece bir tane buton var.Bu butonun Click'ine yukarıdaki kodu yazıyorum.Programı çalıştırıyorum.Butona tıklayarak yeni 5 tane daha buton create ediyorum.Bu create ettiğim butonların name'leri sırasılya A1,A2,A3..... vs. oluyor.
Şimdi yeni create ettiğim bu butonlara FormClick'ten nasıl ulaşabilirim.Örneğin sadece A3 name'ine sahip butonun caption'ını veya left'ini FormClick'ten nasıl değiştiririm.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

:?:
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Çalışma anında oluşturulan nesnelere aşağıdaki gibi ulaşabilirsin :wink:

unit1.pas

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  Buton: TButton;
begin
  ListBox1.Items.Clear;
  for i := 1 to StrToInt(Edit1.Text) do
  begin
    buton := TButton.Create(Self);
    Buton.Parent := Form1;
    buton.Name := 'A' + IntToStr(i);
    Buton.Left := 30;
    Buton.Top := i * 50;
    ListBox1.Items.Add('A' + IntToStr(i));
    ListBox1.Items.Objects[i] := Buton;
  end;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  TButton(FindComponent(ListBox1.Items[ListBox1.ItemIndex])).Caption := TimeToStr(Now);
end;

end.
unit1.dfm

Kod: Tümünü seç

object Form1: TForm1
  Left = 297
  Top = 316
  Width = 716
  Height = 360
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = TURKISH_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 324
    Top = 58
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object ListBox1: TListBox
    Left = 415
    Top = 23
    Width = 256
    Height = 212
    ItemHeight = 13
    TabOrder = 1
    OnDblClick = ListBox1DblClick
  end
  object Edit1: TEdit
    Left = 279
    Top = 25
    Width = 121
    Height = 21
    TabOrder = 2
    Text = '5'
  end
end
Bilmem ben anlamışmıyım :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

Recep Abi teşekkür ediyorum.İstediğim işte buydu.
Saygılar...
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Cevapla