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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 2 273

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, уважаемые эксперты! Можно сделать так, что бы на форме разместить друг на друга компоненты TImage и при нажатии на баттон их меняло? Нажал на баттон - оно тебе Image2 открыло, еще раз нажел - Image3 и т. д..? Спасибо.

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

Вопрос задал: Хитманчан (статус: Посетитель)
Вопрос отправлен: 7 января 2009, 15:14
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Ученый

Здравствуйте, Хитманчан! Предложу один из способов решения....
Объявляем глобальную переменную a:integer;
в FormCreate пишем a:=1;
а в Button1Click пишем:
a:=a+1;
TImage(FindComponent('Image'+IntToStr(a))).Visible:=true;
TImage(FindComponent('Image'+IntToStr(a-1))).Visible:=false;
Ну само разумеющееся Свойство Visible у всех Image, кроме первого должно быть равно False....


Удачи!!!!

Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 7 января 2009, 15:58
Оценка за ответ: 5


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

Всего сообщений: 25; последнее сообщение — 9 января 2009, 19:59; участников в обсуждении: 5.

Страницы: [1] [2] [Следующая »]

min@y™

min@y™ (статус: Доктор наук), 7 января 2009, 15:28 [#1]:

Цитата:


Здравствуйте, уважаемые эксперты! Можно сделать так, что бы
........
Да! Даже у TImage есть свойство Visible, прикинь!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ученый

Ученый (статус: 8-ой класс), 7 января 2009, 15:32 [#2]:

Способов решения МОРЕ. Но самое легкое юзать Visible...
Ученый

Ученый (статус: 8-ой класс), 7 января 2009, 16:06 [#3]:

Да забыл сказать....когда Image'ы закончатся, вылетит ошибка.... Так что учитывайте этот факт и соответственно пропишите условие if a={номер последнего Image} Then a=0;
Хитманчан

Хитманчан (статус: Посетитель), 7 января 2009, 16:10 [#4]:

Ученый, большое спасибо!
min@y™, и вам спасибо...
Хитманчан

Хитманчан (статус: Посетитель), 7 января 2009, 16:51 [#5]:

Ученый, не подскажите мне еще немного, как можно сделать так, что бы на баттон 2 на первую картинку возвращало... ну если по логике должно там быть
a:=1;
TImage(FindComponent('Image'+IntToStr(a))).Visible:=true;

В вот как .Visible:=false; к текущей картинки применить, не подскажите?
Ученый

Ученый (статус: 8-ой класс), 7 января 2009, 16:59 [#6]:

Элементарно: на клике второго батона пишем
TImage(FindComponent('Image'+IntToStr(a))).Visible:=False;
a:=1;
TImage(FindComponent('Image'+IntToStr(a))).Visible:=true;
Хитманчан

Хитманчан (статус: Посетитель), 7 января 2009, 17:07 [#7]:

Точно... спасибо - не сообразил)
Хитманчан

Хитманчан (статус: Посетитель), 8 января 2009, 10:46 [#8]:

А можно еще такое спросить - а вот как сделать, что бы при определенных значениях a баттон был недоступным, ну типа при a=1 Button2.Enabled:=false?

Пробую через if - then - else - не хочет - не там пишу может? Не подскажите, как это правильноможно сделать? Спасибо....
Вадим К

Вадим К (статус: Академик), 8 января 2009, 10:59 [#9]:

ну вот если бы написали, что там пишете.... может и помогли бы....
Галочка "подтверждения прочтения" - вселенское зло.
Ученый

Ученый (статус: 8-ой класс), 8 января 2009, 11:31 [#10]:

Не совсем понятен вопрос, но рискну предположить что Button2 должен быть недоступен до тех пор, пока не кончаться Imagе. В таком случае все просто. В FormCreate пишем Button2.Enabled:=false;
В Button1Click пишем if a={Номер последнего image} Then Button2.Enabled:=True; //тоесть когда появится последний image вторая кнопка станет доступной. Можно еще дописать строку
if a={Номер последнего image} Then Button1.Enabled:=false; // тогда при появлении последнего Image первая кнопка станет недоступной...
Хитманчан

Хитманчан (статус: Посетитель), 8 января 2009, 11:35 [#11]:

Большое спасибо.. разобрался!
Пупкин В.В.

Пупкин В.В. (статус: 1-ый класс), 8 января 2009, 11:36 [#12]:

удобнее использовать TImageList
Ученый

Ученый (статус: 8-ой класс), 8 января 2009, 11:44 [#13]:

Кому как.... я бы вообще мог сделат все это и спомощью всего лишь одного image...
Пупкин В.В.

Пупкин В.В. (статус: 1-ый класс), 8 января 2009, 11:47 [#14]:

=) можно вообще без image обойтись
Хитманчан

Хитманчан (статус: Посетитель), 9 января 2009, 18:04 [#15]:

Пупкин В.В., не знаю - Вам может и удобнее, но я обращаться с TImageList не умею... хотя с радостью бы научился...
Ну вот у меня какая проблема есть - все работает идеально - но 1 неприятный момент есть - думает долго что-то) Если 2 раза подряд на кнопку нажать тока 1 раз сменит картинку) Может можно сделать как-то, что бы стабильно было - раз нажал - раз переключило?) Ученый, Вы говорили есть море вариантов, не могли бы Вы посоветовать еще какой-то, если у Вас время конечно будет! Был бы признателен) Спасибо!
Вадим К

Вадим К (статус: Академик), 9 января 2009, 18:06 [#16]:

Неужели вы так быстро на кнопку жмете? выложите сорцы, почитаем, покорректируем...
Галочка "подтверждения прочтения" - вселенское зло.
Хитманчан

Хитманчан (статус: Посетитель), 9 января 2009, 18:31 [#17]:

Вадим К, ну скажем так - успеваю углядеть, что это еще не та страница, которая мне нужна, и нажать на кнопку следущая страница - и не меняет еще) Вот код проги (не знаю. как его скрывать... вылажу текстом... если что сорри):

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, PNGButton;

type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image6: TImage;
Image7: TImage;
Image8: TImage;
Image9: TImage;
Image10: TImage;
Image11: TImage;
Image12: TImage;
Image13: TImage;
Image14: TImage;
Image15: TImage;
Image16: TImage;
Image17: TImage;
Image18: TImage;
Image19: TImage;
Image20: TImage;
Image21: TImage;
Image22: TImage;
Image23: TImage;
Image24: TImage;
Image25: TImage;
Image26: TImage;
Image27: TImage;
Image28: TImage;
Image29: TImage;
Image30: TImage;
Image31: TImage;
Image32: TImage;
Image33: TImage;
Image34: TImage;
Image35: TImage;
Image36: TImage;
Image37: TImage;
Image38: TImage;
Image39: TImage;
Image40: TImage;
Image41: TImage;
Image42: TImage;
Image43: TImage;
Image44: TImage;
Image45: TImage;
Image46: TImage;
Image47: TImage;
Image48: TImage;
Image49: TImage;
Image50: TImage;
Image51: TImage;
Image52: TImage;
Image53: TImage;
Image54: TImage;
Image55: TImage;
Image56: TImage;
Image57: TImage;
Image58: TImage;
Image59: TImage;
Image60: TImage;
Image61: TImage;
Image62: TImage;
Image63: TImage;
Image64: TImage;
Image65: TImage;
Image66: TImage;
Image67: TImage;
Image68: TImage;
Image69: TImage;
Image70: TImage;
Image71: TImage;
Image72: TImage;
Image73: TImage;
PNGButton4: TPNGButton;
PNGButton5: TPNGButton;
PNGButton6: TPNGButton;
Image74: TImage;
procedure FormCreate(Sender: TObject);
procedure PNGButton4Click(Sender: TObject);
procedure PNGButton5Click(Sender: TObject);
procedure PNGButton6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

a:integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Position:=poDesktopCenter;
VertScrollBar.Visible:=False;
HorzScrollBar.Visible:=False;
Form1.DoubleBuffered:=true;
a:=1;
PNGButton4.Enabled:=false;
PNGButton5.Enabled:=false;
end;

procedure TForm1.PNGButton4Click(Sender: TObject);
begin

a:=a-1;
TImage(FindComponent('Image'+IntToStr(a))).Visible:=true;
TImage(FindComponent('Image'+IntToStr(a+1))).Visible:=false;
if a=1 then PNGButton4.Enabled:=false;
if a=1 then PNGButton5.Enabled:=false;
PNGButton5.Enabled:=true;
PNGButton6.Enabled:=true;
end;

procedure TForm1.PNGButton5Click(Sender: TObject);
begin
TImage(FindComponent('Image'+IntToStr(a))).Visible:=False;
a:=1;
TImage(FindComponent('Image'+IntToStr(a))).Visible:=true;
PNGButton5.Enabled:=false;
PNGButton6.Enabled:=true;
PNGButton4.Enabled:=false;
end;

procedure TForm1.PNGButton6Click(Sender: TObject);
begin
a:=a+1;
TImage(FindComponent('Image'+IntToStr(a))).Visible:=true;
TImage(FindComponent('Image'+IntToStr(a-1))).Visible:=false;
if a=73 then PNGButton6.Enabled:=false;
PNGButton5.Enabled:=true;
PNGButton4.Enabled:=true;
end;

end.
Вадим К

Вадим К (статус: Академик), 9 января 2009, 19:11 [#18]:

о ужас. 74 Image на форме... вы в своем уме? а не думали, почему программа так медленногрузиться, почему exe файл так много весит?
для осуществления задачи надо всего один Image и всё.
Галочка "подтверждения прочтения" - вселенское зло.
Хитманчан

Хитманчан (статус: Посетитель), 9 января 2009, 19:21 [#19]:

Не ну размер проги меня не волнует - де-то 20 метров она весит - если учесть что вес всех картинко где-то 19) Мне просто важно, что бы все картинки в проге были, а не отдельно от нее)
Ученый

Ученый (статус: 8-ой класс), 9 января 2009, 19:26 [#20]:

Дауж...размеры впечатляют..... Но Вадим безусловно прав, здесь нужен всего один image...

Страницы: [1] [2] [Следующая »]

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.02 сек.