Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TabSheet unter der Maus (https://www.delphipraxis.net/36889-tabsheet-unter-der-maus.html)

SebE 27. Dez 2004 19:10


TabSheet unter der Maus
 
Wie finde ich raus, auf welches TabSheet ich in einem PageControl geklickt habe?
Ich will ein PopUp einbauen, indem z.B. steht: "Tab schließen".
Nun wird das aktuelle Tab geschlossen, welches aber nicht das ist, was unter der Maus sitzt.

Oder geht das, dass wenn ich mit der rechten Maustaste auf die Tabs klicke, dass dann das darunterliegende Tab als Aktuelles aufgerufen wird?

Kann jmd helfen?

-> Danke

Gentleman 27. Dez 2004 22:09

Re: TabSheet unter der Maus
 
hi!

du kannst das mit TabIndex machen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:= IntToStr(PageControl1.TabIndex);
end;
so kannst du in Edit1 ausgeben welche Tabnummer (beginnend bei 0) gerade ausgewählt ist.

um beim auswählen eines TabSheets ein anderes anzuzeigen, könntest du folgendes verwenden:
Delphi-Quellcode:
procedure TForm1.PageControl1Change(Sender: TObject);
begin
  if PageControl1.TabIndex= 0 then
    PageControl1.TabIndex:= 1;
end;
dann wird, wenn du das erste TabSheet auswählst, das zweite angezeigt.

ich hoffe ich konnte dir damit ein bisschen weiterhelfen. :zwinker:

SebE 27. Dez 2004 22:13

Re: TabSheet unter der Maus
 
Em, naja.

Ich wollte eigentlich wissn, wie ich raus bekomme welcher TabSheetIndex unter der Aktuellen MausPosition ist.
Da sich bei Rechtsklick der Index nicht ändert. :(

Gentleman 27. Dez 2004 23:02

Re: TabSheet unter der Maus
 
ach so meist du das. :stupid:

hm...da fällt mir spontan nur ein, dass man da vielleicht ein so etwas wie ein Raster verwenden kann, das ist nicht gerade die besste Lösung, aber na ja.
das würde ich dann in etwa so machen:
Delphi-Quellcode:
procedure TForm1.PageControl1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
  if X> 70 then
    begin
      PageControl1.TabIndex:= 1;
    end
  else
    begin
      PageControl1.TabIndex:= 0;
    end;
das musst du dann für deine zwecke umschreiben. ich hab jetzt angenommen, dass das TabSheet (wo man drauf klickt) 70 breit ist und der PageControl zwei sheets Sheets hat.

Jens Schumann 28. Dez 2004 08:02

Re: TabSheet unter der Maus
 
Hallo,
hier findest Du die Lösung für Dein Problem

SebE 28. Dez 2004 10:05

Re: TabSheet unter der Maus
 
Erstma en fettes Dankeschön an alle.
Hab's so gemacht:

Code:
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;
Genau so wollt ich es haben - Danke Jens Schumann


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