memo
Necesito que ayuden a resolver un problema estoy haciendo 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.
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.
si. No hace falta la "Lista" paral llevar el control de las pestañas.
la pestaña activa es PageControl.ActivePage
te falto la siguiente instruccion para relacionar el memo con el TabSheet despues de crear el memo:
TabSheet.InsertControl(memo);
si queres acceder al memo seria:
PageControl.ActivePage.Controls[0] // porque es el primer objeto del TabSheet.
saludos.
Sebastian ([email protected])
la pestaña activa es PageControl.ActivePage
te falto la siguiente instruccion para relacionar el memo con el TabSheet despues de crear el memo:
TabSheet.InsertControl(memo);
si queres acceder al memo seria:
PageControl.ActivePage.Controls[0] // porque es el primer objeto del TabSheet.
saludos.
Sebastian ([email protected])