因此,我必须创建一个类似于Instagram或9Gag的软件,如果按下了Upvote按钮,我想使用Post_ID和User_ID将其添加到数据库中的Upvote表中。由于动态创建的面板是按钮的父级,因此我想使用该数据,但是OnClick事件只能接受1个参数。谁能帮忙。
要纠正自己,我使用的是图像而不是按钮,通常我会使用按钮的标题来存储数据,但不能使用TImage。
procedure dynImgUpvoteClick(Sender: TObject);
begin
showmessage('Clicked');
end;
dynImgUpvote.OnClick := dynImgUpvoteClick;
我想编写它,以便在单击按钮时可以发送Post_ID和User_ID以与SQL一起使用,以添加到数据库中。但是,我不能使用多个参数。
答案 0 :(得分:0)
我有以下建议:
使用Tag
属性是一种错误形式,一般不建议使用。
您可以创建包含所需属性的后代类: 例如:
type TMyImage = class(TImage)
strict private
FStrParam: string;
FIntParam: Integer;
public
property StrParam: string read FStrParam write FStrParam;
property IntParam: string read FIntParam write FIntParam;
end;
然后,您将动态设置具有所有必要属性的图像:
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;