【问题标题】:Delphi: how to make procedure on click on button array?Delphi:如何制作点击按钮数组的程序?
【发布时间】:2013-05-22 10:49:44
【问题描述】:

我必须在 Delphi 中制作项目。我制作了一组按钮和一组图像。我想在单击按钮 [i] 时显示 Image[i]。

有人可以帮忙吗?

【问题讨论】:

  • 你不知道怎么办?例如,您知道如何制作数组吗?展示您到目前为止的代码,以便我们知道您的理解程度。

标签: image delphi button click procedure


【解决方案1】:

您在表单中使用哪种组件来显示图像?

我不知道你真正需要什么,但我猜你会想要:

我在表单中创建了三个组件来测试它:两个 TButton 和一个 TImage 类型。

  TfrmTest = class(TForm)
    btn1: TButton;
    btn2: TButton;
    img: TImage;
    procedure showImage(sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var 部分:

var
  frmTest: TfrmTest;

  imagesArray: array[1..2] of String = ('blue.jpg', 'red.jpg');
  buttonsArray: array[1..2] of String = ('btn1', 'btn2');

您的活动的实施:

procedure TfrmTest.showImage(sender: TObject);
var
    i: integer;
begin
    for i := low(buttonsArray) to high(buttonsArray) do
    begin
        if (buttonsArray[i] = TButton(sender).name) then
        begin
            img.picture.loadFromFile('your images directory path here' + imagesArray[i]);
            break;
        end;
    end;
end;

Object Inspector中,您需要使用showImage 过程设置按钮的OnClick 事件。

【讨论】:

    【解决方案2】:

    如何使用按钮的标记属性来存储指向相关图像的指针。我不确定你的数组结构,但这里有一个代码 sn-p 来演示。

    TForm1 = class(TForm)
      Button1: TButton;
      Image1: TImage;
      Button2: TButton;
      Image2: TImage;
      procedure FormCreate(Sender: TObject);
    
    private
      FMyCurrentImage : TImage; //Keeps track of the current image
      procedure MyButtonClick(Sender: TObject);
    public
    
    end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FMyCurrentImage := nil;
    
      Button1.Tag := Integer(Image1);
      Button1.OnClick := MyButtonClick;
      Image1.Hide;
    
      Button2.Tag := Integer(Image2);
      Button2.OnClick := MyButtonClick;
      Image2.Hide;
    end;
    
    procedure TForm1.MyButtonClick(Sender: TObject);
    begin
      if Sender is TButton then
        with Sender as TButton do
           if Assigned(TImage(Tag)) then
           begin
             //Hide the previously selected image
             if Assigned(FMyCurrentImage) then
               FMyCurrentImage.Hide;
    
             //Assign and show the clicked button's image
             FMyCurrentImage := TImage(Tag);
             FMyCurrentImage.Show;
           end;
    end;
    

    【讨论】:

      猜你喜欢
      • 2012-12-26
      • 2023-03-29
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2020-08-14
      • 1970-01-01
      相关资源
      最近更新 更多