首页 > 解决方案 > 将所有按钮标题自动添加到字符串网格

问题描述

我是德尔福的新手。我想知道,有什么方法可以自动将用户在表单中添加CaptionText插入/创建的任何内容添加到 StringGrid 中?

例如,对于一个简单的翻译器 VCL,Form 检测到添加了一个 Button,并且这个新 Button 的 Caption 会自动出现在 StringGrid 中以进行翻译过程。

unit frmTranslation_u;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls,
  Vcl.Grids;

type
  TfrmTranslation = class(TForm)
    pnlPersonalInformation: TPanel;
    lblFirstName: TLabel;
    lblSureName: TLabel;
    edtFirstName: TEdit;
    edtSurName: TEdit;
    pnlAction: TPanel;
    btnEnglish: TButton;
    btnAfrikaans: TButton;
    btnDisplay: TButton;
    bmbReset: TBitBtn;
    bmbClose: TBitBtn;
    memResult: TMemo;
    sgdData: TStringGrid;
    procedure btnAfrikaansClick(Sender: TObject);
    procedure btnEnglishClick(Sender: TObject);
    procedure btnDisplayClick(Sender: TObject);
    procedure bmbResetClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sgdDataClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmTranslation: TfrmTranslation;

implementation

{$R *.dfm}

procedure TfrmTranslation.bmbResetClick(Sender: TObject);
begin
  // Clear the edit
  edtFirstName.Clear;
  edtSurName.Clear;
  // Clear The memo
  memResult.Clear;
  // Shift the focus to the first name edit
  edtFirstName.SetFocus;
end;

procedure TfrmTranslation.btnAfrikaansClick(Sender: TObject);
begin
  lblFirstName.Caption := 'Noemnaam';
  lblSureName.Caption := 'Van';
  frmTranslation.Caption := 'Vertaling';

  lblFirstName.Left := 32;
  lblSureName.Left := 80;

  btnAfrikaans.Enabled := False ;
  btnEnglish.Enabled := true;
end;

procedure TfrmTranslation.btnDisplayClick(Sender: TObject);
begin
  // show the full name in the memo
  memResult.Lines.Add('You Added '+edtFirstName.Text +' '+ edtSurName.Text);
end;

procedure TfrmTranslation.btnEnglishClick(Sender: TObject);
begin
  lblFirstName.Caption := 'First Name';
  lblSureName.Caption := 'Surname';
  frmTranslation.Caption := 'translation';

  lblFirstName.Left := 40 ;
  lblSureName.Left := 50 ;

  btnEnglish.Enabled := false ;
  btnAfrikaans.Enabled := true ;
end;

procedure TfrmTranslation.FormCreate(Sender: TObject);
var
  i, iCol, iRow : integer ;
begin
  sgdData.Cells[0,0] := 'NAME';
  sgdData.Cells[1,0] := 'TYPE';
  sgdData.Cells[2,0] := 'Id_LAN';
  sgdData.Cells[3,0] := 'VALUE';
end;

procedure TfrmTranslation.sgdDataClick(Sender: TObject);
begin
end;

end.

标签: delphitstringgrid

解决方案


推荐阅读