Delphi 是否有一种方法可以从动态对象(如和ID)发送数据?

Delphi 是否有一种方法可以从动态对象(如和ID)发送数据?,delphi,pascal,Delphi,Pascal,因此,我必须创建一个类似Instagram或9Gag的软件,如果按下Upvote按钮,我希望使用Post_ID和User_ID添加到数据库中的Upvote表中。由于动态创建的面板是按钮的父级,因此我希望使用该数据,但OnClick事件只能接受1个参数。有人能帮忙吗 为了纠正我自己的错误,我使用了图像而不是按钮,通常我会使用按钮的标题来存储数据,但我不能使用TImage 过程dynimgupoteclick(发送方:TObject); 开始 showmessage('Clicked'); 结束;

因此,我必须创建一个类似Instagram或9Gag的软件,如果按下Upvote按钮,我希望使用Post_ID和User_ID添加到数据库中的Upvote表中。由于动态创建的面板是按钮的父级,因此我希望使用该数据,但OnClick事件只能接受1个参数。有人能帮忙吗

为了纠正我自己的错误,我使用了图像而不是按钮,通常我会使用按钮的标题来存储数据,但我不能使用TImage


过程dynimgupoteclick(发送方:TObject);
开始
showmessage('Clicked');
结束;
dynImgUpvote.OnClick:=dynImgUpvote单击;

我想编写它,以便在单击按钮时,我可以发送Post_ID和User_ID以与SQL一起使用,以添加到数据库中。但是,我不能使用多个参数。

我有以下建议:

  • 使用
    标记
    属性是一种不好的形式,一般不建议使用

  • 您可以创建包含任意多个属性的子类: 例如:

  • 类型TMyImage=class(TImage)
    严格保密
    FStrParam:字符串;
    fintpram:整数;
    公众的
    属性StrParam:字符串读取FStrParam写入FStrParam;
    属性IntParam:字符串读取FIntParam写入FIntParam;
    结束;
    
    然后动态创建图像,并设置所有必要的属性:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Img: TMyImage;
    begin
      Img := TMyImage.Create(Self);
      {Set other properties: size, positipn etc.}
      Img.StrParam := 'Some string';
      Img.IntParam := 123;
      Img.OnClick := dynImgUpvoteClick;
    end;
    
    并处理类型OnClick处理程序中的任何属性:

    procedure dynImgUpvoteClick(Sender: TObject);
    begin
      showmessage('Clicked ' + (Sender as TMyImage).StrParam +
        IntToStr((Sender as TMyImage).IntParam));
    end;
    

    大多数Delphi控件都有一个标记属性,您可以在其中存储一个nativeint值。如果您的所有组件都已命名,是否可以改用该名称?((发送方名称为TImage).Name)@Brian,这只允许我有一个参数,因为只有整数值被接受,并且没有方法组合到值,然后当试图再次提取它以区分post_ID和user_ID时,Luddite的方法可能是用字符串属性定义一个对象。不过,字符串也有地址。我更喜欢前者,以防以后需要添加任何额外属性。单击图像时,Post_ID和User_ID来自何处?图像如何知道应该使用什么Post_ID和User_ID?如果你真的很清楚你想做什么,那么有很多方法可以完成你想做的事情。您不能修改
    t通知
    事件的签名(这就是
    OnClick
    事件),但有一些方法可以在该事件中获取信息。如果不知道你具体想完成什么,很难建议如何去做。