Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

Lepe, creo que es un poco distinto. Según entiendo de la ayuda de Delphi, el repository sólo acepta proyectos, forms, datamodules y frames.

En Delphi7 la opción que mencionas la obtienes seleccionando el panel y luego yendo al menú Component|Create Component Template...

El resto es igual, pero queda mejor si en lugar de seleccionar el panel, seleccionas todos los controles dentro del panel para que el panel en sí no se copie en la plantilla.

// Saludos
Responder Con Cita
  #2  
Antiguo 02-02-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 22
Albano Va por buen camino
No se como poner el Frame dentro de la forma, la unica manera que encontré es siguiendo los pasos que me mencionaron, esos de poner el frame en la paleta de componentes y despues ponerlo en la forma, pero lo que quiero es poder hacerlo en tiempo de ejecución, quiero crear los frames y ponerle todos los componentes que quiera y despues solo mostrarlos en el panel que tengo en el centro, ¿como lo puedo hacer?
Gracias otra vez.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #3  
Antiguo 02-02-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

En realidad puedes hacerlo como con cualquier otro componente: utilizas su constructor para crear una instancia y luego, básicamente, le asignas a su propiedad "Parent" el componente que quieres que acoga a su ventana. Es decir, una secuencia similar a esta:

Código:
var
  l: TLabel;
  f: TFrame;
  b: TButton;
begin
  f := TFrame.Create(Self);
  f.Parent := Self; // por Form1, por ejemplo
  b := TButton.Create(Self);
  b.Parent := f;
  l := TLabel.Create(Self);
  l.Parent := f;
  {...}
end;
Ahora bien, me parece que los "frames" son más bien para tenerlos "armados" y listos para usar (en tiempo de diseño o en tiempo de ejecución) y no para andar añadiéndoles componentes. Son como una especie de plantilla que se supone (en mi opinión) está preparada para ser utilizada: contiene los componentes que sean menester, vaya.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 02-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Suscribo lo dicho por dec. Aunque también puedes anidar Frames en tiempo de ejecución, colocar tantos frames como quieras y situarlos donde te apetezca.

Como ya sabes, solo con poner la propiedad Parent de un frame, puedes poner ese frame donde quieras.

Ejemplo:
Código Delphi [-]
var
  l: TLabel;
  f1, f2: TFrame;
  b: TButton;
begin
  f1 := TFrame.Create(Self);
  f1.Parent := Self; // por Form1, por ejemplo
  
  f2 := TFrame2.Create(Self);
  f2.Parent := f1; // lo metemos dentro de frame1

  f1.SetBounds( 0,0 100, 400); // lo hacemos mas alto para que quepa el segundo frame
  f2.setBounds(300, 100, 100,100); // ajustamos el tamaño
Obviamente tendrás que jugar con los anchors para que todo cuadre y unos frames no se superpongan con otros.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 03-02-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 22
Albano Va por buen camino
Ya hice lo que me mencionaron y funciona a la perfección, pero creo que no expliqué bien lo que queria en mi mensaje anterior...
Cita:
Empezado por dec
Ahora bien, me parece que los "frames" son más bien para tenerlos "armados" y listos para usar (en tiempo de diseño o en tiempo de ejecución) y no para andar añadiéndoles componentes. Son como una especie de plantilla que se supone (en mi opinión) está preparada para ser utilizada: contiene los componentes que sean menester, vaya.
Esto es precisamente lo que quiero hacer, quiero tenerlos listos y solo ponerlos cuando de click en un botón, pero no se hacerlo, estoy tratando, pero no encuentro la manera... me pueden ayudar de nuevo?
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #6  
Antiguo 03-02-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Lo primero que tienes que hacer es preparar un "frame". Inicia un nuevo proyecto de Delphi (7) y añade un nuevo "frame" al mismo: Menú File -> New -> Frame.

Tienes ante un "Frame" (similar a un formulario) vacío en el que puedes añadir los componentes que te sean menester. Añadiremos por ejemplo un "TEdit" y un "TButton".

Guarda a continuación todo el proyecto: File -> Save All

Sitúate en el formulario principal del proyecto. ¿Ya? Vale. En la paleta de componentes, en la pestaña "Standard", el primer componente que encuentras te da la posibilidad de insertar un "frame" en el formulario.

Pulsa sobre el icono del componente, pues, y a continuación sobre el formulario. Te aparecerá un cuadro de diálogo que muestra los "frames" conque contamos en el proyecto en el que trabajamos.

En nuestro caso hay sólo una y se llama (por defecto) "Frame2". Elige "Frame2" de la lista de "frames" disponibles y pulsa el botón "OK". Ya puedes ver el "frame" que anteriormente sobre el formulario: ves el botón y la casilla de edición.

El "frame" no lo ves, propiamente, es decir, este se confunde aparentemente con el propio formulario, de modo que cuando compiles y eches a andar el programa en el formulario pueda verse el botón y la casilla de edición, pero nada más.

Es decir, el "frame" nos proporciona varias cosas. Por un lado nos permite diseñar un componente compuesto de otros componentes de forma visual. Y por otro lado nos permite reutilizar dicho conjunto de componentes (que contiene el "frame") en diversos formularios y proyectos. Es una especie de plantilla que está a nuestra disposición.

Ahora bien. Nada nos impediría diseñar el "frame" visualmente (que creo que es lo suyo) y luego crear dicho "frame" en tiempo de ejecución y mostrarlo en el formulario que nos fuera menester. Al fin y al cabo el "frame" es un componente más, y los componentes no son sino clases con la particularidad de que un entorno de programación como Delphi permite su configuración y diseño visualmente.

Todo este rollo se resume de la siguiente forma:

Código Delphi [-]
unit Unit1;

interface

uses
  Forms,

  Unit2; // TFrame2

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject;
     var Action: TCloseAction);
  private
    FFrame: TFrame2;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FFrame := TFrame2.Create(Self);
  FFrame.Parent := Self;
  FFrame.SetBounds(10, 10, 300, 200);
end;

procedure TForm1.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  FFrame.Free;
end;

end.

Quita el "frame" que anteriormente insertamos en el formulario en tiempo de diseño. Sustituye el código del formulario tal como está ahora por el código anterior. Y ejecuta el proyecto de nuevo. Habrás creado un "frame" en tiempo de ejecución, le habrás dicho (con la propiedad "Parent") dónde tiene que mostrarse e incluso le habrás dado el tamaño (con "SetBounds") que has querido.

Y poco más me parece que puedo yo añadir sobre este tema. Si acaso decir que hasta ahora hemos creado y utilizado un "frame" en un proyecto en concreto, que puede contar con más "frames" (aunque tampoco creo que sea cuestión de utilizar "frames" a gogó), pero, lo que también es posible es utilizar "frames" que previamente hayamos situado en el "Repositorio de objetos" de Delphi. Esto nos ofrece la posibilidad de utilizar "frames" en distintos proyectos.

Sitúate de nuevo en el "Frame2" que creamos antes y pulsa con el botón derecho del ratón sobre el propio "frame". Verás un menú contextual que entre otras cosas te ofrece una opción para añadir la "frame" (ojo, también puedes añadir formularios, por ejemplo) al "Repositorio de objetos".

Hazlo. Añade el "Frame2" al "Repositorio" y a continuación inicia un nuevo proyecto en Delphi. Si a continuación tratas de añadir un "frame" en el formulario de nuestro nuevo proyecto verás aparecer un mensaje de error "No hay frames definidas en este proyecto. Si quiere puede usar File -> New -> Frames".

Pero nosotros no queremos eso exactamente ahora, no queremos crear un nuevo "frame" sino insertar nuestro "Frame2" creado anteriormente. Menú File -> New -> Others. Esto hace aparecer el "Repositorio de objetos" de Delphi. En mi caso guardé a "Frame2" en la pestaña "Forms" y la di de nombre "Perico" (verídico).

Pues bien, el resto es conocido: basta con seleccionar el icono correspondiente a nuestro "Frame2" (o cualquier otro que hubiéramos creado) para que automáticamente se inserte en el formulario dicho "Frame2". Cabría añadir el tema de la copia, herencia y uso de "frames". Verás en el "Repositorio de objetos" te permite insertar el "Frame2" copiándolo, heredándolo y haciendo uso de él, simplemente.

No hay que olvidar que "Frame2" se define he implementa en sendos archivos "pas" y "dfm" que antes guardamos junto al primer proyecto que creamos como ejemplo. Si queremos usar el "Frame2" en otro proyecto y optamos por "copiar" el "Frame2", cuando guardemos el proyecto en que usamos a "Frame2" se nos pedirá en qué ruta queremos guardar los archivos "pas" y "dfm" en que se define "Frame2": lo que tendremos por lo tanto será una copia de "Frame2" que usaremos en nuestro proyecto.

Ahora vayamos a "heredar" de "Frame2". En este caso lo que estamos indicando es que queremos crear un nuevo "frame" que herede de "Frame2", sencillamente. Es decir, si elegimos esta opción obtendremos un nuevo "frame" en cuya definición de tipo puede verse que:

Código Delphi [-]
type
  TFrame3 = class(TFrame2)

Hay que tener en cuenta que heredar de "Frame2" conlleva que los cambios en "Frame2" van a afectar a "Frame3". ¿Me explico? Quiere decirse que ahora usaremos a "Frame2", cuyos archivos "pas" y "dfm" estarán donde se hubieran guardado en un principio:

Código Delphi [-]
program Project2;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in '..\Nueva carpeta\Unit2.pas' {Frame2: TFrame},
  Unit3 in 'Unit3.pas' {Frame3: TFrame};

{...}

Y en último lugar podemos "usar" el "frame", no copiarlo ni heredarlo, sino sólamente usarlo. ¿Y esto qué significa realmente? Recordemos la secuencia: Menú File -> New -> Others -> Forms -> Perico... "usar".

Podríamos decir que "usar" no es ni "copiar" ni "heredar", pero, claro, esto no sé si deja muy diáfano el asunto. Pero hay que recordar que cuando "copiamos" el "frame" tuvimos que indicar una nueva ubicación para el mismo, de modo que usaríamos una copia del "frame", independientemente de lo que le ocurriera a la copia del "Repositorio de objetos".

Cuando heredamos el "frame", sin embargo, vimos que el asunto iba un poco más allá: si hacíamos cambios en "Frame2", "Frame3" se vería afectada (o mejor podría verse afectada) por dichos cambios. Pues bien. "Usar" el "Frame2" no significa sino eso, precisamente, usar los propios archivos donde se define "Frame2", lo que quiere decir que cualquier cambio que hagamos sobre "Frame2" será un cambio que afecte a todo proyecto que use "Frame2".

En fin. Voy a dejarlo aquí porque estoy justo en el punto en que uno piensa si tras tanta palabra no estará sino diciendo majaderías y además mal dichas. En todo caso si te he podido dar alguna idea pues mira, eso que has ganado tú y que no he perdido yo. Ya sabes.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 03-02-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 22
Albano Va por buen camino
Cita:
Empezado por dec
estoy justo en el punto en que uno piensa si tras tanta palabra no estará sino diciendo majaderías y además mal dichas. En todo caso si te he podido dar alguna idea pues mira, eso que has ganado tú y que no he perdido yo. Ya sabes.
WOW!!!
Muchisisisimas gracias por esta clase de FRAMES dec, eso era precisamente lo que necesitaba y creo que será de utilidad para algunos foristas. Ya entendí el funcionamiento de los frames y veo que tienene muchisima utilidad, de hoy en adelante los usaré en la mayoría de mis proyectos.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #8  
Antiguo 03-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Yo suelo usarlo para los grids.

Creo un frame, añado un grid, lo configuro a mi gusto, añado algunas rutinas para ocultar columnas o lo que necesite... y listo. Ya tengo ese Frame para usar cada vez que necesito un grid en el proyecto.

Ahorra mucho código y tiempo, lo aconsejo.

dec, enhorabuena por el peaso artículo .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Frames Caro Varios 4 17-06-2005 16:55:01
Varios forms, frames y un Data Module gluglu Varios 1 07-04-2005 19:28:51
Uso de Frames jdangosto OOP 7 20-01-2005 00:15:03
Frames pepelu1975 OOP 2 21-05-2004 17:32:01
Frames pepelu1975 Varios 2 17-02-2004 18:00:30


La franja horaria es GMT +2. Ahora son las 13:16:15.


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