Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-10-2015
anonymous anonymous is offline
Miembro
NULL
 
Registrado: may 2015
Posts: 23
Poder: 0
anonymous Va por buen camino
Unhappy Reproductor Delphi

Buenas queria saber si me podrian decir como hacer para poder maximizar un panel haciendole doble click , al reproducir un video ..
Como tienen los reproductores actuales , pensaba en modificar algun evento del panel1 ?
Porfavor ayuden .. Muchas gracias
Responder Con Cita
  #2  
Antiguo 21-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Asumiendo que tenes una estructura: Panel dentro del Form (es decir, Panel.Parent := Form)

En el Panel, setea la propiedad Align --> alClient, y
En el Form. setea la propiedad WindowsState --> wsMaximized
Responder Con Cita
  #3  
Antiguo 21-10-2015
anonymous anonymous is offline
Miembro
NULL
 
Registrado: may 2015
Posts: 23
Poder: 0
anonymous Va por buen camino
Me queda el formulario ocupando toda la pantalla , yo quisiera dejarlo normal.
Pero al iniciar una pelicula o en cualquier momento .. hacer un doble click y que el panel 1 se maximize en toda la pantalla
Responder Con Cita
  #4  
Antiguo 21-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Basicamente lo que tenes que hacer es, en el evento OnDblClick del Panel,

Si Form = Maximizado --> Normal
Sino Form --> Maximizado

Pero es necesario que el panel este alineado alClient (para que se expanda todo lo que su contenedor lo permita)
Responder Con Cita
  #5  
Antiguo 21-10-2015
anonymous anonymous is offline
Miembro
NULL
 
Registrado: may 2015
Posts: 23
Poder: 0
anonymous Va por buen camino
Se me maximiza todo el form pero el panel1 queda del mismo tamaño
Responder Con Cita
  #6  
Antiguo 21-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Align := alClient;
  Panel1.Caption := 'Normal';
  Panel1.Color := clRed;
end;

procedure TForm1.Panel1DblClick(Sender: TObject);
begin
  if WindowState = wsMaximized then
  begin
    WindowState := wsNormal;
    Panel1.Caption := 'Normal';
  end
  else
  begin
    WindowState := wsMaximized;
    Panel1.Caption := 'Maximizado';
  end;
end;

Que es lo que necesitas exactamente? Que el tamaño del panel sea el mismo del form? Porque eso es lo que estoy entendiendo y eso es lo que hace el codigo de arriba
Responder Con Cita
  #7  
Antiguo 21-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola anonymous.
Cita:
Empezado por anonymous Ver Mensaje
Me queda el formulario ocupando toda la pantalla , yo quisiera dejarlo normal.
Pero al iniciar una pelicula o en cualquier momento .. hacer un doble click y que el panel 1 se maximize en toda la pantalla
Según te entiendo, tendrías que usar el evento OnDblClick del TPanel elegido como Display, ejemplo:
Código Delphi [-]
procedure TForm1.PanelDisplayDblClick(Sender: TObject);
begin
  Panel1.Align := alClient;
end;
Ahora, que el video también se maximice dependerá de el tamaño que tenga este...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 23-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
procedure TForm1.SetFullScreen(Full: boolean);
begin
  if Full then
  begin
    BorderStyle:= bsNone;
    WindowState:= wsMaximized;
    DoubleBuffered:= true;
    Panel1.Align:= alClient;
  end
  else
  begin
  //.........
  end;
end;


Saludos.
Responder Con Cita
  #9  
Antiguo 23-10-2015
anonymous anonymous is offline
Miembro
NULL
 
Registrado: may 2015
Posts: 23
Poder: 0
anonymous Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Align := alClient;
  Panel1.Caption := 'Normal';
  Panel1.Color := clRed;
end;

procedure TForm1.Panel1DblClick(Sender: TObject);
begin
  if WindowState = wsMaximized then
  begin
    WindowState := wsNormal;
    Panel1.Caption := 'Normal';
  end
  else
  begin
    WindowState := wsMaximized;
    Panel1.Caption := 'Maximizado';
  end;
end;

Que es lo que necesitas exactamente? Que el tamaño del panel sea el mismo del form? Porque eso es lo que estoy entendiendo y eso es lo que hace el codigo de arriba



Al Hacer doble click se me maximiza el formulario pero no el panel ...



Este es mi codigo
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    OpenDialog1: TOpenDialog;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ProgressBar1: TProgressBar;
    Timer1: TTimer;
    Panel1: TPanel;
    procedure BitBtn1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Panel1DblClick(Sender: TObject);



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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
   begin
   MediaPlayer1.FileName := OpenDialog1.Filename ;
   Mediaplayer1.Display := panel1 ;
   MediaPlayer1.Open ;
   mediaplayer1.DisplayRect := panel1.ClientRect;
   Progressbar1.Max := MediaPlayer1.Length ;
   progressbar1.Position := 0;
   Timer1.Enabled := true ;



end;
end ;



procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Align := alClient;
  Panel1.Caption := 'Normal';
  Panel1.Color := clRed;
end;


procedure TForm1.Panel1DblClick(Sender: TObject);
begin
  if WindowState = wsMaximized then
  begin
    WindowState := wsNormal;
    Panel1.Caption := 'Normal';
  end
  else
  begin
    WindowState := wsMaximized;
    Panel1.Caption := 'Maximizado';
  end;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Progressbar1.Position := Mediaplayer1.Position ;
end;



end.
Responder Con Cita
  #10  
Antiguo 24-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Y entiendo lo que dices. Haz lo siguiente:

Crea un nuevo formulario con available con el la propiedad KeyPreview:= true y siguiente código en el evento OnKeyDown:
Código Delphi [-]
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
 VK_ESCAPE = $1B;
begin
  if Key = VK_ESCAPE then Close;
end;

En el formulario principal escribes esto en el evento OnDblCick:
Código Delphi [-]
procedure TForm1.Panel1DblClick(Sender: TObject);
begin
  Form2:= TForm2.Create(self);
  Form2.BorderStyle:= bsNone;
  Form2.WindowState:= wsMaximized;
  Form2.Panel1.Align:= alClient;
  MediaPlayer1.Display:= Form2.Panel1;
  MediaPlayer1.DisplayRect:= Rect(0, 0, Screen.Width, Screen.Height);
  Form2.ShowModal();
  MediaPlayer1.Display:= Panel1;
  Form2.Free;
end;

El comportamiento será el siguiente: al hacer doble click en el Panel del video en ejecución se maximiza a pantalla completa sin ver formulario alguno y el vídeo lo verás FullSceen, con la salvedad de sus proporciones, que serán respetadas. En esta situación, al pulsar Escape volverá al formulario principal como si nada hubiera pasado, visualizándose normalmente en el panel diseñado al efecto.


Saludos.
Responder Con Cita
  #11  
Antiguo 24-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Pensándolo mejor, en el segundo formulario no te hace falta ningún Panel quedando el evento así:

Código Delphi [-]
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
 VK_ESCAPE = $1B;
begin
  if Key = VK_ESCAPE then Close;
end;
Código Delphi [-]
procedure TForm1.Panel1DblClick(Sender: TObject);
begin
  Form2:= TForm2.Create(self);
  Form2.BorderStyle:= bsNone;
  Form2.WindowState:= wsMaximized;
  Form2.KeyPreview:= true;
  MediaPlayer1.Display:= Form2;
  MediaPlayer1.DisplayRect:= Rect(0, 0, Screen.Width, Screen.Height);
  Form2.ShowModal();
  MediaPlayer1.Display:= Panel1;
  Form2.Free;
end;

Saludos.
Responder Con Cita
  #12  
Antiguo 24-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Y si nos ponemos a simplificar, ni siquiera hace falta crear visualmente ningún Form2, lo podemos hacer por código:

Pongo toda la unit de ejemplo para mostrar como asigno el evento OnKeyDown que llamo FullScreenKeyDown
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    MediaPlayer1: TMediaPlayer;
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Panel1DblClick(Sender: TObject);
    procedure FullScreenKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    MediaPlayer1.FileName:= OpenDialog1.FileName;
    MediaPlayer1.Open;
  end;
end;

procedure TForm1.Panel1DblClick(Sender: TObject);
var
  Form2: TForm;
begin
  Form2:= TForm.Create(self);
  Form2.BorderStyle:= bsNone;
  Form2.WindowState:= wsMaximized;
  Form2.KeyPreview:= true;
  Form2.OnKeyDown:= FullScreenKeyDown;
  MediaPlayer1.Display:= Form2;
  MediaPlayer1.DisplayRect:= Rect(0, 0, Screen.Width, Screen.Height);
  Form2.ShowModal();
  MediaPlayer1.Display:= Panel1;
  Form2.Free;
end;

procedure TForm1.FullScreenKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
const
  VK_ESCAPE = $1B;
begin
  if Key = VK_ESCAPE then Close;
end;

end.

Saludos.
Responder Con Cita
  #13  
Antiguo 26-10-2015
anonymous anonymous is offline
Miembro
NULL
 
Registrado: may 2015
Posts: 23
Poder: 0
anonymous Va por buen camino
Gracias Idolo .. el unico error es que al apretar ESC se cierra el programa

Última edición por Casimiro Notevi fecha: 26-10-2015 a las 19:33:23.
Responder Con Cita
  #14  
Antiguo 26-10-2015
anonymous anonymous is offline
Miembro
NULL
 
Registrado: may 2015
Posts: 23
Poder: 0
anonymous Va por buen camino
Como se puede acceder a los eventos de un formulario creado por Codigo ? Tengo esa duda , si me podrias explicar un poco me ayudarias
Responder Con Cita
  #15  
Antiguo 26-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Código Delphi [-]
type
 TAlgunaClase = class
 public
   procedure TuEvento(Sender: TObject);
 end;

{ mas adeante.. }
FormularioCreadoPorCodigo.OnCreate := TuEvento;

Notar que el evento que asignas tiene que ser de firma compatible. Esto es, que los parametros sean lo mismo. Como se ve en el ejemplo, el procedimiento TuEvento tiene un parametro Sender de tipo object, esto es asi porque OnCreate es un evento de tipo TNotifyEvent el cual se declara asi:

Código Delphi [-]
TNotifyEvent = procedure(Sender: TObject) of object;

El of object te requiere ademas, que el evento este declarado en una clase, de ahi que yo lo haya puesto en TAlgunaClase
Responder Con Cita
  #16  
Antiguo 26-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por anonymous Ver Mensaje
... el unico error es que al apretar ESC se cierra el programa
Tienes razón, no me di cuenta al sacar distintas versiones de lo mismo. La solución es bien fácil:
Código Delphi [-]
procedure TForm1.FullScreenKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
  VK_ESCAPE = $1B;
begin
  if Key = VK_ESCAPE then (Sender as TForm).Close;
end;


Saludos.
Responder Con Cita
  #17  
Antiguo 26-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por anonymous Ver Mensaje
Como se puede acceder a los eventos de un formulario creado por Codigo ? Tengo esa duda , si me podrias explicar un poco me ayudarias
Ya te ha contestado AgustinOrtu. En el código que expuse en el mensaje 12 tienes el ejemplo de cómo lo hice yo:
Código Delphi [-]
Form2.OnKeyDown:= FullScreenKeyDown;
Siendo FullScreenKeyDown un evento tipo OnKeyDown (TKeyEvent) procedimiento que pertenece a TForm1:
Código Delphi [-]
TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;

En realidad un evento no es más que un puntero a un procedimiento perteneciente a una clase que lo recibe.

Saludos.

Última edición por escafandra fecha: 26-10-2015 a las 23:30:07.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
reproductor jose.ignacio.ve Varios 1 11-11-2012 22:08:08
Reproductor de música en delphi 7 Anto OOP 2 04-10-2012 01:22:56
Reproductor Mp3 Delphi, problema nombre de archivo ZeroHot Varios 1 09-08-2010 03:17:02
como crear un reproductor en delphi LUISFRAMBE Internet 2 21-04-2010 16:15:39
Reproductor desarrollado en delphi miguel_pxyz Noticias 9 14-04-2009 18:39:35


La franja horaria es GMT +2. Ahora son las 12:10:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi