[gelöst] TPageControl: PopupMenu nur für aktiven Karteireiter?

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 169
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

[gelöst] TPageControl: PopupMenu nur für aktiven Karteireiter?

Beitrag von Jorg3000 »

Hi!
Ich habe ein PageControl mit einem PopupMenu verbunden.
Ich möchte, dass das PopupMenu nur erscheint, wenn man mit rechter Maustaste auf den aktiven Tab/Karteireiter klickt.
Ich nehme an, dass ich dazu die X/Y-Position und Höhe/Breite des aktiven Reiters herausfinden muss und es mit der Mauszeigerposition abgleichen muss, um dann bei OnPopup darauf reagieren zu können.
Oder ich rufe mittels OnMouseDown das PopupMenu bedarfsweise manuell auf.
Wie finde ich die Koordinaten (Rect?) des aktiven Reiters heraus?
Grüße, Jörg
Zuletzt geändert von Jorg3000 am Fr 2. Sep 2022, 10:00, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: TPageControl: PopupMenu nur für aktiven Karteireiter?

Beitrag von wp_xyz »

TabRect(Index)

Code: Alles auswählen

type
  TMyPageControl = class(TPageControl);

procedure TForm1.PageControl1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  tabIdx: Integer;
  R: TRect;
begin
  tabIdx := TMyPageControl(PageControl1).IndexOfPageAt(X, Y);
  if tabIdx > -1 then
  begin
    R := PageControl1.TabRect(tabidx);
    Caption := Format('L %d, T %d, R %d, B%d', [R.Left, R.Top, R.Right, R.Bottom]);
  end else
    Caption := '';
end; 

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 169
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: TPageControl: PopupMenu nur für aktiven Karteireiter?

Beitrag von Jorg3000 »

Top!
So einfach. Gut dass ich gefragt habe! :)
Um 23 Uhr gefragt, um 2 Uhr beantwortet. Ich lasse jetzt immer meine Probleme im Schlaf lösen. :D
Herzlichen Dank!

Antworten