Stimmt - aber erst ab D7 (oder D6? das hab ich übersprungen). Und eben auch nicht für die Maus, wobei dieses Verhalten zugegebenermaßen auch nicht besonders 'systemkonform' ist. Aber der Hinweis ist selbstverständlich mehr als berechtigt, im Sinne einer problemlosen Migration und auf die Tastatur beschränkt sähe das dann für D5 (bzw D6?) einschließlich so aus:
Delphi-Quellcode:
unit DBLookupComboBoxEx;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus,
DB, DBCtrls;
type
TDBLookupComboBoxEx =
class(TDBLookupComboBox)
private
FNullValueKey: TShortCut;
protected
procedure WMKeyDown(
var Message: TWMKeyDown);
message WM_KEYDOWN;
public
published
property NullValueKey: TShortCut
read FNullValueKey
write FNullValueKey
default 0;
end;
procedure Register;
implementation
procedure TDBLookupComboBoxEx.WMKeyDown(
var Message: TWMKeyDown);
begin
if (FNullValueKey <> 0)
and CanModify
and (FNullValueKey = ShortCut(
Message.CharCode,
KeyDataToShiftState(
Message.KeyData)))
then
begin
DataSource.Edit;
Field.Clear;
Message.CharCode := 0;
end;
inherited;
end;
procedure Register;
begin
RegisterComponents('
DBAddOns', [TDBLookupComboBoxEx]);
end;
end.
Außerdem habe ich mir erlaubt, die gestrige Variante auch noch mal anzupassen, die hat zB auch ReadOnly nicht berücksichtigt. Man sollte sowas halt nicht als Mittel gegen Schlaflosigkeit einsetzen...
peinhard