AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Herausfinden auf welchen Tab geklickt wurde ...
Thema durchsuchen
Ansicht
Themen-Optionen

Herausfinden auf welchen Tab geklickt wurde ...

Ein Thema von cYaONE · begonnen am 15. Jun 2003 · letzter Beitrag vom 15. Jun 2003
Antwort Antwort
cYaONE

Registriert seit: 18. Mai 2003
Ort: Sand am Main
192 Beiträge
 
Delphi 7 Personal
 
#1

Herausfinden auf welchen Tab geklickt wurde ...

  Alt 15. Jun 2003, 15:23
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!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3
  Alt 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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 15. Jun 2003, 15:49
Hm, ich sollte wohl auch den Text des Postings lesen und nicht nur das Thema des Topics. Sorry.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5
  Alt 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.
  Mit Zitat antworten Zitat
cYaONE

Registriert seit: 18. Mai 2003
Ort: Sand am Main
192 Beiträge
 
Delphi 7 Personal
 
#6
  Alt 15. Jun 2003, 16:16
Richtig, r_kerber, das ist das Problem ...
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7
  Alt 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.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8
  Alt 15. Jun 2003, 18:11
TabRect: Was es nicht alles für Methoden gibt.
  Mit Zitat antworten Zitat
cYaONE

Registriert seit: 18. Mai 2003
Ort: Sand am Main
192 Beiträge
 
Delphi 7 Personal
 
#9
  Alt 15. Jun 2003, 20:22
Vielen Dank, deine Lösung funktioniert super bei mir!!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 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