Announcement

Collapse
No announcement yet.

"Bing" bei Tastenkombinationen mit ALT ausschalten - wie gehts?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "Bing" bei Tastenkombinationen mit ALT ausschalten - wie gehts?

    Ich habe in der OnKeyDown-Prozedur eines Formulars einige Hotkeys belegt mit (Pseudocode)

    if Shift = [ssAlt] then
    if Key = ord('a') then
    begin
    Key := 0; // <-gedacht habend, das wäre genug - scheint aber nicht...
    TuIrgendwasWichtiges
    end;

    Funktioniert auch - aber bei jeder Betätigung gibts einen Error-"Bing" vom System, der vermutlich von TMainMEnu ausgelöst wird (hab ich dort einen Menupunkt mit dem gleichen Hotkey (ohne irgendeien Funktion) definiert, ist der "Bing" weg.

    Wie kann ich dem Formular das "Bing" austreiben?

  • #2
    Hallo,

    warum so umständlich? Wenn im Formular eine <b>TActionList</b>-Instanz verwendet wird, kann man dort alle Hotkeys an einer Stelle zentral verwalten lassen. Somit wird die Funktion aufgerufen, ohne einen "Bing" zu provozieren.

    <pre>
    unit Unit1;

    interface

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

    type
    TForm1 = class(TForm)
    ActionList1: TActionList;
    Action1: TAction;
    Action2: TAction;
    procedure Action1Execute(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.Action1Execute(Sender: TObject);
    begin
    ShowMessage('Alt E');
    end;

    end.
    </pre>
    In der DFM-Datei sieht das so aus: Der Objektinspektor hat den ShortCut <i>ALT+E</i> in die Zeile <b>ShortCut = 32837</b> umgewandelt, so dass an dieser Stelle der Verbindung zwischen dem ActiveList-Ereigenis und ALT+E hergestellt wird:
    <pre>
    object Form1: TForm1
    Left = 192
    Top = 107
    Width = 696
    Height = 480
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object ActionList1: TActionList
    Left = 24
    Top = 32
    object Action1: TAction
    Caption = 'Action1'
    ShortCut = 32837
    OnExecute = Action1Execute
    end
    object Action2: TAction
    Caption = 'Action2'
    end
    end
    end
    </pre&gt

    Comment


    • #3
      Hallo Andreas Kosch,

      danke für die fixe Antwort

      ich dachtes chon, ich hätte was übersehen - aber nun scheints einfach daran zu liegen, dass ich "nur" mit Delphi 3 prof. arbeite - vielleciht ist TActionList was aus neheren Releases?

      Also stand der Mohr ratlos wie zuvohr..

      Comment

      Working...
      X