PDA

Ver la Versión Completa : Formas a las cuales se asigna el parent un TabSheet


ASAPLTDA
21-10-2014, 06:15:30
Buenas Tardes Foristas
Estoy creando formas a las cuales le asigno como parent un Tabsheet.
Pero los botones de Cerrar , maximizar quedan inhabilitados, eso es lo normal o que procimiento debo ejecutar para que l forma se puedan cerrar usando los boton X(cerrar) de la forma
Gracias por sus comentarios
Adjunto Codigo

procedure CREAR_FORMA_X_NOMBRE(P_FormName, P_TabSheetName:String);
var
fc: TFormClass;
f : TForm;
W_ModalResult :Integer;
W_S :string;
begin
fc := TFormClass(FindClass(P_FormName));
f := fc.Create(Application);
W_FormName := P_TabSheetName; // f.Name ;
F.Name := P_TabSheetName;
F.Caption := P_FormName;
F.Hint := P_FormName;
f.FormStyle := fsNormal;
f.action := FormClose;
f.BorderStyle := bsSizeable ; //bsnone
F.WindowState := wsMaximized;
F.Parent := TabSheet;
f.Show;
END;

ElKurgan
21-10-2014, 07:58:43
¿Y no te has planteado realizar lo mismo con "Frames" en lugar de "Forms".

Aquí (http://edn.embarcadero.com/article/32047) hay un artículo de ejemplo de como implementar algo parecido

Saludos

ecfisa
21-10-2014, 08:41:18
Hola ASAPLTDA.

Por otro lado, si deseas continuar usando forms como en tu código, creo que sería mejor hacer algo como:

...
procedure TForm1.FormTabSheetClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage(Format('%s se cerrará', [TForm(Sender).Name]));
Action:= caFree;
end;

procedure CreateFormInTabSheet(const FormName: string; FormClose: TCloseEvent;
TabSheet: TTabSheet);
begin
with TForm.Create(TabSheet) do
begin
Name:= FormName;
Caption:= Name;
Hint:= Name;
FormStyle:= fsNormal;
BorderStyle:= bsSizeable;
WindowState:= wsMaximized;
OnClose:= FormClose;
Parent:= TabSheet;
Show;
end;
end;

// Ej., crear un form en cada TabSheet
procedure TForm1.btnCreateClick(Sender: TObject);
var
i: Integer;
begin
with PageControl1 do
for i:= 0 to PageCount-1 do
CreateFormInTabSheet(Format('Form_TabSheet%d',[i+1]),
FormTabSheetClose, Pages[i]);
end;


Saludos :)