Avatar billede snowball Novice
29. maj 2000 - 11:19 Der er 5 kommentarer og
1 løsning

Skifte mellem 2 billeder

Jeg har en form med 4 editbox'e, 4 knapper og 4 image komponenter. Hvert sekund bliver current time skrevet i hver af de 4 editbox'e. Hvis man klikker på en af knapperne, så bli'r tiden ikke længere opdateret i den pågældende editbox (se kode længere nede!). Hver knap har et tag (1-4) som passer til editbox'ene.

Nu vil jeg gerne ha' at når man klikker på kanppen, så skal den også skifte billedet ud i den pågældende image komponent. Der skiftes hele tiden mellem 2 billeder (og kun 2 billeder!). Altså vises billede 1 allerede, så skal den vise billede 2 og omvendt !

Håber i fatter hvad jeg mener ;)

Snowball

type
  KontrolArray = array[1..4] of boolean;

var
  Form1: TForm1;
  Ar : Kontrolarray;

implementation

{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if ar[1] then
  edit1.Text := TimeToStr(Time);
  if ar[2] then
  edit2.Text := TimeToStr(Time);
  if ar[3] then
  edit3.Text := TimeToStr(Time);
  if ar[4] then
  edit4.Text := TimeToStr(Time);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
for i := 1 to 4 do
    ar[i] := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ar[tbutton(sender).tag]:= not ar[TButton(sender).tag];
end;
Avatar billede sjensen Nybegynder
29. maj 2000 - 11:32 #1
eks.

i button1click:

case tag of
1 : if image1.picture = pic1 then image1.picture.assign(pic2) else image1.picture.assign(pic1);
2 : samme, bare med image2
3 : ""
4 : ""
end;

Kan du ikke bruge det ?
Avatar billede sjensen Nybegynder
29. maj 2000 - 11:39 #2
og du kan selvfølgeligt også bruge Image1.picture.loadfromfile(pic1.bmp) og Image1.picture.loadfromfile(pic2.bmp) hvis du ikke har billederne inde på skærmen i forvejen.

En anden mulighed er at oprette 2 images samme sted med hvert sit billede hvis det er faste billeder. F.eks. Image1 og image11 og så skifte mellem image1 og image11 med visible := true/false:

case tag of
1 : if image1.visible then
    begin
      image1.visible  := false;
      image11.visible := true;
    end else
    begin
      image1.visible  := true;
      image11.visible := false;
    end;
2 : samme bare med image2 og image12
o.s.v.
Avatar billede snowball Novice
29. maj 2000 - 12:27 #3
Jeg kom egentlig også i tanke om dit sidste forslag lidt efter jeg hvade stillet spørgsmålet, men du får point'ene alligevel ;)

Så koden kom til at se sådan ud:

case tbutton(sender).tag of
  1: begin
      if image1.visible then begin
        image1.visible := false;
        image11.visible := true;
      end
      else begin
        image11.visible := false;
        image1.Visible := true;
      end;
    end;

  2: begin
      if image2.visible then begin
        image2.visible := false;
        image22.visible := true;
      end
      else begin
        image22.visible := false;
        image2.Visible := true;
      end;
    end;

  3: begin
      if image3.visible then begin
        image3.visible := false;
        image33.visible := true;
      end
      else begin
        image33.visible := false;
        image3.Visible := true;
      end;
    end;


Snowball
Avatar billede snowball Novice
29. maj 2000 - 12:28 #4
Whoops...Fik ikke lige det hele med, men det er vist til at forstå alligevel ;)

Snowball
Avatar billede sjensen Nybegynder
29. maj 2000 - 12:37 #5
snowball,

jeg tror faktisk du i din case kan bruge tag alene fordi der altid kun er en sender, og det er i en tbuttonclick event, men den måde du gør det på er også ok.
Avatar billede snowball Novice
29. maj 2000 - 12:44 #6
Nope, der skal stå tbutton(sender).tag for ellers så er tag = 0 hele tiden ;)

Snowball
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester