如果是这样的话!程序怎么知道他要关闭哪一个呢? 除非你得在你的菜单中罗列出所有的TabSheet,让用户选一个 之后,就是: If Assgin(TabSheet)<>nil then TabSheet.Free;大概就是这样,有什么问题再提!
可以把处理过程放在MouseDown事件里
用 Windows API 可以很容易办到。我是使用C++Builder的,Delphi不熟, 如果下面有语法方面的错误,你就自己改正,重要的是方法。 procedure TForm1.PageControl1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var Index: Integer; hti: TC_HITTESTINFO; begin if Button = mbRight then begin hti.flags := TCHT_ONITEM; hti.pt.x := X; hti.pt.y := Y; Index := TabCtrl_HitTest(PageControl1.Handle, hti); //这儿 Index 就是Tab的索引号,加入你的其它代码 end; end;
除非你得在你的菜单中罗列出所有的TabSheet,让用户选一个
之后,就是:
If Assgin(TabSheet)<>nil then TabSheet.Free;大概就是这样,有什么问题再提!
如果下面有语法方面的错误,你就自己改正,重要的是方法。
procedure TForm1.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Index: Integer;
hti: TC_HITTESTINFO;
begin
if Button = mbRight then
begin
hti.flags := TCHT_ONITEM;
hti.pt.x := X; hti.pt.y := Y;
Index := TabCtrl_HitTest(PageControl1.Handle, hti);
//这儿 Index 就是Tab的索引号,加入你的其它代码
end;
end;