Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.01.2008, 00:18
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание По очереди...

Возможноли такое

есть 3 картинки
İmage1
İmage2
İmage3
c параметрами
İmage1.visible:=true;
İmage2.visible:=false;
İmage3.visible:=false;
Как сделать так чтобы нажая на одну и ту же кнопку показать эти катринки по очереди?
Ответить с цитированием
  #2  
Старый 26.01.2008, 00:27
vitalik007 vitalik007 вне форума
Прохожий
 
Регистрация: 12.10.2007
Адрес: Минск
Сообщения: 30
Репутация: 10
По умолчанию

записывай в свойства tag у кнопки номер текущей картинки и потом смотри какой tag и выводи соответствующее
Ответить с цитированием
  #3  
Старый 26.01.2008, 01:14
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Подмигивание Можно так ...

для одного цикла:
Код:
for i:=1 to 3 do
begin 
case i of 
begin 
1: begin TImage(i).Visible:=True; TImage(i+1).Visible:=False; TImage(i+2).Visible:=False; end;
2: begin TImage(i).Visible:=True; TImage(i-1).Visible:=False; TImage(i+1).Visible:=False; end;
3: begin TImage(i).Visible:=True; TImage(i-1).Visible:=False; TImage(i-2).Visible:=False; end;
end;
end;

Сорри, если не так. Написал первую попавшуюся мысль
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 26.01.2008 в 01:17.
Ответить с цитированием
  #4  
Старый 26.01.2008, 02:35
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание

Нет не так -
Ответить с цитированием
  #5  
Старый 26.01.2008, 03:12
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание

почему не возвращеться в обычное состояние
Код:
if image3.Tag=3 then
begin
image3.Visible:=false;
image1.Visible:=true;
image1.Tag:=0;
image2.Tag:=0;
image3.Tag:=0;
end;
if image2.Tag=2 then
begin
image2.Visible:=false;
image3.Visible:=true;
image3.Tag:=3;
end;
if image1.Tag=1 then
begin
image1.Visible:=false;
image2.Visible:=true;
image2.Tag:=2;
end;
if image1.Tag=0 then
begin
image1.Visible:=true;
image1.Tag:=1;
end;
Ответить с цитированием
  #6  
Старый 26.01.2008, 06:09
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
unit ilUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    ImageList1: TImageList;
    procedure Button1Click(Sender: TObject);
  private
    FImageIndex: Integer;
    procedure SetImageIndex(const Value: Integer);
    { Private declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;

    property ImageIndex: Integer read FImageIndex write SetImageIndex;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ImageIndex < ImageList1.Count - 1 then
    ImageIndex := ImageIndex + 1
  else
    ImageIndex := 0;
end;

constructor TForm1.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  ImageIndex := -1;
end;

procedure TForm1.SetImageIndex(const Value: Integer);
var
  B: TBitmap;
begin
  If FImageIndex <> Value then begin
    if (Value >= 0) and (Value < ImageList1.Count) then begin
      FImageIndex := Value;

      B := TBitmap.Create;

      ImageList1.GetBitmap(FImageIndex, B);
      Image1.Picture.Bitmap := B;
      Image1.Refresh;
      Image1.Visible := True;

      B.Free;
    end else begin
      FImageIndex    := -1;
      Image1.Visible := False;
    end;
  end;
end;

end.
Ответить с цитированием
  #7  
Старый 26.01.2008, 21:06
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание

Rosenkrantz большие снимки можно пихать в Imagelist??
Так не пойдет - я же там написал в чем смысл -
Ответить с цитированием
  #8  
Старый 26.01.2008, 23:31
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Подмигивание А если так ???

Цитата:
Сообщение от Electronic_Arts
Нет не так -
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;
  i:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if Components[i] is TImage then
begin
Components[i].Tag:=i+1;
case Components[i].Tag of
1 : begin Image1.Show; Image2.Hide; Image3.Hide; end;
2 : begin Image1.Hide; Image2.Show; Image3.Hide; end;
3 : begin Image1.Hide; Image2.Hide; Image3.Show; end;
end;
end;
if i<2 then i:=i+1 else i:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
end;

end.
Проверил. Работает! ;)
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #9  
Старый 27.01.2008, 00:17
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
Смех Это очень просто

Это простой пример. За две минуты написал:
Код:
procedure SetVisible(image:TImage);
begin
    Form1.image1.Visible:=false;
    Form1.image2.Visible:=false;
    Form1.image3.Visible:=false;
    image.Visible:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    if image1.Visible=true then
    begin
        setvisible(image2);
    end
    else if image2.Visible then
    begin
        setvisible(image3);
    end
    else
    begin
        setvisible(image1);
    end;
end;
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #10  
Старый 27.01.2008, 06:11
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от Electronic_Arts
Rosenkrantz большие снимки можно пихать в Imagelist??
Так не пойдет - я же там написал в чем смысл -

Насколько я понимаю, в TImageList можно пихать картинки любого размера, по крайней мере, я нигде не читал про какие-либо ограничения.
А почему так не пойдет? Вам нужно показывать картинки на разных позициях в форме? Я почему спрашиваю - способ, который я предлагаю, более универсальный, чем для каждой картинки добавлять по отдельному TImage. А позицию можно и вычислять по ходу смены картинок.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter