Hola de nuevo a todos como saben soy nuevo en Delphi bueno vamos al grano, me han encargado hacer una aplicacion en el cual cargue 6 imagenes a mi aplicacion y una ves cargadas que cambien en cierto tiempo, se que debo usar el Ttimer pero sobre como cargarlas no se que elementos o controles debo ocupar espero sus respuestas

Cargar Imagenes y hacer que cambien
Started by
edorantes
, Feb 28 2013 01:11 PM
9 replies to this topic
#1
Posted 28 February 2013 - 01:11 PM
#2
Posted 28 February 2013 - 03:05 PM
Investiga los componentes TImage y TTimer.
Saludos.
Saludos.
#3
Posted 01 March 2013 - 09:14 AM
En la seccion juegos y animaciones del foro puedes encontrar como hacerlo.
#4
Posted 04 March 2013 - 11:23 AM
Bueno amigos tengo la idea pero me faltan complementar varias cosas miren quiero seleccionar varias imagenes y despues pasarlas a un Tstrings para guardar las direcciones en un .txt bueno eso ya lo implemente pero lo que no puedo hacer es que con un OpenPicture dialog seleccione varias imagenes, solo me deja seleccionar una, como hago para que seleccione varias imagenes
este es mi codigo
Bueno les sigo explicando una vez guardadas las direcciones las boy a ir cambiando con un ttimer y mostrarlas en un Timage
este es mi codigo
delphi
Dialogo.Execute; TS := TStringList.Create(); try TS.Add(Dialogo.FileName); TS.SaveToFile('d:/txto.txt'); finally FreeAndNil(TS); end;
Bueno les sigo explicando una vez guardadas las direcciones las boy a ir cambiando con un ttimer y mostrarlas en un Timage
#5
Posted 04 March 2013 - 03:23 PM
delphi
ofAllowMultiSelect:= true;
Saludos.
#6
Posted 04 March 2013 - 03:59 PM
Perfecto escafandra ahora el txt lo muestro en un listbox mi cuestion es como utilizo el Ttimer para que vaya selecciondo la direccion del listbox y vaya cambiandola cada 10 segundos lo que yo hice fue poner dos timer y se van activando mutuamente pero necesito usar solo un Ttimer les pongo mi codigo
delphi
image1.Picture.LoadFromFile(imagen); Timer1.Enabled := false; Timer2.Enabled := true;
#7
Posted 05 March 2013 - 10:11 AM
Bueno lo he tratado de hacer con un ciclo while pero no me cambia las imagenes miren les explico
en un txt guardo las direcciones de las imagenes y despues obtengo esas direcciones con un Tstring asi
despues en el Ttimer en el evento onTimer
ago un ciclo while en donde cuento las lineas del txt y una variable que vaya incrementandose para seleccionar la direccion y mostrar la imagen pero SOLO MUESTRA UNA IMAGEN
en un txt guardo las direcciones de las imagenes y despues obtengo esas direcciones con un Tstring asi
delphi
dir := TStringList.create; dir.LoadFromFile('direcciones.txt');
despues en el Ttimer en el evento onTimer
ago un ciclo while en donde cuento las lineas del txt y una variable que vaya incrementandose para seleccionar la direccion y mostrar la imagen pero SOLO MUESTRA UNA IMAGEN
delphi
procedure TForm1.Timer1Timer(Sender: TObject); begin lin := dir.Count; x := 0; while (x<lin) do begin image1.Picture.LoadFromFile(dir.Strings[x]); x:= x+1 ; end; end;
#8
Posted 05 March 2013 - 10:40 AM
No tienes que hacer ningún bucle dentro del OnTimer, simplemente cada vez que se dispare en OnTimer tienes que cargar una imagen nueva
#9
Posted 05 March 2013 - 10:55 AM
El siguiente ejemplo trabaja perfectamente, no olvides en tiempo de diseño, poner en false la propiedad enabled del timer.
delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg; type TForm1 = class(TForm) Button1: TButton; Image1: TImage; Timer1: TTimer; Button2: TButton; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private FIndiceImagen: integer; FLista: TStringList; procedure IniciarImagenes; procedure DetenerImagenes; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin IniciarImagenes end; procedure TForm1.Button2Click(Sender: TObject); begin DetenerImagenes end; procedure TForm1.DetenerImagenes; begin Timer1.Enabled := False; if assigned(FLista) then FreeAndNil(FLista); end; procedure TForm1.IniciarImagenes; begin if not assigned(FLista) then FLista := TStringList.Create; FLista.LoadFromFile('f:\imas\imas.txt'); if not Timer1.Enabled then Timer1.Enabled := True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if assigned(FLista) then begin if FIndiceImagen = FLista.Count - 1 then FIndiceImagen := 0; Image1.Picture.LoadFromFile(FLista[FIndiceImagen]); FIndiceImagen := FIndiceImagen + 1; end; end; end.
#10
Posted 07 March 2013 - 03:59 PM
Muchas gracias willson y a todos los que se tomaron el tiempo de resolverlo
Bendiciones
Bendiciones