Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   TcxTabSheet y cerrar (https://www.clubdelphi.com/foros/showthread.php?t=41739)

LordRF 23-03-2007 21:21:36

TcxTabSheet y cerrar
 
Hola a todos,

tengo un pequenno problemilla, estoy experimentando para ensennar las forms en Tabsheet, creo el Tabsheet le meto un form hasta hay bien.

Bueno ahora quiero cerrar ese tabsheet, como lo hago para que primero me cierre la form antes de cerrar el tab?

espero que se entienda lo que quiero decir.

p.s utilizo el Pagecontroll de devexpress

Código Delphi [-]
procedure TForm1.Button6Click(Sender: TObject);
var
  MyTabSheet: TcxTabSheet;
  newFormClass: TFormClass;
  newForm:      TForm;
begin
  MyTabSheet := TcxTabSheet.Create(Form1);
  MyTabSheet.Parent := cxPageControl1;
  MytabSheet.PageControl := cxPageControl1;
  MytabSheet.Caption := 'Test';

  newFormClass := TForm2;
    if Assigned(newFormClass) then
    begin
      newForm := newFormClass.Create(self);
      newForm.BorderStyle := bsNone;
      newForm.Parent := cxTabSheet2;
      newForm.Align := alClient;
      newForm.Show;
    end;
end;

gracias y un saludo
Robert

maeyanes 23-03-2007 21:39:28

Puedes probar el evento OnCanClose de TcxPageControl

Código Delphi [-]
TcxPCCanCloseEvent = procedure(Sender: TObject; var ACanClose: Boolean) of object;

Este evento se dispara cada que haces click en el botón cerrar del TcxPageControl...

Entonces podrías tener algo como:

Código Delphi [-]
procedure Form1.cxPageControl1OnCanClose(Sender: TObject; var ACanClose: Boolean);
var
  ATabSheet: TcxTabSheet;
  I: Integer;

begin
  ATabSheet := cxPageControl1.ActivePage;
  for I := 1 to ATabSheet.ControlCount - 1 do
    if ATabSheet.Controls[i] is TForm then
    begin
      TForm(ATabSheet.Controls[i]).Free;
      ACanClose := True;
      Break
    end
end;

Espero te sirva...



Saludos...

LordRF 23-03-2007 22:26:16

Hola maeyanes,

gracias por tu util respuesta, funciona perfectamente, lo unico es que no se me dispara el CloseQuery de la forma que se esta cerrando, hay alguna forma de que se dispare?

gracias y un saludo.

LordRF 23-03-2007 22:54:42

Hola,

me parece que tengo la solucion :)

Código Delphi [-]
procedure TForm1.cxPageControl1CanClose(Sender: TObject;
  var ACanClose: Boolean);
  var
  ATabSheet: TcxTabSheet;
  I: Integer;

begin
  ATabSheet := cxPageControl1.ActivePage;
 for I := 0 to ATabSheet.ControlCount -1 do
    if ATabSheet.Controls[i] is TForm then
    begin
      TForm(ATabSheet.Controls[i]).close;
      ACanClose := True;
      Break
    end
end;

gracias y un saludo
Robert

maeyanes 23-03-2007 23:13:02

Así es... con el close haces que se dispare el OnCloseQuery de la forma en cuestión...


Saludos...


La franja horaria es GMT +2. Ahora son las 12:53:47.

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