Auf Tastendruckbotschaften antworten
Nach oben zu Maustasten- und Tastendruckbotschaften behandeln
KeyDown ist eine als protected deklarierte Methode für das Ereignis OnKeyDown des Steuerelements. Das Steuerelement selbst ruft die Methode KeyDown als Antwort auf eine Windows-Tastendruckbotschaft auf. Beim Überschreiben der geerbten Methode KeyDown können Sie Quelltext einfügen, der zusätzlich zum Aufruf des Ereignisses OnKeyDown weitere Reaktionen definiert.
Führen Sie zum Überschreiben von KeyDown folgende Schritte aus:
- Fügen Sie die Methode KeyDown in die Klasse TDBCalendar ein:
type
TDBCalendar = class(TSampleCalendar);
.
.
.
protected
procedure KeyDown(var Key: Word; Shift: TShiftState; X: Integer; Y: Integer);
override;
.
.
.
end;
class PACKAGE TDBCalendar : public TSampleCalendar
{
.
.
.
protected:
virtual void __fastcall KeyDown(unsigned short &Key, TShiftState Shift);
.
.
.
};
- Implementieren Sie die Methode KeyDown:
procedure KeyDown(var Key: Word; Shift: TShiftState);
var
MyKeyDown: TKeyEvent;
begin
if not ReadOnly and (Key in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_END,
VK_HOME, VK_PRIOR, VK_NEXT]) and FDataLink.Edit then
inherited KeyDown(Key, Shift)
else
begin
MyKeyDown := OnKeyDown;
if Assigned(MyKeyDown) then MyKeyDown(Self, Key, Shift);
end;
end;
<?Pub Caret1?>void __fastcall TDBCalendar::KeyDown(unsigned short &Key, TShiftState Shift)
{
TKeyEvent MyKeyDown; // Ereignistyp deklarieren
Set<unsigned short,0,8> keySet;
keySet = keySet << VK_UP << VK_DOWN << VK_LEFT // Virtuelle Tasten zu Menge zuweisen
<< VK_RIGHT << VK_END << VK_HOME << VK_PRIOR << VK_NEXT;
if (!FReadOnly && // Wenn das Steuerelement nicht schreibgeschützt ist...
(keySet.Contains(Key)) && // ...und die Taste in der Menge ist...
FDataLink->Edit() ) // ...und das Feld im Bearbeitungsmodus ist
{
TCustomGrid::KeyDown(Key, Shift); // Geerbte Methode KeyDown aufrufen
}
else
{
MyKeyDown = OnKeyDown; // Ereignis OnKeyDown zuordnen
if (MyKeyDown != NULL) MyKeyDown(this,Key,Shift); // Ausführen der ...
} // ...OnKeyDown-Behandlungsroutine
}
Wenn KeyDown auf Tastendruckbotschaften antwortet, wird die geerbte Methode KeyDown nur unter der Voraussetzung aufgerufen, dass die Eigenschaft ReadOnly des Steuerelements den Wert False hat, die gedrückte Taste eine Cursortaste ist und das Datenverknüpfungsobjekt sich im Bearbeitungsmodus befindet (d.h. das Feld kann bearbeitet werden). Kann das Feld nicht bearbeitet werden oder wurde eine andere Taste gedrückt, wird der Quelltext ausgeführt, den der Programmierer in die Ereignisbehandlungsroutine für OnKeyDown eingefügt hat.