Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Heredar un frame. (https://www.clubdelphi.com/foros/showthread.php?t=56564)

adebonis 20-05-2008 22:14:00

Heredar un frame.
 
Hola a todos.

He leído varios hilos sobre el tema de reutilizar un frame en un mismo proyecto pero no he sabido interpresta lo dicho. Me falta un poco de código que me ejemplifique el tema.

Tengo un form con un TPageControl vacio. También tengo un TFrame con toda la gestión de un Asunto (unidad de trabajo del usurario).

A medida que el usuario va seleccionando Asuntos creo un TTabContrrol y le asigno el TFrame. Todo correcto para un solo Asunto.

¿Que debo hacer para asignar el mismo TFrame para cada TTabControl que vaya creando? La aplicación debe permitir la gestión de varios Asuntos a la vez.

Utilizo Delphi 2007.

Gracias.

Adolfo Bonis Mora
Barcelona

Neftali [Germán.Estévez] 21-05-2008 09:40:04

Repite el mismo proceso para el resto de tabsheets.
¿Qué propblema tienes? ¿Algun error?

Crea un tabsheet nuevo, Crea un Frame nuevo y asigna el parent al Tabsheet.

¿Es eso o tal vez te he entendido mal?

Si colocaras algo de código que estás usando tal vez se vería más claro.

adebonis 21-05-2008 17:09:07

Hola.

Casi.

Hago esto: Creo un tabsheet nuevo, Ya tengo creado el Frame y asigno el parent al Tabsheet.

Pero al crear un nuevo tabsheet le tengo que asignar el mismo Frame, y me da el mensaje de error de que ya existe un frame con este nombre.

Utilizo el siguiente procedimiento para crearlos:

Código Delphi [-]
procedure CreaAsunto(QueAsunto: Integer; Pagina: String; Finalizado: Boolean);
var
  Aux: TRzTabSheet;
  Ventan: TFrame;
  i: Integer;
  Finali: String;
begin
  for i := fPral.pagPrincipal.PageCount - 1 downto 0 do begin
    if fPral.pagPrincipal.Pages[i].Tag = QueAsunto then begin
      fPral.pagPrincipal.ActivePageIndex := i;
      Exit;
    end;
  end;
  if Finalizado then Finali := '9' else Finali := '0';
  Aux := TRzTabSheet.Create(Nil);
  Aux.Name := 'tabAsunto'+ IntToStr(QueAsunto);
  Aux.PageControl := fPral.pagPrincipal;
  Aux.Caption := Pagina+ Finali+ NombreAsunto(QueAsunto);
  Aux.Tag := QueAsunto;
  fPral.pagPrincipal.ActivePageIndex := fPral.pagPrincipal.PageCount- 1;
  Ventan :=  TfrAsunto.Create(Application);
  Ventan.Parent := Aux;
end;

Gracias.

Adolfo Bonis Mora
Barcelona

Neftali [Germán.Estévez] 21-05-2008 17:51:14

Al igual que haces con el TabSheet, que le asignas un Name diferente usando esto:
Código Delphi [-]
Aux.Name := 'tabAsunto'+ IntToStr(QueAsunto);

Haz algo similar con el Frame al crearlo en su propiedad Name (que también la tiene). ;)

adebonis 21-05-2008 20:10:57

Hola.

Tienes razón. ¿Como no se me había ocurrido?

Funciona perfectamente.

Gracias.


Adolfo Bonis Mora
Barcelona


La franja horaria es GMT +2. Ahora son las 04:19:39.

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