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 Doppelclick in einem Panel der Statusbar erkennen (https://www.delphipraxis.net/113880-doppelclick-einem-panel-der-statusbar-erkennen.html)

v2afrank 16. Mai 2008 10:24


Doppelclick in einem Panel der Statusbar erkennen
 
Hallo,
ich habe hier eine Statusbar mit drei Panel. Ich möchte hier erkennen, wenn der Benutzer im zweiten Statuspanel einen doppelclick macht. Wie kan ich erkennen, in welchem Panel der Doppelclick gemacht wurde ?

Bernhard Geyer 16. Mai 2008 10:26

Re: Doppelclick in einem Panel der Statusbar erkennen
 
Selbst berechnen über die Left-Position der Statusbar + breiten der einzelnen Abschnitte.

toms 16. Mai 2008 10:42

Re: Doppelclick in einem Panel der Statusbar erkennen
 
...oder indem du dieses DblClick Ereignis nachrüstest:


Delphi-Quellcode:
unit MyStatusBar;

interface


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

const
  WM_PANELDBLCLICK = WM_USER + $501;

type
  TPanelClickEvent = procedure(Sender: TObject;
    PanelIndex: Integer) of object;


  TMyStatusBar = class(TStatusBar)
  private
    FOnPanelDblClick: TPanelClickEvent;
    procedure CNNotify(var Message: TWMNotify);
      message CN_NOTIFY;
    procedure WMPanelDblClick(var Message: TMessage);
      message WM_PANELDBLCLICK;
  published
    property OnPanelDblClick: TPanelClickEvent
      read FOnPanelDblClick
      write FOnPanelDblClick;
  end;

procedure Register;

implementation

uses
  CommCtrl;

procedure Register;
begin
  RegisterComponents('Misc Components', [TMyStatusBar]);
end;

{ TMyStatusBar } 


procedure TMyStatusBar.CNNotify(var Message: TWMNotify);
begin
  inherited;
  with Message do
  begin
    case NMHdr^.code of
      NM_DBLCLK:
        with PNMMouse(NMHdr)^ do
        begin
          Result := 1;
          PostMessage(Handle, WM_PANELDBLCLICK, dwItemSpec, 0);
        end;
    end;
  end;
end;

procedure TMyStatusBar.WMPanelDblClick(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnPanelDblClick) then
    FOnPanelDblClick(Self, Message.wParam);
end;

end.

v2afrank 16. Mai 2008 11:48

Re: Doppelclick in einem Panel der Statusbar erkennen
 
Ok,
danke für die Antwort


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