Avatar billede kalaaleq Nybegynder
07. marts 2007 - 21:29 Der er 42 kommentarer og
1 løsning

billeder fra listbox?

Jeg er ved at lave et program med delphi 6 som kort fortalt skal kunne vise billeder. programmet er opdelt sådan at jeg har 7 Radiobotton's når man klikker på en, kommer der en masse navne op i en listbox det er så godt nok.
Men det jeg godt kunne tænke mig var når man klikkede på en tekst (billedenavnet) i listbox at der kom et billede frem i en scrollbox ved siden af.
Og hvordan gør man så lige det?
Jeg har fået lavet listbox og scrollbox nu mangler jeg bare at få vist selve billederne.
skal lige siges at jeg er ikke hardcore til delphi
Avatar billede kroning Nybegynder
10. marts 2007 - 08:02 #1
Du smider en TImage på din scrollbox og sætter Align til alClient
I din LIstBox´s OnClick event skriver du:
  Image1.Picture.LoadFromFile(ListBox1.Items[ListBox1.ItemIndex]);
Avatar billede kalaaleq Nybegynder
10. marts 2007 - 19:26 #2
takker har fundet ud af at det kun virker når der står jpg i tekst filen og billederne ligger i roden af mappen men kan man ikke have flere mapper i roden sådan så billederne ligger i en mappe for sig selv?
Avatar billede kroning Nybegynder
10. marts 2007 - 20:08 #3
Dine billeder kan ligge hvor det skal være bare du angiver den fulde sti, og så er det ligemeget om det er bmp eller jpg billeder.
Avatar billede kroning Nybegynder
10. marts 2007 - 20:49 #4
Måske lidt mere info om hvad præcis problemet er :)
Avatar billede kalaaleq Nybegynder
10. marts 2007 - 22:40 #5
det kan godt være jeg er helt forkert på den men her er hvad jeg har so far:


procedure TForm1.RadioButton1Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\DFX BFM MOD\Tekst\dfxmod_Buildings.txt');

end;


procedure TForm1.RadioButton2Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\DFX BFM MOD\Tekst\dfxmod_Decorations.txt');
end;


procedure TForm1.ListBox1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ListBox1.Items[ListBox1.ItemIndex]);
end;

end.

og hver radiobotton ville jeg gerne have henvist til en mappe for sig selv...
Avatar billede kroning Nybegynder
10. marts 2007 - 23:04 #6
Du har altså ikke den fulde sti til billederne i dine txt filer?
Avatar billede kalaaleq Nybegynder
10. marts 2007 - 23:37 #7
hvad mener du? I mine tekst filer har jeg kun navnene på billede filerne...
jeg har en tekst fil for hver radiobotton under en mappe der hedder tekst også har jeg flere mapper hvor jeg har nogle billeder som jeg gerne vil have passer til de radiobotton's
sådan at hver radiobotton har en mappe for sig hvor billederne ligger i...
Avatar billede kroning Nybegynder
11. marts 2007 - 08:31 #8
Samtidig med at du loader listen ind kunne du også sætte en variable der hedder Mappe f.eks.:

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\DFX BFM MOD\Tekst\dfxmod_Buildings.txt');
Mappe:='MappeNavn';
end;

Og når du så klikker:

procedure TForm1.ListBox1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex]);
end;
Avatar billede kalaaleq Nybegynder
11. marts 2007 - 09:33 #9
når jeg skriver det ind kan jeg slet ikke køre programmet den markere bare på "Mappe" og siger
[Warning] Unit1.pas(8): Unit 'FileCtrl' is specific to a platform
[Error] Unit1.pas(43): Undeclared identifier: 'Mappe'
[Error] Unit1.pas(55): Undeclared identifier: 'Mappe'
[Fatal Error] Project1.dpr(7): Could not compile used unit 'Unit1.pas'
Avatar billede kroning Nybegynder
11. marts 2007 - 09:52 #10
Og du har vel defineret variablen mappe?

var
  Mappe : string;
Avatar billede kroning Nybegynder
11. marts 2007 - 09:58 #11
Jeg skal øst på nu og kommer først tilbage i morgen aften så inden da kan jeg ikke svare mere, men mindre jeg da finder en computer undervejs :-)
Avatar billede kalaaleq Nybegynder
11. marts 2007 - 10:16 #12
det er den nu ha ha og det virker
men er der en mulighed for i listbox'en at fjerne teksten ".jpg" sådan så det kun er filnavnet der står der?
Avatar billede kroning Nybegynder
11. marts 2007 - 22:15 #13
Ja jeg har ikke min delphi her men prøv at kikke i hjælpen under ExtractFileName og klik så evt. på "Se også", der findes vist en funktion der kan fjerne .jpg, men ellers kan jeg se om jeg kan finde den i morgen.
Du kan evt. også gøre det på denne måde:

Filnavn:=copy(Filnavn,1,Length(Filnavn)-4);
Avatar billede kalaaleq Nybegynder
13. marts 2007 - 17:46 #14
Jeg har kigget under hjælp men kunne ikke finde "ExtractFileName" og hvor skal jeg skrive "Filnavn:=copy(Filnavn,1,Length(Filnavn)-4);" det henne?
Jeg prøvede mig ellers frem men intet virkede :-(
Skal lige siges jeg har Delphi 6
Avatar billede kroning Nybegynder
15. marts 2007 - 11:45 #15
Efter du har loaded en liste ind kan du kører koden på alle linier, således:


procedure TForm1.RadioButton1Click(Sender: TObject);
var
    i : integer;
begin
ListBox1.Items.LoadFromFile('D:\DFX BFM MOD\Tekst\dfxmod_Buildings.txt');
    for i:=0 to ListBox1.Items.Count-1 do
      ListBox1.Items[i]:=copy(ListBox1.Items[i],1,Length(ListBox1.Items[i])-4);
end;
Avatar billede kalaaleq Nybegynder
17. marts 2007 - 19:14 #16
der gik ged i det, noget med noget unit2 som jeg ikke har forstand på så jeg tror bare jeg vil leve med at der står jpg på listbox'en *GG* så nu mangler jeg bare at finde ud af hvordan man afspiller lyd fra listbox'en hvor man klikker på en radiobotton og afspillingslisten kommer frem i listbox'en og hvor man så klikker på en play knap
Har godt nok ikke kigget så meget på det da jeg ikke har haft mulighed/tid til det.
Har du mulighed for at hjælpe mig med det?
Lige meget hvad kan jeg ikke give dig point før du ligger et svar *S*
Avatar billede kroning Nybegynder
17. marts 2007 - 19:30 #17
Hvilke lydfiler er det, og hvad vil du bruge til at afspille dem med?
Avatar billede kalaaleq Nybegynder
17. marts 2007 - 20:02 #18
mp3 håber jeg på at det kan blive... Og hvad ang afspiller det skal være havde jeg håbet på at det var selve programmet der skulle afspille lyden...
Avatar billede kroning Nybegynder
17. marts 2007 - 21:00 #19
Du kan bruge TMediaPlayer, den finder du under fanen System.
Avatar billede kalaaleq Nybegynder
18. marts 2007 - 19:21 #20
Nu har jeg fået kigget lidt på TMediaPlayer og jeg har forsøgt mig lidt frem og har søgt hvordan man skal bære sig ad men der findes så mange forskellige meninger og forklaringer at det ikke er til at finde ud af hvad man skal bruge *GG*
Avatar billede kroning Nybegynder
18. marts 2007 - 20:12 #21
Smid en TMediaplayer på din form og derefter kræves der kun 3 linier for at afspille en mp3 fil.

MediaPlayer1.FileName:='Winter Wonderland.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
Avatar billede kalaaleq Nybegynder
18. marts 2007 - 21:17 #22
jeg har prøvet som det for oven med radiobottons men så bare med mp3 filer men den siger "Unknown picture file extension (wav). når man klikker på filnavnet i listbox'en og i Unit1 er det her markeret "Image2.Picture.LoadFromFile(Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex]);"
Avatar billede kroning Nybegynder
19. marts 2007 - 09:48 #23
Jeg forstår ikke hvad du skriver. Du nævner mp3, wav og så skriver du også noget med "Image2.Picture.LoadFromFile...", hvad har de 3 ting med hinanden at gøre?
Avatar billede kalaaleq Nybegynder
19. marts 2007 - 17:24 #24
det jeg gerne vil have er på samme måde som med billederne... At det så bare er musik filnavnene der kommer på listbox'en, og når du så klikker på en filnavn så skal den kunne afspille filnavnet som er en mp3 fil (istedet for at fremvise billedefilen)

Det jeg har nu er:

procedure TForm1.RadioButton9Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Wac Codes.txt');
Mappe:='Wac Codes';

begin
  MediaPlayer1.Close;
  MediaPlayer1.FileName := 'D:\Ny BFM MOD\Wac Codes\alph100.mp3';
  MediaPlayer1.Open;
end;

end;

Men det jeg godt kunne tænke mig er, jeg har en mappe med lydfiler som skal komme frem i listbox'en (altså alle filnavne på lydfilerne) og klikker man på et af filnavnene i listbox'en skal den så afspille lydfilen
Avatar billede kroning Nybegynder
19. marts 2007 - 17:58 #25
Så er det denne kode du skal køre når du klikker på et filnavn:

MediaPlayer1.FileName:=Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
Avatar billede kalaaleq Nybegynder
19. marts 2007 - 18:09 #26
Nu siger den:

"Project Project2.exe raised exception class EstringListError with message 'List index out of bounds (-1) Progress stopped. Use step or Run to continue."
Avatar billede kroning Nybegynder
19. marts 2007 - 19:04 #27
Hvis du kører koden:
ListBox1.Items[ListBox1.ItemIndex];
og der ikke er valgt et item så har ListBox1.ItemIndex værdien -1 og derfor vil du få den nævnte fejl.
Avatar billede kalaaleq Nybegynder
19. marts 2007 - 21:31 #28
Det har jeg ikke så meget forstand på *gg* jeg har kigget lidt på min "Project" og hvis jeg forstår det ret så er items det der kommer frem på listbox'en når du klikker på en Radiobotton!?
Avatar billede kroning Nybegynder
19. marts 2007 - 22:02 #29
Ja Items er en TStrings, og den indeholder de linier du ser i listboxen.
Avatar billede kalaaleq Nybegynder
19. marts 2007 - 22:31 #30
Jeg har det her nu:
procedure TForm1.RadioButton9Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Wac Codes.txt');
Mappe:='Wac Codes';

begin
MediaPlayer1.FileName:=Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
end;
end.

Og de "Items" den skal bruge er vel dem der er her!?

procedure TForm1.RadioButton9Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Wac Codes.txt');
Mappe:='Wac Codes';

Eller er jeg helt galt på den?
Har du messenger for så kan du få hele projectet *gg* det er måske nemmere
Avatar billede kalaaleq Nybegynder
19. marts 2007 - 22:33 #31
sneakstalker@nyka.dk
Avatar billede kroning Nybegynder
20. marts 2007 - 08:33 #32
Mediaplayer1 koden skal først køres når du klikker på et item:

procedure TForm1.RadioButton9Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Wac Codes.txt');
Mappe:='Wac Codes';
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
MediaPlayer1.FileName:=Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
Avatar billede kalaaleq Nybegynder
20. marts 2007 - 16:40 #33
ok men nu siger den:

[Error] Unit3.pas(114): Identifier redeclared: 'TForm1.ListBox1Click'
[Error] Unit3.pas(36): Unsatisfied forward or external declaration: 'TForm1.MediaPlayer1Click'
[Fatal Error] Project3.dpr(5): Could not compile used unit 'Unit3.pas'
Avatar billede kroning Nybegynder
20. marts 2007 - 19:49 #34
Det er jo svært at sige uden at se hele din kode.
Avatar billede kalaaleq Nybegynder
20. marts 2007 - 20:02 #35
unit Unit3;

interface

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


type
  TForm1 = class(TForm)
    Image1: TImage;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    RadioButton6: TRadioButton;
    RadioButton7: TRadioButton;
    RadioButton8: TRadioButton;
    ListBox1: TListBox;
    ScrollBox1: TScrollBox;
    Image2: TImage;
    RadioButton9: TRadioButton;
    MediaPlayer1: TMediaPlayer;
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);
    procedure RadioButton5Click(Sender: TObject);
    procedure RadioButton6Click(Sender: TObject);
    procedure RadioButton7Click(Sender: TObject);
    procedure RadioButton8Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure RadioButton9Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Mappe : string;
implementation

{$R *.dfm}

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Buildings.txt');
Mappe:='Buildings';

end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Decorations.txt');
Mappe:='Decorations';
end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Enviroment files.txt');
Mappe:='Enviroment files';
end;

procedure TForm1.RadioButton4Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Objects.txt');
Mappe:='Objects';
end;

procedure TForm1.RadioButton5Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_People.txt');
Mappe:='People';
end;

procedure TForm1.RadioButton6Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_PowerUps.txt');
Mappe:='PowerUps';
end;

procedure TForm1.RadioButton7Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Terrains.txt');
Mappe:='Terrains';
end;

procedure TForm1.RadioButton8Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Vehicles.txt');
Mappe:='Vehicles';
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
Image2.Picture.LoadFromFile(Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex]);

end;

procedure TForm1.RadioButton9Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('D:\Ny BFM MOD\Tekst\dfxmod_Wac Codes.txt');
Mappe:='Wac Codes';
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
MediaPlayer1.FileName:=Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;

end.
Avatar billede kroning Nybegynder
20. marts 2007 - 22:42 #36
1. fejl får du fordi du har 2 ListBox1Click procedure
2. fejl får du fordi du i din Mediaplayer1´s OnClick event henviser til en procedure der ikke findes.
Avatar billede kalaaleq Nybegynder
21. marts 2007 - 16:47 #37
ok men hvor skal:
MediaPlayer1.FileName:=Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;

så være henne hvis jeg sletter den ene listbox?
skal den så hedde:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
Image2.Picture.LoadFromFile(Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex]);

begin
MediaPlayer1.FileName:=Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
for det er prøvet og det virker heller ikke
Avatar billede kroning Nybegynder
22. marts 2007 - 07:59 #38
Check i din ListBox1Click om filen der klikkes på er en billede fil eller en lyd fil og så kør den kode der er nødvendig.
Avatar billede kalaaleq Nybegynder
22. marts 2007 - 17:17 #39
det må være denne her:

procedure TForm1.ListBox1Click(Sender: TObject);
begin
Image2.Picture.LoadFromFile(Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex]);

men kan man ikke have en listbox som både kan have en liste over billede filer og lydfiler?
hvis man klikker på en billedefil åbner den billedet (Det med billederne virker fint) og i samme listbox klikker på en lydfil i listbox'en som så bliver afspillet?

Som sagt så er jeg ikke nogen haj til Delphi *gg*
Avatar billede kroning Nybegynder
22. marts 2007 - 18:05 #40
jo du skal bare kikke på fil endelsen i din ListBox1Click og så køre den kode der er nødvendig.

if endelse='jpg' then
begin
Image2.Picture.LoadFromFile(Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex]);
end
else
begin
MediaPlayer1.FileName:=Mappe+'\'+ListBox1.Items[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
Avatar billede kalaaleq Nybegynder
22. marts 2007 - 18:31 #41
Nu går den helt amok for nu siger den:

[Error] Unit3.pas(100): Declaration expected but 'IF' found
[Error] Unit3.pas(104): Declaration expected but 'ELSE' found
[Error] Unit3.pas(106): Undeclared identifier: 'MediaPlayer1'
[Error] Unit3.pas(106): Missing operator or semicolon
[Error] Unit3.pas(106): Undeclared identifier: 'ListBox1'
[Error] Unit3.pas(106): ']' expected but identifier 'ItemIndex' found
[Error] Unit3.pas(106): Statement expected, but expression of type 'Integer' found
[Error] Unit3.pas(109): '.' expected but ';' found
[Fatal Error] Project3.dpr(5): Could not compile used unit 'Unit3.pas'
Avatar billede kroning Nybegynder
22. marts 2007 - 19:46 #42
Jeg tror det ville være en god ide at få fat i en bog om Delphi/pascal programmering, evt. låne en på biblioteket.
Jeg mener at andre tidligere har anbefalet nogle titler, så måske hvis du opretter et nyt spørgsmål og spørger om nogle har nogle gode ideer til bøger.
Avatar billede kalaaleq Nybegynder
22. marts 2007 - 21:02 #43
ok det må jeg så gøre men jeg siger mange tak for din hjælp (:
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