Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 045

/ вопрос открыт /

Здравствуйте!
У меня на форме имеется 1 кнопка и 8 картинок(image). Теперь подскажите мне пожалуйста, как можно сделать так чтобы при нажатий на кнопку один раз показалость онда картинка, еще один раз показалось другая и т . д . Заранее большое ВАМ спасибо!!!

Beknur Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Комментарий к оценке: Спасибо ВАМ большое

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 17 декабря 2018, 06:07
Выполнено за 0.05 сек.
Рейтинг@Mail.ru