Мне нужно сделать проект в Delphi. Я создал массив кнопок и массив изображений. Я хочу показать Image [i], когда я нажимаю кнопку [i].Delphi: как сделать процедуру при нажатии на кнопку массива?
Может ли кто-нибудь помочь, пожалуйста?
Мне нужно сделать проект в Delphi. Я создал массив кнопок и массив изображений. Я хочу показать Image [i], когда я нажимаю кнопку [i].Delphi: как сделать процедуру при нажатии на кнопку массива?
Может ли кто-нибудь помочь, пожалуйста?
Какой вид компонента вы используете в Вашей форме, чтобы показать изображение?
Я не знаю, что вам действительно нужно, но вот что-то я думаю, вы бы хотели:
Я создал три компоненты в форме, чтобы проверить: два 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, вам необходимо установить OnClick
событие из кнопок с процедура showImage
.
Как использовать свойство тега кнопки для хранения указателя на коррелирующее изображение. Я не уверен в структуре вашего массива, но вот фрагмент кода для демонстрации.
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;
Что вы не знаете, как это сделать? Вы знаете, как сделать массив, например? Покажите свой код, чтобы мы знали, какой уровень понимания у вас есть. –