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 Button mit speziellen Eigenschaften gesucht (https://www.delphipraxis.net/54710-button-mit-speziellen-eigenschaften-gesucht.html)

BrunoT 10. Okt 2005 12:55


Button mit speziellen Eigenschaften gesucht
 
Hi DP' ler,

ich suche einen Button, der
a) ein BitButton ist(mit Canvas)
b) nicht bloss OnClick, sondern auch OnKeyDown, OnKeypressed, OnExit kennt
c) VK_Up und VK_Down im OnKeyDown Ereignis auswerten lässt.

hat wer da einen Tipp?

mfg

BrunoT

Bernhard Geyer 10. Okt 2005 12:57

Re: Button mit speziellen Eigenschaften gesucht
 
Wenns was kosten darf: TElPopupButton

Ultimator 10. Okt 2005 13:07

Re: Button mit speziellen Eigenschaften gesucht
 
Das ist doch eigentlich kein Problem, sowas selber zu schreiben.
Einfach die WindowMessages abfangen und für die gedrückten Tasten die Parameter anschauen ;)

Ich setz mich mal ran, vielleicht bring ich was zusammen *gg*

//edit: Ich seh grade, TBitBtn erfüllt doch alle Anforderungen? :-|
Theoretisch müsste auch das mit VK_UP und so gehen, denn die anderen virtuellen Tastencodes funktionieren ja :-?

BrunoT 10. Okt 2005 13:53

Re: Button mit speziellen Eigenschaften gesucht
 
Hi,

danke für die schnellen Antworten,

a) nein, kosten darf´s nichts.
b) der BitBtn zeigt die Ereignisse VK_UP und VK_Down im OnKeypressed- Ereignis nicht an :wall:
sondern springt gleich zum nächsten oder vorhergehenden Control.

mfg

BrunoT

BrunoT 10. Okt 2005 14:04

Re: Button mit speziellen Eigenschaften gesucht
 
So nun hab ich mich einmal daran gewagt, das in eine neue Komponente zu packen:

Delphi-Quellcode:
unit UExtraButton;

interface

uses
   SysUtils, Classes, Controls, StdCtrls, Buttons, windows;

type
  TExtraButton = class(TBitBtn)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    constructor create(AOwner: TComponent); override;
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure TExtraButton.KeyDown(var Key: Word; Shift: TShiftState);
begin
  if not (key in [Vk_UP,VK_Down]) then
  inherited KeyDown(key, Shift);
end;

constructor TExtraButton.create(AOwner: TComponent);
begin
      inherited create(AOwner);
end;

procedure Register;
begin
  RegisterComponents('Zusätzlich', [TExtraButton]);
end;

end.
aber diese macht das auch nicht wie ich will(VK_UP,VK_DOWN) werden vorher abgefangen. :wall: :wall: :wall:

mfg

BrunoT

wer kann helfen?

Christian Seehase 10. Okt 2005 21:50

Re: Button mit speziellen Eigenschaften gesucht
 
Moin Holger,

schau Dir mal die Threads an in denen Hier im Forum suchenWM_GETDLGCODE behandelt wird.
Du wirst dem Button "mitteilen" müssen, dass bestimmte Tasten verarbeitet werden sollen.

BrunoT 11. Okt 2005 07:30

Re: Button mit speziellen Eigenschaften gesucht
 
Danke Christian, ich wusste, dass ich mich auf die DP verlassen kann! :bouncing4: :bounce1: :bouncing4:

für alle, die das Problem auch haben:

Delphi-Quellcode:
unit UExtraButton;

interface

uses
   SysUtils, Classes, Controls, StdCtrls, Buttons,Forms, windows,Messages;

type
  TExtraButton = class(TButton)
  private
    procedure FWMGETDLGCODE(var Msg : TWMGetDlgCode); message wm_GetDlgCode;
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure TExtraButton.FWMGETDLGCODE(var Msg : TWMGetDlgCode);
begin
  inherited;
  Msg.Result := Msg.Result or DLGC_WANTARROWS;
end;

procedure Register;
begin
  RegisterComponents('Zusätzlich', [TExtraButton]);
end;

end.
mfg

BrunoT


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