![]() |
|
|
#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; Сорри, если не так. Написал первую попавшуюся мысль ![]() Последний раз редактировалось 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. |
|
#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. А позицию можно и вычислять по ходу смены картинок. |