Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Rechtsklick auf Tab aktiviert Tab (https://www.delphipraxis.net/4853-rechtsklick-auf-tab-aktiviert-tab.html)

CalganX 14. Mai 2003 14:19


Rechtsklick auf Tab aktiviert Tab
 
Hi,
schlagt mich nicht, wenn wir das schon mal hatten: ich hab gesucht, aber nichts gefunden...

Also: wenn ich einem TabControl (PageControl in meinem Fall) ein PopUp-Menü zuweise, dann wird dieses ja immer geöffnet, wenn ich rechts auf einen Tab klicke (in der Registerliste). Wie kann ich es nun so entwickeln, dass, wenn ich nun rechts draufklicke, der rechts-geklickte Tab aktiviert wird?

Chris

toms 26. Jan 2005 01:36

Re: Rechtsklick auf Tab aktiviert Tab
 
Hi,

Hast du eine Lösung gefunden? Sonst kann ich dir morgen eine geben...

SebE 26. Jan 2005 04:49

Re: Rechtsklick auf Tab aktiviert Tab
 
Hi, ich hatte ma das hier gefunden

Delphi-Quellcode:
function TfmMain.InRect(X, Y: Integer; R: TRect): Boolean;
begin
Result:=(X>=R.Left) and (X<=R.Right) and (Y>=R.Top) and (Y<=R.Bottom)
end;
Delphi-Quellcode:
function TfmMain.GetTabSheet(PageControl: TPageControl; Position: TPoint): TTabSheet;
var
  iCnt: Integer;
begin
Result:=nil;
iCnt:=0;

  while (iCnt<=PageControl.PageCount-1) and not (InRect(Position.X,Position.Y,PageControl.TabRect(iCnt))) do
  Inc(iCnt);

if iCnt<PageControl.PageCount
then Result:=PageControl.Pages[iCnt]
end;
Delphi-Quellcode:
procedure TfmMain.PageControlContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
var
  TabSheet : TTabSheet;
begin
TabSheet:=GetTabSheet(PageControl,MousePos);

if TabSheet<>nil
then PageControl.ActivePage:=TabSheet; //Nur<>nil wenn im TabRect geklickt wurde !!!
end;
Ich hoffe, dass es dir hilft.

Bis dennsen

CodeX 2. Dez 2005 14:56

Re: Rechtsklick auf Tab aktiviert Tab
 
habe im moment das gleiche problem wie der thread-starter.
die lösung von SebE empfinde ich doch als zu arg getrickst.

geht das nicht irgendwie "richtig"? es gibt doch sogar einen grafischen mouseover effekt für die tabs.
wenn man noch abfragen könnte, zu welchem tab dieses mouseover gehört, wäre das anwählen von diesem ja kein problem mehr.

RavenIV 2. Dez 2005 15:14

Re: Rechtsklick auf Tab aktiviert Tab
 
es gibt:
Delphi-Quellcode:
procedure TFoFileTrans.ReAusgabeMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
und dazu gibt es (OH):
Zitat:

Die Methode IndexOfTabAt gibt den Index des Registers an dem angegebenen Punkt an.

Delphi-Syntax:

function IndexOfTabAt(X, Y: Integer): Integer;

C++ Syntax:

int __fastcall IndexOfTabAt(int X, int Y);

Beschreibung

Mit IndexOfTabAt können Sie feststellen, welches Register sich an dem durch X und Y angegebenen Punkt befindet. Wenn sich der Punkt mit der X-Koordiante X und der Y-Koordinate Y auf einem Register befindet, gibt IndexOfTabAt den Null-Offset-Index des Registers in der Eigenschaft Tabs (TTabControl) oder in der Eigenschaft Pages (TPageControl) zurück. Wenn sich der durch X und Y definiert Punkt nicht auf einem Register befindet, gibt IndexOfTabAt –1 zurück.
damit kann man dann doch herausfinden, auf welches Tab geklickt wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz