|
Вопрос # 4 045/ вопрос открыт / |
|
Здравствуйте!
У меня на форме имеется 1 кнопка и 8 картинок(image). Теперь подскажите мне пожалуйста, как можно сделать так чтобы при нажатий на кнопку один раз показалость онда картинка, еще один раз показалось другая и т . д . Заранее большое ВАМ спасибо!!!
|
Вопрос задал: Beknur (статус: Посетитель)
Вопрос отправлен: 16 апреля 2010, 07:21
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Cпособов несколько, но я бы сделал, например, вот так:
type
TMainForm = class(TForm)
//....
// Допустим, все TImage имеют имена по умолчанию:
Image1: TImage;
Image2: TImage;
//....
Image8: TImage;
procedure ButtonClick(Sender: TObject);
private
FImages: TList; // Список
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
constructor TMainForm.Create(AOwner: TComponent);
var
Index: Integer;
begin
inherited;
// Ищу все TImage и загоняю по порядку в список
FImages:= TList.Create();
for Index:= 0 to 7 do
FImages.Add(FindComponent('Image' + IntToStr(Index + 1)));
Button.Tag:= 0; // Это будет индекс массива
end;
destructor TMainForm.Destroy;
begin
FImages.Free();
inherited;
end;
procedure TMainForm.ButtonClick(Sender: TObject);
begin
// Обработчик OnClick кнопки
TImage(FImages[Button.Tag]).Show(); // Показываю очередной TImage
Button.Tag:= Button.Tag + 1; // Смещение индекса на след. элемент списка
if Button.Tag = FImages.Count
then Button.Tag:= 0;
end;
Если нужно показывать только одну картинку, а все остальные скрывать, то это будет цикл в 4 строчки.
procedure TMainForm.ButtonClick(Sender: TObject);
var
Index: Integer;
begin
// Обработчик OnClick кнопки
for Index:= 0 to FImages.Count - 1 do
if Button.Tag = Index
then TImage(FImages[Button.Tag]).Show() // Показываю очередной TImage
else TImage(FImages[Button.Tag]).Hide(); // Скрываю остальные
Button.Tag:= Button.Tag + 1; // Смещение индекса на след. элемент списка
if Button.Tag = FImages.Count
then Button.Tag:= 0;
end;
З.Ы. АХТУНГ! Код не отлаживал, писал в прямо в браузере. Возможны баги!
|
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 16 апреля 2010, 08:32
Оценка за ответ: 5
Комментарий к оценке: Спасибо ВАМ большое
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|