Fórum problemaço, precioso muito de ajuda #227999

26/04/2004

0

Galera, td bem com vcs?
Olha, tô quebrando a cabeça há algum tempo, com a ajuda de tds vcs consegui desenvolver parte do código de um programinha, eu preciso exibir na minha tela imagens(*.bmp), uma por uma de cada pasta e tocar uma música(*.mp3), e quando acabar as imagens acaba o some vai fazer a mesma coisa na próxima pasta.
Bom, achei vários códigos, pensei em vários caminhos, mas naum consegui chegar a uma conclusão, fiz com que mostrasse as pastas contidas num caminho já definido, mas ele naum lê tds as pastas e exibe o e toca o que quero, fiz de td mas naum consegui, coloquei alguns listbox´s para poder me mostrar as respostas, e label´s com o memso objetivo.
Bem o código vai abaixo, só o código de tocar o som naum está mas no fim do código eu vou colocar pra que tenham uma certa noção do jeito que etou tentando fazer.
Especificando melhor, estou com o problema de exibir a imagens de cada pasta e tocar o som e sincronizá-los..
O código vem abaixo:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
ListBox1: TListBox;
DirectoryListBox1: TDirectoryListBox;
ListBox2: TListBox;
ListBox3: TListBox;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
MediaPlayer1: TMediaPlayer;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
procedure pasta(aLista: TStrings);
procedure imagem();

{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
contImg: integer;

implementation

{$R *.dfm}

procedure TForm1.imagem();
begin
Inc(contImg);
end;

// o código abaixo lista todos os arquivos em cada pasta
procedure TForm1.pasta(aLista: TStrings);
var
Rec : TSearchRec;
conta, i: integer;
begin
conta:=0;
for i:= 0 to (ListBox1.Count-1) do
begin
if SysUtils.FindFirst(´c:\teste\´+aLista+´\*.bmp´,faAnyFile, Rec) = 0 then
begin
repeat
conta:=conta+1;
ListBox2.Items.add(´´+(inttostr(i))+´ - ´+(inttostr(conta))+´ - ´+rec.Name+´´);
ListBox3.Items.Add(inttostr(conta));
Label2.Caption:=inttostr(i);
until SysUtils.FindNext(Rec) <> 0;
end;
SysUtils.FindClose(Rec);
begin
Label1.Caption:=inttostr(ListBox2.Count);
end;
end;
end;

// o código abaixo encontra todas as pastas no caminho pré-definido
procedure TForm1.FormCreate(Sender: TObject);
var
x, p, t:Integer;
begin
ListBox1.Clear;
DirectoryListBox1.Directory:=´c:\teste\´;
for x:=0 to DirectoryListBox1.Count - 1 do
begin
p:=Pos(DirectoryListBox1.Directory,DirectoryListBox1.GetItemPath(x));
t:=length(DirectoryListBox1.GetItemPath(x)) - length(DirectoryListBox1.Directory);
if (p > 0) and (t > 0) then
begin
ListBox1.Items.Add(copy(DirectoryListBox1.GetItemPath(x),length(DirectoryLi stBox1.Directory)+2,t));
end;
contImg:=1;
end;
begin
pasta(ListBox1.Items);
end;
end;

//faz a troca de imagens, que naum tá dando certo, qeu ve só uma única pasta e nuam sai dela
procedure TForm1.Timer1Timer(Sender: TObject);
var
a:integer;
begin
timer1.Interval:= 100;
for a:=0 to (ListBox1.Items.Count-1) do
Image1.Picture.LoadFromFile(´C:\teste\´+listbox1.items[a]+´\Imagem´+FormatF loat(´000´,contImg)+´.bmp´);
imagem();
if contImg=4 then
contImg:=1;
end;

end.


alguns teste foram feitos exibindo as imagens e tocando o som, sem sincronizá-los , mas já com o caminho pré-determinado, o código segue abaixo:

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, mmsystem, MPlayer;

type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
MediaPlayer1: TMediaPlayer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
contImg:integer;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Interval:= 100;
Image1.Picture.LoadFromFile(´C:\Imagem´+FormatFloat(´000´,contImg)+´.bmp´);
Inc(contImg);
if contImg=4 then
contImg:=1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
contImg:=1; //grande sacada
mediaplayer1.FileName:= ´c:\pesca1.mp3´;
mediaplayer1.Open;
timer1.Enabled:= true;
mediaplayer1.Play;
end;

end.

As ajudas serão muito bem vindas, qualquer outra forma de realizar isso será tbm muito bem vinda, o programa ainda precisa de algumas partes como enviar essas imagens pela serial para uma memória, mas acho que isso seria uma outra batalha o que preciso de imediato seria isso, o funcionamento por completo desse código, haverá centenas de imagens em cada pasta e apenas um arquivo de áudio, os nomes das imagens com vcs perceberam mudam só o número, e o arquivos de som posso especificar com um só nome.

Obrigado pela atenção


Salvati

Salvati

Responder

Posts

26/04/2004

Nildo

As regras de conduta do fórum dizem claramente que suas mensagens DEVEM conter títulos objetivos. Por favor, releia as regras antes de prosseguir com qualquer outra mensagem.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar