Delphi - memo

 
Vista:

memo

Publicado por erick (11 intervenciones) el 27/05/2005 01:05:45
Necesito que me ayuden a resolver un problema estoy haciendo un editor en el que pueda manejar varios documentos, por medio de pestañas, para eso utilizo el PageControl con sus respectivos TabSheet que contendran sus propios Memos. Todo esto lo hago en tiempo de ejecucion.

Type
TForm1 = class(TForm)
protected
PageControl: TPageControl;
TabSheet: TTabSheet;
Memo: TMemo;
procedure MemoChange(Sender: TObject);
procedure TabSheetChange(Sender: TObject);
end;
var
Lista: TComponentList;

El codigo para crear el PageControl es:

Lista:= TcomponentList.Create; // Lo utilizo para llevar un control de las Pestañas
PageControl:= TPageControl.Create(Self);
PageControl.Parent:= Form1;

este se crea una sola vez al crear el formulario.

El codigo para crear el TabSheet con su memos es:

TabSheet:= TTabSheet.Create(PageControl);
TabSheet.PageControl:= PageControl;
Memo:= TMemo.Create(TabSheet); y ya probe usando - Memo:= TMemo.Create(Self);-
Memo.Parent:= TabSheet;
lista.Add(TabSheet);
PageControl.OnChange:= TabSheetChange; // TabSheetChange es un procedimiento que me permite cambiar de ventana

Procedure TForm1.TabSheetChange(Sender: TObject);
begin
Memo.Setfocus; // Se detiene la ejecucion cuando pasa por aqui
end;

esto se hace cada vez que presiono el boton nuevo o abrir

todo parece y se ve perfecto puedo cambiar de pestaña ver y escribir sobre su respectivo memo, el problema esta cuando quiero cambiar de una pestaña a otra manda el siguiete error - no se puede poner el foco en una pestaña desabilitada o invisible-, al parecer el foco queda en el memo de la ultima pestaña que hice ya que si cambio a la ultima pestana no me muestra el error.

Mi pregunta que me ha llevado a tener varias noches de desvelo y es la siguiente, ¿ hay alguna propiedad para hacer referencia al memo de la pestaña que tengo seleccionada ?, ¿ Esta correcto el codigo de construccion o de las variables ? o que demonios tengo que hacer ya no puedo solo necesito ayuda.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:memo

Publicado por beosman (163 intervenciones) el 27/05/2005 10:16:23
En principio todo parece que esté bien. Para lograr hacer lo del foco puedes usar la propiedad ActivePage del PageControl para hacer referencia al la página activa y una vez allí usar la función FindComponent para buscar el Memo y usar la función SetFocus. Creo que más o menos es así, pero lo mejor es que pruebes.

Un saludo.

Diego :: beosman
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:memo

Publicado por erick (1 intervención) el 28/05/2005 07:09:56
Nada ya intente y sigue mandando el mismo error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Alguien que me eche la mano

Publicado por erick (11 intervenciones) el 29/05/2005 22:48:44
Alguien que me eche la mano con este problema que tengo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:memo

Publicado por Diego Romero (636 intervenciones) el 30/05/2005 01:39:15
Me disculpas pero tu código se ve bastante raro para lo que luego explicas lo que quieres hacer. Yo interpreté esto, si no es así me corriges por favor.
Quieres crear un TabSheet que contenga un TMemo dinámicamente, es decir, cada vez que eliges nuevo o abrir se deben crear estos dos componentes por separado del resto.
Pero tu código tiene UN solo Memo y UN solo TabSheet, cada vez que ejecutas las instrucciones de creación pierdes toda referencia a los anteriores ¡debes estar teniendo un monumental memory leak!.
Mi consejo es el siguiente, usa el objeto TList que es capaz de almacenar punteros a objetos, cada vez que crees un TabSheet con su correspondiende TMemo agrega un puntero que apunte a ese TabSheet, puedes usar la propiedad Tag para identificar cada TabSheet creado.
Es bastante complicado de implementar la primera vez pero cuando le tomas la técnica ya es más facil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar