PDA

Ver la Versión Completa : TcxTabSheet y cerrar


LordRF
23-03-2007, 21:21:36
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

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


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:


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 :)

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...