Auf Maustastenbotschaften antworten
Nach oben zu Maustasten- und Tastendruckbotschaften behandeln
MouseDown ist eine als protected deklarierte Methode für das Ereignis OnMouseDown des Steuerelements. Das Steuerelement selbst ruft MouseDown als Antwort auf die Windows-Maustastenbotschaft auf. Beim Überschreiben der geerbten Methode MouseDown können Sie Quelltext einfügen, der zusätzlich zum Aufruf des Ereignisses OnMouseDown weitere Reaktionen definiert.
Fügen Sie zum Überschreiben von MouseDown der Klasse TDBCalendar die Methode MouseDown hinzu:
type
TDBCalendar = class(TSampleCalendar);
.
.
.
protected
procedure MouseDown(Button: TButton, Shift: TShiftState, X: Integer, Y: Integer);
override;
.
.
.
end;
procedure TDBCalendar.MouseDown(Button: TButton; Shift: TShiftState; X, Y: Integer);
var
MyMouseDown: TMouseEvent;
begin
if not ReadOnly and FDataLink.Edit then
inherited MouseDown(Button, Shift, X, Y)
else
begin
MyMouseDown := OnMouseDown;
if Assigned(MyMouseDown then MyMouseDown(Self, Button, Shift, X, Y);
end;
end;
// Header-Datei<?Pub Caret?>
class PACKAGE TDBCalendar : public TSampleCalendar
{
.
.
.
protected:
virtual void __fastcall MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y);
.
.
.
};
// Implmentierungsdatei
void __fastcall TDBCalendar::MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y)
{
TMouseEvent MyMouseDown; // Ereignistyp deklarieren
if (!FReadOnly && FDataLink->Edit()) // Falls das Feld bearbeitbar ist,
TSampleCalendar::MouseDown(Button, Shift, X, Y); // geerbte Version MouseDown aufrufen
else
{
MyMouseDown = OnMouseDown; // Behandlungsroutine zuweisen
if (MyMouseDown != NULL) MyMouseDown(this, Button, // Code der Routine...
Shift, X, Y); // ...OnMouseDown ausführen
}
}
Wenn MouseDown auf Maustastenbotschaften antwortet, wird die geerbte Methode MouseDown nur unter der Voraussetzung aufgerufen, dass das Feld bearbeitet werden kann. Dazu muss die Eigenschaft ReadOnly des Steuerelements den Wert False haben, und das Datenverknüpfungsobjekt muss sich im Bearbeitungsmodus befinden. Kann das Feld dagegen nicht bearbeitet werden, wird der Quelltext ausgeführt, den der Programmierer in die Ereignisbehandlungsroutine für OnMouseDown eingefügt hat.