AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

activebar mousemenu deaktivieren ??

Ein Thema von erniepb · begonnen am 11. Jun 2002 · letzter Beitrag vom 11. Jun 2002
Antwort Antwort
erniepb

Registriert seit: 8. Jun 2002
Ort: Berlin
96 Beiträge
 
Delphi 7 Enterprise
 
#1

activebar mousemenu deaktivieren ??

  Alt 11. Jun 2002, 21:56
Hallöchen
Ich hab folgendes kurzes Problem .. Wie deaktiviere ich das Mousemenu das normalerweise erscheint .. wenn man mit der rechten maustaste auf den activebar eines Forms klickt??
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2
  Alt 11. Jun 2002, 22:12
Hi,

Was verstehst du unter 'activebar'?
Meinst du die Titelleiste?
Thomas
  Mit Zitat antworten Zitat
erniepb

Registriert seit: 8. Jun 2002
Ort: Berlin
96 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 11. Jun 2002, 22:23
ja genau die ..
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4
  Alt 11. Jun 2002, 22:34
Hi,

Dazu musst du einige Nachrichten abfangen:


Code:
type
  TForm1 = class(TForm)
  private
    procedure WMNcrButtonDown(var Msg: TMessage); message WM_NCRBUTTONDOWN;
    procedure WMSyscommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
    procedure WMNCLButtonDblClk(var Msg: TMessage); message WM_NCLBUTTONDBLCLK;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

// Rechte Maustaste auf Titelleiste unterdrücken.
procedure TForm1.WMNcrButtonDown(var Msg: TMessage);
begin
  if Msg.wParam = HTCAPTION then
    Msg.Result := 0;
end;

// Evtl Doppelklick auf App. Icon unterdrücken
procedure TForm1.WMNCLButtonDblClk(var Msg: TMessage);
begin
  if Msg.wParam = HTCAPTION then
    Msg.Result := 0;
end;

// Klick auf App. Icon unterdürcken
procedure TForm1.WMSyscommand(var Msg: TWMSysCommand);
begin
  case (Msg.CmdType and $FFF0) of
    SC_MOUSEMENU:
      Msg.Result := 0;
    else
      inherited;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
erniepb

Registriert seit: 8. Jun 2002
Ort: Berlin
96 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 11. Jun 2002, 22:53
Danke!! funktioniert gut !!!

Hab nur n kleines Problem .. ich versteh noch nich ganz was da an sich passiert .. hinsichtlich der verschiedenen Parameter ..
Ich denk ich werd mich da mal nach n entsprechenden Tutorial umsehen müssen ..
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6
  Alt 11. Jun 2002, 22:59
Das beste "Tutorial" gibts hier:

http://msdn.microsoft.com/library/
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 11. Jun 2002, 23:12
Also:
WM_NCRBUTTONDOWN ist ein Klick mit der rechten Maustaste in die NonClientAera des Fensters, also in den Nicht-Anwendungsbereich. der wParam der Nachricht ist das Ziel wohin geklickt wurde. Wurde auf die Titelleoste geklickt (HTCAPTION), wird die Nachricht umgebeogen bzw verschluckt, in dem nicht daraufreagiert wird.
Gleiche Vorgehen bei WM_NCLBUTTONDBLCLK.

Wird mit WM_SYSCOMMAND normalerweise das Mausmenü geöffnet, wird das auch wieder verschluckt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
erniepb

Registriert seit: 8. Jun 2002
Ort: Berlin
96 Beiträge
 
Delphi 7 Enterprise
 
#8
  Alt 11. Jun 2002, 23:21
hui .. danke das hat geholfen ..
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#9
  Alt 11. Jun 2002, 23:22
Hallo Ernie,

eigentlich sind die Parameter von der Bezeichnung her recht aussagekräftig:
WM_NCRBUTTONDOWN = gedrückte rechte Maustaste
WM_SYSCOMMAND = Systemmenü
WM_NCLBUTTONDBLCLK = Doppelklick mit der linken Taste

Windows-Messages haben zwei Parameter wParam und lParam. Wenn der hier in Frage kommende Parameter HTCAPTION ist, war das Ziel der Aktion die Titelleiste. Durch Result := 0 wird die Message gelöscht. Das Fenster erfährt nichts mehr davon, dass seine Titelleiste angeklickt wurde.
Der Klick auf das Systemmenü muss anders behandelt werden, um nicht andere Aufrufe ebenfalls zu unterdrücken.
Weitergehende Infos dazu findest Du, wie toms schon schrieb, bei Microsoft - vor allem kannst Du dort alle möglichen Parameter nachschlagen.

Tutorials zu WinAPI kannst Du auf Luckies Homepage finden.


Alfons Grünewald



Alfons Grünewald
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#10
  Alt 11. Jun 2002, 23:23
Na, da war Luckie zur gleichen Zeit dran, wie ich

Alfons Grünewald



Alfons Grünewald
  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 09:00 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