Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2004
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Crear un RichEdit sobre un TABBEDNOTEBOOK en RUNTIME

HOla!

necesito crear un TMEMO sobre un TAB de un TABBEDNOTEBOOK en runtime, lo que no se como hacerlo.

La idea es que tengo un boton "Nueva Pagina", y quiero que cuando este sea presionado se cree una nueba pestanna del TABBEDNOTEBOOK, y junto con ella salga ya mi TMEMO, ocupando toda el area del TABBEDNOTEBOOK.

Probe con esto pero no me sale nada.. no da error, pero no se ve el componente:

var
boton : TButton;
PagAct : Integer;
begin
PagAct := AbbedNoteBookEditor.Pages.Count - 1;
//selecciono la pag actual para sobre ella pegar mi boton.
AbbedNoteBookEditor.ActivePage :=
AbbedNoteBookEditor.Pages.Names[PagAct];
Boton := TButton.Create(Self);
Boton.Parent := Self;
Boton.Left := 100;
Boton.Top := 100;
Boton.Caption:='Pulsame';
Boton.Name := 'Boton';
end;

Agradezco cualquier sugerencia..!!!!

GRACIAS!!
Responder Con Cita
  #2  
Antiguo 22-10-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Solo falto poner el Boton.Visible:=True. Todos los controles creados en runtime estan invisibles para evitar que se vea mientras se configuran (una muy buena idea, por supuesto)
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 22-10-2004
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
Cita:
Empezado por mamcx
Solo falto poner el Boton.Visible:=True. Todos los controles creados en runtime estan invisibles para evitar que se vea mientras se configuran (una muy buena idea, por supuesto)
Esto de hecho no es así. Prueba con

Código Delphi [-]
with TButton.Create(Self) do
begin
  Left := 8;
  Top := 8;
  Caption := 'Hola';
  Parent := Self;
end;

y verás que el botón aparece sin más. El control se hace visible dentro del proceso de asignación de Parent.

// Saludos
Responder Con Cita
  #4  
Antiguo 22-10-2004
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
Vamos a ver. Este hilo me daba flojera por el tipo de control usado. ¡Un TabbedNoteBook! Pero si eso usaba mi abuelito

Como no estés programando para Delphi 1.0 no encuentro razón a la vista para usar este tipo de controles obsoletos en lugar de un PageControl.

Pero bueno, en gustos se rompen géneros.

Para empezar no entiendo bien qué es lo que te propones. Hablas de un botón mediante el cual insertar nuevas páginas pero en el código que escribes lo que insertas es el botón. Por ningún lado aparece la nueva página ni mucho menos el Memo.

Por otro lado, suponiendo que deseas insertar el botón en una página del TabbedNoteBook entonces no puedes poner

Boton.Parent := Self;

ya que el padre del botón debe ser la página y no el formulario.

El problema es que hasta donde he revisado no encuentro que el TabbedNoteBook publique la lista de páginas- la propiedad Pages se refiere a los nombres de las páginas pero no a las páginas en sí.

Sin embargo la propiedad Controls del TabbedNoteBook contiene la lista de controles cuyo padre es el TabbedNoteBook y, al parecer, los únicos controles posibles son justamente las páginas (TTabPage) de manera que puedes asignar el Parent del botón así:

Boton.Parent := TWinControl(AbbedNoteBookEditor.Controls[Indice]);

// Saludos
Responder Con Cita
  #5  
Antiguo 23-10-2004
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Responder a Roman

Tienes toda la razon. disculpame. En realidad lo que quiero hacer es una especie de editor de codigo, pero lo que necesito es que por ejemplo, cuando quiera abrir una nueva ventana de edicion para poner algo nuevo, que me salga algun control que me permita insertarle un RichEdit ecima para poder trabajar, y de paso que pueda ir a las demas ventanas con codigo abierto. Seria algo asi como la ventana de edicion del delphi, en la que se tienen varias UNITS y si abres una nueva se crea un Tab para el nuevo codigo, dejando las demas detras y pudiendo acceder por ellas. Esa es la idea de manera general. Seleccione el TAbbedNoteBook por que para hacer esto segui un ejemplo de codigo donde se lograba esto con este componente y lo que hice fue seguir la manera de hacer las cosas para ver como funcionaba, no tenia idea de que fuera tan viejo!!! Pero bueno, el PageControl creo que funcina igual y si es asi ya mismo lo cambio. Y el codigo del boton que puse encima es por que cuando vi que el nuevo AbbedNotebook no me aparecia por ningun lugar probe con un boton, probe crearlo en runtime para ver en que me estaba equivocando con el AbbedNoteBook... lo que cuando inserte el codigo en el Foro no lo cambie y lo deje con el del boton.
Ahora, aclarada todas las dudas.. como puedo crear ese efecto de las nuevas ventanas igual que el del Delphi usando el PageControl? Y una vez creado el nuevo PageControl como puedo ponerle encima en RunTime un RichEdit para permitir insertar textos en el???


GRACIASSSS!!!!
Responder Con Cita
  #6  
Antiguo 23-10-2004
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
Ok, ahora está más claro.

El algoritmo ya lo tienes:

1. Crear un TabSheet (una página del PageControl)
2. Crear un RichEdit e insertarlo en el TabSheet
3. Agregar el Tabsheet al PageControl

Te quedaría algo así:

Código Delphi [-]
var
  TabSheet: TTabSheet;
  RichEdit: TRichEdit;

begin
  TabSheet := TTabSheet.Create(Self);
  TabSheet.Caption := Format('TabSheet%d', [PageControl.PageCount + 1]);

  RichEdit := TRichEdit.Create(Self);
  RichEdit.Align := alClient;
  RichEdit.Parent := TabSheet;

  TabSheet.PageControl := PageControl;
  PageControl.ActivePage := TabSheet;
end;

Nota que la inserción del TabSheet en el PageControl es lo último que haces justamente por lo que comenta mamcx- al dejarla al final te aseguras que será visible al usuario sólo hasta que todo esté acomodado.

En el Caption del TabSheet simplemete estoy asignando un número secuencial pero puedes adaptarlo a que sea, por ejemplo, 'Documento1', 'Documento2', 'Documento3', etc. También, si lo que deseas es abrir un archivo ya existente en lugar de crear uno nuevo entonces puedes usar RichEdit.Lines.LoadFromFile('archivo.rtf') para que se cree la nueva instancia del editor ya con el archivo cargado.

// Saludos
Responder Con Cita
  #7  
Antiguo 23-10-2004
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Responder a Roman

Gracias Roman!!! Uds son lo maximo.. al igual que este foro!!
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


La franja horaria es GMT +2. Ahora son las 21:12:09.


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