tag kullanımı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

tag kullanımı

Mesaj gönderen erdogan_ozkaya »

Arkadaşlar,

aşağıdaki kod ile buton üretiyorum, ürettiğim butonun tag ını buluyorum yapmak istediğim tag ını bulduğum butonun rengini ve adını değiştirmek ?

birde ürettiğim tüm butonları silmek istiyorum ?

Teşekkürler

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  MASA: Integer;
  btnMASA: TButton;
begin
  for MASA := 1 to QRY_RS_MASALAR.RecordCount do
  begin
    btnMASA := TButton.Create(FlowPanel1);
    btnMASA.Parent := FlowPanel1;
    btnMASA.Caption := QRY_RS_MASALAR.FieldByName('MASA_ADI').Text;
    btnMASA.Height := 100;
    btnMASA.Width := 100;
    btnMASA.Info2:=Self.Tag;
    btnMASA.OnClick:=OnMasaClick;
    Self.Tag:=Self.Tag + 1;
    QRY_RS_MASALAR.Next;
  end;
end;


procedure TForm1.OnMasaClick(Sender: TObject);
begin
  if Sender is TButton then
  Caption:= TButton(Sender).Bilgi.ToString;
end;

Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: tag kullanımı

Mesaj gönderen m_ekici »

Kod: Tümünü seç

procedure TForm1.OnMasaClick(Sender: TObject);
begin
  if Sender is TButton then
     begin
    Caption:= TButton(Sender).Bilgi.ToString;
    (Sender as TButton).Name := BtnNamexx;
    (Sender as TButton).color := clGreen;
    end;
end;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

böyle değilde, tag 10 olan butona işlem yapmak istiyorum
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

ve kodda çalışmıyor :(

tam kod aşağıdaki gibi.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
  cxLookAndFeelPainters, cxStyles, cxCustomData, cxFilter, cxData,
  cxDataStorage, cxEdit, cxNavigator, dxDateRanges, Data.DB, cxDBData,
  Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomView, cxGrid,
  DBAccess, Uni, SQLServerUniProvider, UniProvider, ODBCUniProvider,
  AccessUniProvider, MemDS, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids;

type
  TForm1 = class(TForm)
    srcQRY_SIPARISLER: TUniDataSource;
    QRY_RS_MASALAR: TUniQuery;
    AccessUniProvider1: TAccessUniProvider;
    SQLServerUniProvider1: TSQLServerUniProvider;
    DB: TUniConnection;
    Button1: TButton;
    Button2: TButton;
    FlowPanel1: TFlowPanel;
    Button3: TButton;
    DBGrid1: TDBGrid;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);



    type
  TButton = class(Vcl.StdCtrls.TButton)
  private
    FBilgi: integer;
  public
    property Bilgi: integer read FBilgi write FBilgi;
  end;
  private
    { Private declarations }
    procedure OnMasaClick(Sender: TObject);
   public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  MASA: Integer;
  btnMASA: TButton;
begin
  for MASA := 1 to QRY_RS_MASALAR.RecordCount do
  begin
    btnMASA := TButton.Create(FlowPanel1);
    btnMASA.Parent := FlowPanel1;
    btnMASA.Caption := QRY_RS_MASALAR.FieldByName('MASA_ADI').Text;
    btnMASA.Height := 100;
    btnMASA.Width := 100;
    btnMASA.Bilgi:=Self.Tag;
    btnMASA.OnClick:=OnMasaClick;
    Self.Tag:=Self.Tag + 1;
    QRY_RS_MASALAR.Next;
  end;
end;


procedure TForm1.OnMasaClick(Sender: TObject);
begin
  if Sender is TButton then
     begin
    Caption:= TButton(Sender).Bilgi.ToString;
    //(Sender as TButton).Name := 'BtnNamexx';
    (Sender as TButton).color := clGreen;
    end;

                                {
  if Sender is TButton then
  Caption:= TButton(Sender).Bilgi.ToString;  }
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
     QRY_RS_MASALAR.Open;
     QRY_RS_MASALAR.Refresh;
end;

end.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: tag kullanımı

Mesaj gönderen xozcanx »

Kod: Tümünü seç

var
   i:integer;
Begin
  for i := 0 to ComponentCount-1 do
  begin
    if (Components[i] is TButton) AND (TButton(Components[i]).Tag=10) Then
    Begin
      TButton( Components[i]).Caption :='BtnNamexx';
      TButton( Components[i]).Color   :=clGreen;
      TButton( Components[i]).Free; // Silmek için..
    End;
  end;
End;
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

çalışmadı :(

tag 10 olan a basınca hatada vermiyor çalışmıyorda
xozcanx yazdı: 25 Şub 2020 10:48

Kod: Tümünü seç

var
   i:integer;
Begin
  for i := 0 to ComponentCount-1 do
  begin
    if (Components[i] is TButton) AND (TButton(Components[i]).Tag=10) Then
    Begin
      TButton( Components[i]).Caption :='BtnNamexx';
      TButton( Components[i]).Color   :=clGreen;
      TButton( Components[i]).Free; // Silmek için..
    End;
  end;
End;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

Ekrandaki herşeyi siliyor :)

TButton( Components).Free; // Silmek için..
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: tag kullanımı

Mesaj gönderen freeman35 »

"btnMASA.Info2:=Self.Tag;"
tag ı nerde neye eşitliyorsun? tbutton class ında Info2 diye bir property mi var?
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: tag kullanımı

Mesaj gönderen xozcanx »

Kod: Tümünü seç

var
   i:integer;
Begin
   for i := frmMain.ComponentCount - 1 downto 0 do 
  begin
    if (Components[i] is TButton) AND (TButton(Components[i]).Tag=10) Then
    Begin
      TButton( Components[i]).Caption :='BtnNamexx';
      TButton( Components[i]).Color   :=clGreen;
      TButton( Components[i]).Free; // Silmek için..
    End;
  end;
End;
Merhaba,
Burada, Tüm Form içerisindeki Componentler taranır ve Bunların içinden TButton neslerinin tag kısmı kontrol edilir ve 10 yazanlar silinir. Eğer Siz döngü içinde

Kod: Tümünü seç

TButton( Components).Free; 
derseniz normal olarak bizim şartımıza bakmadan silecektir.
TButton( Components [ i ] ).Free dikkat edin.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

freeman35 yazdı: 25 Şub 2020 11:17 "btnMASA.Info2:=Self.Tag;"
tag ı nerde neye eşitliyorsun? tbutton class ında Info2 diye bir property mi var?
info2 yok hocam tüm kod aşağıdaki gibi,

asıl yapmak istediğim butonlar oluşturup x butonun adını rengini değiştirmek ve butonların onclik olayını çalıştırmak.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
  cxLookAndFeelPainters, cxStyles, cxCustomData, cxFilter, cxData,
  cxDataStorage, cxEdit, cxNavigator, dxDateRanges, Data.DB, cxDBData,
  Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomView, cxGrid,
  DBAccess, Uni, SQLServerUniProvider, UniProvider, ODBCUniProvider,
  AccessUniProvider, MemDS, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids;

type
  TForm1 = class(TForm)
    srcQRY_SIPARISLER: TUniDataSource;
    QRY_RS_MASALAR: TUniQuery;
    AccessUniProvider1: TAccessUniProvider;
    SQLServerUniProvider1: TSQLServerUniProvider;
    DB: TUniConnection;
    Button1: TButton;
    Button2: TButton;
    FlowPanel1: TFlowPanel;
    Button3: TButton;
    DBGrid1: TDBGrid;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);



    type
  TButton = class(Vcl.StdCtrls.TButton)
  private
    FBilgi: integer;
  public
    property Bilgi: integer read FBilgi write FBilgi;
  end;
  private
    { Private declarations }
    procedure OnMasaClick(Sender: TObject);
   public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  MASA: Integer;
  btnMASA: TButton;
begin
  for MASA := 1 to QRY_RS_MASALAR.RecordCount do
  begin
    btnMASA := TButton.Create(FlowPanel1);
    btnMASA.Parent := FlowPanel1;
    btnMASA.Caption := QRY_RS_MASALAR.FieldByName('MASA_ADI').Text;
    btnMASA.Height := 100;
    btnMASA.Width := 100;
    btnMASA.Bilgi:=Self.Tag;
    btnMASA.OnClick:=OnMasaClick;
    Self.Tag:=Self.Tag + 1;
    QRY_RS_MASALAR.Next;
  end;
end;


procedure TForm1.OnMasaClick(Sender: TObject);
var
   i:integer;
Begin
  if Sender is TButton then
  Caption:= TButton(Sender).Bilgi.ToString;
  for i := 0 to ComponentCount-1 do
  begin
    if (Components[i] is TButton) AND (TButton(Components[i]).Tag=10) Then
    Begin
      TButton( Components[i]).Caption :='BtnNamexx';
      TButton( Components[i]).Color   :=clGreen;
    //  TButton( Components[i]).Free; // Silmek için..
    End;
  end;


end;


procedure TForm1.Button2Click(Sender: TObject);
begin
     QRY_RS_MASALAR.Open;
     QRY_RS_MASALAR.Refresh;
end;

procedure TForm1.Button3Click(Sender: TObject);
Begin
TButton(Components).Free;
end.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

xozcanx yazdı: 25 Şub 2020 11:19

Kod: Tümünü seç

var
   i:integer;
Begin
   for i := frmMain.ComponentCount - 1 downto 0 do 
  begin
    if (Components[i] is TButton) AND (TButton(Components[i]).Tag=10) Then
    Begin
      TButton( Components[i]).Caption :='BtnNamexx';
      TButton( Components[i]).Color   :=clGreen;
      TButton( Components[i]).Free; // Silmek için..
    End;
  end;
End;
Merhaba,
Burada, Tüm Form içerisindeki Componentler taranır ve Bunların içinden TButton neslerinin tag kısmı kontrol edilir ve 10 yazanlar silinir. Eğer Siz döngü içinde

Kod: Tümünü seç

TButton( Components).Free; 
derseniz normal olarak bizim şartımıza bakmadan silecektir.
TButton( Components [ i ] ).Free dikkat edin.

bende çalışmıyor hata da vermiyor, delphi10.3 kullanıyorum

bu kısım hatalı
TButton( Components).Caption :='BtnNamexx';
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: tag kullanımı

Mesaj gönderen freeman35 »

hatayı yazmazsan kim nerden bilecek?
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

bir hata vermiyor ve çalışmıyor
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: tag kullanımı

Mesaj gönderen freeman35 »

freeman35 yazdı: 25 Şub 2020 11:17 "btnMASA.Info2:=Self.Tag;"
"tag ı nerde neye eşitliyorsun?" tbutton class ında Info2 diye bir property mi var?
bi kahve, çay molası ber, sonra kodunu debug et bakalım.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: tag kullanımı

Mesaj gönderen erdogan_ozkaya »

Hocam debug ediyorum ama bu kod ile ilgili bir hata vermiyor ?


ve çalışmıyorda

(tag 10 olan butona basıyorum)


procedure TForm1.OnMasaClick(Sender: TObject);
var
i:integer;
Begin
if Sender is TButton then
Caption:= TButton(Sender).Bilgi.ToString;
for i := 0 to ComponentCount-1 do
begin
if (Components is TButton) AND (TButton(Components).Tag=10) Then
Begin
TButton( Components).Caption :='BtnNamexx';
TButton( Components).Color :=clGreen;
// TButton( Components).Free; // Silmek için..
End;
end;


end;
Cevapla