Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-02-2008
Avatar de NeoAnderson
NeoAnderson NeoAnderson is offline
Miembro
 
Registrado: feb 2008
Posts: 17
Poder: 0
NeoAnderson Va por buen camino
Exclamation Problema con TPageControl Dinamico

Hola a todos, soy nuevo en Club Delphi y me uni pk este es probablemente el sitio con mayor informacion y ayuda disponible, pero bueno, ire al grano.

Uso Delphi 7 y estoy haciendo un programa de edicion de imagenes en donde el objetivo es que se puedan abrir cualquier numero de imagenes al mismo tiempo y su manipulacion sea independiente una de otra.

Tengo un Form "TFMain" para la interfaz principal, y en este Form tengo Un PageControl1 (donde se creará un tabSheet por cada imagen que abra).
Aparte tengo un Form "TFImagen" que contiene un TImage (para alojar a la imagen) y las funciones que se aplicaran a esa imagen.

En "TFMain" tengo un boton abrir que lo que hace es crear un nuevo tabSheet en PageControl1 y en este tabsheet se aloja un nuevo Form del tipo TFImagen. Esto lo hago con el siguiente codigo que no recuerdo donde encontre, pero funciona bien.

Código Delphi [-]
   
   //Crear un nuevo tab sheet
   tabSheet := TTabSheet.Create(PageControl1) ;
   tabSheet.PageControl := PageControl1;

   //crear un nuevo form  
   aForm := TFImagen.Create(tabSheet) ;
   aForm.Parent := tabSheet;
   aForm.Align := alClient;
   aForm.BorderStyle := bsNone;
   aForm.Visible := true;
   tabSheet.Caption := aForm.Name;

   //activate the sheet
   PageControl1.ActivePage := tabSheet;

Lo anterior lo tiene un boton en TFMain, pero digamos que tengo otro boton con el cual pretendo ejecutar la funcion "x" que está en "TFImagen", y he ahi el problema, cómo puedo acceder a esta funcion si el tabSheet fue creado dinamicamente???

He probado PageControl1.ActiveSheet.etc, pero no encuentro nada que me permita acceder a la funcion que está en otro form que fue creado dinamicamente.
Espero haberme explicado claro y no confundirlos mucho. y ojalá me puedan dar una ayuda, que me empieza a desesperar el asunto, de antemano gracias.

Última edición por jachguate fecha: 05-02-2008 a las 07:29:18. Razón: Añadir etiqueta delphi
Responder Con Cita
  #2  
Antiguo 05-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Algo sencillo e inmediato pudiera ser:

Código Delphi [-]
(PageControl1.ActivePage.Controls[0] as TFImagen).funcion(...)

suponiendo que el formulario es el primer control que insertas en la ficha.

Algo más elaborado, pero más prolijo, podría ser crear un derivado de TTabSheet que se encargue de crear el formulario y exponerlo como una propiedad pública:

Código Delphi [-]
type
  TMyTabSheet = class(TTabSheet)
  private
    FForm: TFImagen;

  public
    property Form: TFImagen read FForm;
    constructor Create(AOwner: TComponent); override;
  end;

{ TMyTabSheet }

constructor TMyTabSheet.Create(AOwner: TComponent);
begin
  inherited;

  FForm := TFImagen.Create(Self) ;
  FForm.Parent := Self;
  FForm.Align := alClient;
  FForm.BorderStyle := bsNone;
  Caption := FForm.Name;
end;

Crearía las fichas así:

Código Delphi [-]
var
  tabSheet: TMyTabSheet;

begin
  //Crear un nuevo tab sheet
  tabSheet := TMyTabSheet.Create(PageControl1) ;
  tabSheet.PageControl := PageControl1;

  //Mostrar el nuevo form
  tabSheet.Form.Visible := true;

  //activate the sheet
  PageControl1.ActivePage := tabSheet;
end;

Ahora puedes referirte al formulario y sus métodos y propiedades usando la propiedad Form del TabSheet, por ejemplo:

Código Delphi [-]
(PageControl1.ActivePage as TMyTabSheet).funcion(...)

Bye
Responder Con Cita
  #3  
Antiguo 05-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por NeoAnderson Ver Mensaje
Hola a todos, soy nuevo en Club Delphi
Hola. En primer lugar, bienvenod@ al club. Te recomiendo una lectura de la guia de estilo.

También que aprendas a usar la etiqueta delphi, misma que he añadido a tu mensaje original y que nos sirve para publicar trozos de código.

Disfruta de los foros!

Un saludo.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 05-02-2008
Avatar de NeoAnderson
NeoAnderson NeoAnderson is offline
Miembro
 
Registrado: feb 2008
Posts: 17
Poder: 0
NeoAnderson Va por buen camino
Talking Problema Solucionado!

Todo un mago keyboy, mil gracias!, ambas soluciones funcionan perfectamente, pero me quedo con la segunda por que se adapta mejor para usos futuros, unicamente quiero agregar que en lugar de ir
Código Delphi [-]
(PageControl1.ActivePage as TMyTabSheet).funcion(...)
debe ser:

Código Delphi [-]
(PageControl1.ActivePage as TMyTabSheet).Form.funcion(...)
de esta manera ya puedo acceder a todas las funciones y propiedades del formulario "TFImagen"
Gracias nuevamente!
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
Problema Creando un Form Dinamico Juanitol Varios 5 15-11-2007 13:54:28
Query dinamico en rave Report, no es problema de parametros sflexas Impresión 3 18-11-2006 16:50:51
TPageControl Neiro SQL 4 06-10-2006 22:25:57
Fondo en TPageControl fabianmk OOP 4 02-10-2006 13:23:46
TpageControl agora18 Varios 6 17-10-2003 01:04:43


La franja horaria es GMT +2. Ahora son las 09:57:05.


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