TabSet - как повесить контекстное меню на вкладку?

Игорь Ч
Дата: 05.05.2011 09:42:01
Необходимо открыть контекстное меню, выполняющее действия для вкладки на которую наведен курсор. Чего-то стандартного для TabSet я не нашел. Подозреваю, что как-то нужно вычислять координаты вкладки, но не могу сообразить как?
SQLap
Дата: 05.05.2011 09:59:23
Игорь Ч
Необходимо открыть контекстное меню, выполняющее действия для вкладки на которую наведен курсор.


у TPageControl-ового TTabSheetа есть проперть PopupMenu
DimaBr
Дата: 05.05.2011 09:59:46
Странно, у TabSet есть свойство PopupMenu
Игорь Ч
Дата: 05.05.2011 12:23:44
У TabSet-а контекстное меню есть, но только на весь компонент. Индекс вкладки, на которой было вызвано контекстное меню нигде не фиксируется.

Сделал из TabControl-а. Пришлось только сузить панель, чтобы были видны только вкладки. Там функция есть - IndexOfTabAt(... X, Y).

Спасибо всем.
DimaBr
Дата: 05.05.2011 12:29:42
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var i: integer;
    P: TPoint;
begin
  P := TabControl1.ScreenToClient(PopupMenu1.PopupPoint);
  for i := 0 to TabControl1.Tabs.count-1 do
    if PtInRect(TabControl1.TabRect(i),P) then begin
      caption := TabControl1.Tabs[i];
    end;
end;
DimaBr
Дата: 05.05.2011 12:36:23
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var i: integer;
    P: TPoint;
begin
  P := PageControl1.ScreenToClient(PopupMenu1.PopupPoint);
  for i := 0 to PageControl1.PageCount-1 do
    if PtInRect(PageControl1.TabRect(i),P) then begin
      caption := PageControl1.Pages[i].Caption;
    end;
end;
Игорь Ч
Дата: 06.05.2011 07:51:29
Спасибо. чет я не подумал про TabRect.