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 Herausfinden auf welchen Tab geklickt wurde ... (https://www.delphipraxis.net/5674-herausfinden-auf-welchen-tab-geklickt-wurde.html)

cYaONE 15. Jun 2003 15:23


Herausfinden auf welchen Tab geklickt wurde ...
 
Servus,

ich habe ein PageControl, was ein (Kontext)Menü aufpoppen lässt, wenn man auf einem Tab des PageControls (mit der rechten Maustaste) klickt - wie kann ich nun herausfinden, auf welches Tab geklickt wurde?

Danke schonmal! :)

Luckie 15. Jun 2003 15:42

Ein Blick in die Hilfe hätte es auch getan:
Delphi-Quellcode:
procedure TForm1.PageControl1Change(Sender: TObject);
begin
  ShowMessage(IntToStr(PageControl1.ActivePageIndex));
end;

r_kerber 15. Jun 2003 15:46

ganz so einfach ist das wohl nicht. Er will feststellen, wohin er mit der rechten Maustaste geklickt hat! Das geht wohl nur unter Auswertung der Cursor-Position (X, Y) im OnMouseDown-Ereignis.

Luckie 15. Jun 2003 15:49

Hm, ich sollte wohl auch den Text des Postings lesen und nicht nur das Thema des Topics. Sorry. :oops:

r_kerber 15. Jun 2003 15:51

An einer richtigen Lösung wäre ich auch interessiert. Was nützt es schon, wenn man die Cursorposition kennt aber nicht weiß, bei welchen Koordinaten die einzelnen Tabs eigentlich liegen.

cYaONE 15. Jun 2003 16:16

Richtig, r_kerber, das ist das Problem ...

Jens Schumann 15. Jun 2003 18:07

Hallo,
wie wäre es denn damit ?
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ComCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    PopupMenu1: TPopupMenu;
    pmTabSheet: TMenuItem;
    procedure PageControl1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
  private
    { Private-Deklarationen }
    function InRect(X,Y : Integer; R : TRect): Boolean;
    function GetTabSheet(PageControl : TPageControl; Position : TPoint) : TTabSheet;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.GetTabSheet(PageControl: TPageControl; Position: TPoint): TTabSheet;
var
  iCnt : Integer;
begin
  Result:=Nil;
  For iCnt:=0 to PageControl.PageCount-1 do
    begin
    If InRect(Position.X,Position.Y,PageControl.TabRect(iCnt)) then
      begin
      Result:=PageControl.Pages[iCnt];
      Exit;
      end;
    end;
end;

function TForm1.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;

procedure TForm1.PageControl1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
var
  TabSheet : TTabSheet;
begin
  TabSheet:=GetTabSheet(PageControl1,MousePos);
  If TabSheet<>Nil then // Nur <> Nil wenn im TabRect geklickt wurde !!!
    pmTabSheet.Caption:=TabSheet.Caption
    else
      pmTabSheet.Caption:=PageControl1.ActivePage.Caption

end;

end.

r_kerber 15. Jun 2003 18:11

TabRect: Was es nicht alles für Methoden gibt. :?

cYaONE 15. Jun 2003 20:22

Vielen Dank, deine Lösung funktioniert super bei mir!!!! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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