07. marts 2007 - 21:29Der 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
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]);
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?
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...
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'
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:
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
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;
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*
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*
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]);"
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?
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
"Project Project2.exe raised exception class EstringListError with message 'List index out of bounds (-1) Progress stopped. Use step or Run to continue."
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.
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!?
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
[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'
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.
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
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?
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;
[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'
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.
ok det må jeg så gøre men jeg siger mange tak for din hjælp (:
Synes godt om
Ny brugerNybegynder
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.