|
#1
|
||||
|
||||
По очереди...
Возможноли такое
есть 3 картинки İmage1 İmage2 İmage3 c параметрами İmage1.visible:=true; İmage2.visible:=false; İmage3.visible:=false; Как сделать так чтобы нажая на одну и ту же кнопку показать эти катринки по очереди? |
#2
|
|||
|
|||
записывай в свойства tag у кнопки номер текущей картинки и потом смотри какой tag и выводи соответствующее
|
#3
|
||||
|
||||
Можно так ...
для одного цикла:
Код:
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
|
||||
|
||||
Нет не так -
|
#5
|
||||
|
||||
почему не возвращеться в обычное состояние
Код:
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
|
|||
|
|||
Код:
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
|
||||
|
||||
Rosenkrantz большие снимки можно пихать в Imagelist??
Так не пойдет - я же там написал в чем смысл - |
#8
|
||||
|
||||
А если так ???
Цитата:
Код:
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
|
||||
|
||||
Это очень просто
Это простой пример. За две минуты написал:
Код:
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
|
|||
|
|||
Цитата:
Насколько я понимаю, в TImageList можно пихать картинки любого размера, по крайней мере, я нигде не читал про какие-либо ограничения. А почему так не пойдет? Вам нужно показывать картинки на разных позициях в форме? Я почему спрашиваю - способ, который я предлагаю, более универсальный, чем для каждой картинки добавлять по отдельному TImage. А позицию можно и вычислять по ходу смены картинок. |