2013-05-27 7 views
2

Мне нужно сделать проект в Delphi. Я создал массив кнопок и массив изображений. Я хочу показать Image [i], когда я нажимаю кнопку [i].Delphi: как сделать процедуру при нажатии на кнопку массива?

Может ли кто-нибудь помочь, пожалуйста?

+2

Что вы не знаете, как это сделать? Вы знаете, как сделать массив, например? Покажите свой код, чтобы мы знали, какой уровень понимания у вас есть. –

ответ

0

Какой вид компонента вы используете в Вашей форме, чтобы показать изображение?

Я не знаю, что вам действительно нужно, но вот что-то я думаю, вы бы хотели:

Я создал три компоненты в форме, чтобы проверить: два 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.

1

Как использовать свойство тега кнопки для хранения указателя на коррелирующее изображение. Я не уверен в структуре вашего массива, но вот фрагмент кода для демонстрации.

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; 
Смежные вопросы