Avatar billede lolle Nybegynder
23. december 2000 - 00:30 Der er 4 kommentarer og
1 løsning

Frem og Tilbage!

Dette spm er lidt svært at forklare men jeg prøver!

Jeg har en TImage, TLabel, TListBox, TStaticText og to Buttons (Frem og Tilbage).
Jeg har også 5 billeder og tekster som ligger i en undermappe

Jeg vil så når jeg trykker på en tekst i ListBoxen loade tekst(tekst1.txt), billede(pic1.jpg) ind i TImage, TLabel og det kan jeg også let nok. Jeg har en Memo hvor jeg loader teksten ind også udskriver jeg den i TLabel.

Jeg vil så have at Frem og Tilbage knapperne skal kunne bladre rund, også loade f.eks tekst2 af 5 osv.. Og så skal TStaticText blive opdateret men \"Trin 2 af 5\". Men hvordan kan jeg det?

Nu har jeg prøvet at få dette til at virke i et par timer, men jeg kan ikke!
Jeg har også prøvet med flere forskellige metoder!

Hvis der er nogen som har en helt vild god løsning på mit problem, så er der 250 point.

/lolle

PS. Det må også gerne være sådan at jeg ikke skal loade teksten ind i en Memo først.
Avatar billede nico26 Nybegynder
23. december 2000 - 04:15 #1
jeg ved ikke om jeg har fået rigtigt fat i hvad du mener, men her er et forslag

type
  TForm1 = class(TForm)
    btnTilbage: TButton;
    btnFrem: TButton;
    Image1: TImage;
    Label1: TLabel;
    StaticText1: TStaticText;
    ListBox1: TListBox;
    procedure ListBox1Click(Sender: TObject);
    procedure btnFremClick(Sender: TObject);
    procedure btnTilbageClick(Sender: TObject);
  private
    procedure Browse;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Browse;
var
  Text: TextFile;
  FileName1,
  FileName2,
  S: string;
begin
  case Label1.Tag of
    1: begin
      FileName1 := \'tekst1.txt\';
      FileName2 := \'pic1.jpg\';
      btnTilbage.Enabled := False;
    end;
    2: begin
      FileName1 := \'tekst2.txt\';
      FileName2 := \'pic2.jpg\';
    end;
    3: begin
      FileName1 := \'tekst3.txt\';
      FileName2 := \'pic3.jpg\';
    end;
    4: begin
      FileName1 := \'tekst4.txt\';
      FileName2 := \'pic4.jpg\';
    end;
    5: begin
      FileName1 := \'tekst5.txt\';
      FileName2 := \'pic5.jpg\';
      btnFrem.Enabled := False;
    end;
  end;

  try
    AssignFile(Text, FileName1);
    Reset(Text);
    Readln(Text, S);
  finally
    CloseFile(Text);
  end;

  Label1.Caption := S;
  Image1.Picture.LoadFromFile(FileName2);
  StaticText1.Caption := Format(\'Trin %d af %d\', [Label1.Tag, 5]);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  Label1.Tag := 1;
  Browse;
end;

procedure TForm1.btnFremClick(Sender: TObject);
begin
  Label1.Tag := Label1.Tag + 1;
  Browse;
  btnTilbage.Enabled := True;
end;

procedure TForm1.btnTilbageClick(Sender: TObject);
begin
  Label1.Tag := Label1.Tag - 1;
  Browse;
  btnFrem.Enabled := True;
end;

end.
Avatar billede lolle Nybegynder
23. december 2000 - 11:04 #2
Nej det har du ikke helt !

Der er jo mere end en ting i listboxen og de har ikke 5 pic/tekst. Det er nemlig forskelligt. Jeg loader fra en ini hvor mange pic/tekst der er og hver ini fil ligger i en undermappe med alle pic og tekst til hver af dem som ligger i listboxen.

Derfor kan det ikke laves på den må som du har lavet!

i ini filen står
antal \"6 eller 12 det er forskelligt\"
navn \"Navnet som skal være i listboxen\"

Jeg har så når programmet \"Creater\", lavet det sådan at den loader alle mapper ind og finder ini filen og skriver det i listboxen.

Når man så trykker på f.eks. \"lolle\", er der 3 pic/tekst og så skal den kunne bladre mellem dem, med Frem og Tilbage. Hvis det så er \"Hej\" skal den bladre mellem 6 pic/tekst.

Hvis du altså forstår !

Hvis du kan finde ud af det så er jeg glad og hvis du kan behøves der ikke lave så den loader alle mapper osv. for det har jeg lavet. Du kan f.eks. bare skrive \"lolle\" og \"hej\" i listboxen fra starten.


Der kan sendes eks. til min mail: lolle23@ofir.dk
Avatar billede data42 Nybegynder
26. december 2000 - 00:44 #3
Hmmm.. Jeg ved ikke om jeg har forstået dette helt korrekt. Som du selv siger, så er det svært at beskrive, til gengæld er svaret lige så svært at beskrive, så vi må håbe at vi ikke går helt forbi hinanden... :-)

Sådan som jeg har forstået det, så har du en liste af emner. Til hvert emne hører der en række tekster og en række billeder. Når du vælger et emne i listboksen, skal du kunne bladre frem og tilbage mellem de billeder/tekster der hører til netop dette emne. Korrekt?

I så fald ville jeg gøre noget lign. dette:

Du starter med at lave en TStringList, lad og kalde den EmneData.

Når du indlæser alle dine .ini-filer, skal du gøre to ting. Du skal smide teksten i listboksen, og smide stien til filerne i EmneData. Når der klikkes på et emne i listen, henter du stien til det emne med sti=EmneData.items[listbox1.itemindex];. Du har så stien til dine data.

Du læser nu .ini-filen igen. Her er det antallet af filer vi koncentrerer os om.
Vi antager her at alle billeder starter med pic og alle tekster starter med text (altså pic1.jpg, pic2.jpg, text1.txt, text2.txt o.s.v.).

I din form1\'s private sektion laver du en counter variabel og en NumData variable, begge integers. Når du har læst ini-filen, sætter du NumData til antallet af data-filer (læst fra ini-filen) og counter-variablen til 1. Derefter indlæser du \'pic\'+inttostr(counter)+\'.jpg\' ind og tilsvarende med teksten. Når du klikker på next/prev tæller du counter 1 op/ned, og indlæser igen. I next/prev knapperne sørger du for at man ikke kan tælle længere ned end 1 og ikke højere op end antallet af billeder (NumData).

Er det her det du mener, og giver mit vrøvl overhovedet mening?

/Data42
Avatar billede lolle Nybegynder
27. december 2000 - 13:50 #4
Data42 > Det var lige sådan jeg mente =)
Avatar billede data42 Nybegynder
27. december 2000 - 23:52 #5
Jammen det var da heldigt. Held og lykke med projektet.

/Data
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