AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklappen
Thema durchsuchen
Ansicht
Themen-Optionen

PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklappen

Ein Thema von Nalincah · begonnen am 18. Dez 2003 · letzter Beitrag vom 18. Dez 2003
Antwort Antwort
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklappen

  Alt 18. Dez 2003, 09:27
Ist es möglich bei einer PageControl und einem Tabsheet das PopupMenu so einzustellen das es nur beim Klick auf den Titel des aktuellen Tabsheets aufklappt? (Mit Optionen wie "Speichern" oder "Schließen" Es darf nicht angezeigt werden wenn man auf dem eigentlichen TabSheet ein rechtsklickt macht (z.B. wie in dem HTML-Editor Phase 5)
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklap

  Alt 18. Dez 2003, 09:44
Hi,

Das dürfte wie folgt gehen:

Delphi-Quellcode:
procedure TForm1.PageControl1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  TCM_GETITEMRECT = $130A;
var
  i: Integer;
  r: TRect;
  p: TPoint;
begin
  with (Sender as TPageControl) do
  begin
    for i := 0 to PageCount - 1 do
    begin
      Perform(TCM_GETITEMRECT, i, LPARAM(@r));
      if PtInRect(r, Point(X, Y)) then
      begin
        if i = ActivePage.PageIndex then
        begin
          p := ClientToScreen(Point(X, Y));
          PopupMenu1.Popup(p.X, p.Y);
          Exit;
        end;
      end;
    end;
  end;
end;
(PS : Vielleicht geht's auch einfacher??)
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#3

Re: PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklap

  Alt 18. Dez 2003, 10:11
Danke. Das Problem ist nur:

Ich benutze das bei dynamisch erstellten Kompos und da hab ich mir das so gedacht:

Sheet[anzSQL].OnMouseUp := ShowPopupMenu(PageControlSQL,mbRight,[],Mouse.CursorPos.X,Mouse.CursorPos.Y); und dazu die Proc:

Delphi-Quellcode:
procedure TFrameDB.ShowPopupMenu(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  TCM_GETITEMRECT = $130A;
var
  i: Integer;
  r: TRect;
  p: TPoint;
begin
  with (Sender as TPageControl) do
  begin
    for i := 0 to PageCount - 1 do
    begin
      Perform(TCM_GETITEMRECT, i, LPARAM(@r));
      if PtInRect(r, Point(X, Y)) then
      begin
        if i = ActivePage.PageIndex then
        begin
          p := ClientToScreen(Point(X, Y));
          PopupSQL.Popup(p.X, p.Y);
          Exit;
        end; // if i = ActivePage.PageIndex then
      end; // if PtInRect(r, Point(X, Y)) then
    end; // for i := 0 to PageCount - 1 do
  end; // with (Sender as TPageControl) do
end;
Dann sagt der mir aber:

Code:
[Fehler] uFrame.pas(335): Inkompatible Typen: 'TMouseEvent' und 'procedure, untyped pointer or untyped parameter'
Das Versteh ich nicht, da ja

Delphi-Quellcode:
Mouse.CursorPos.X
Mouse.CursorPos.Y
vom Typ Integer ist und die Proc verlangt an der Stelle Integer
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklap

  Alt 18. Dez 2003, 10:30
Moin General,

lass mal die Parameter weg, also nur so:

Sheet[anzSQL].OnMouseUp := ShowPopupMenu; Die Werte für die Parameter werden ja beim Eintreten des Events automatisch gefüllt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklap

  Alt 18. Dez 2003, 10:31
Sheet[anzSQL].OnMouseUp := ShowPopupMenu(PageControlSQL,mbRight,[],Mouse.CursorPos.X,Mouse.CursorPos.Y); Nein, du musst das OnPageControlMouseUp dem PageControl zuweisen.
und zwar so:

Delphi-Quellcode:
private
 procedure MyPageControlMouseUp(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);

{...}

procedure TForm1.MyPageControlMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // Code...
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  MYPageControl : TPageControl;
begin
  MYPageControl := TPageControl.Create(Self);
  MYPageControl.OnMouseUp := PageControl1MouseUp;
  //...
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#6

Re: PopupMenu NUR bei rechtsklick auf TabSheet.Titel ausklap

  Alt 18. Dez 2003, 10:33
Ahhh..Dann ist das kein Problem. Das PageControl wird nicht dynamisch erzeugt
Sebastian
Ehemals bekannt als General2004
  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:10 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