Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
Antiguo 24-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
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
  #3  
Antiguo 24-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
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
  #4  
Antiguo 24-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
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
  #5  
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 Noteví fecha: 26-10-2015 a las 19:33:23.
Responder Con Cita
  #6  
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
  #7  
Antiguo 26-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
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
  #8  
Antiguo 26-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
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
  #9  
Antiguo 26-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 14:46:51.


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