Einzelnen Beitrag anzeigen

Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#8

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 11. Jul 2006, 09:04
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
  Mit Zitat antworten Zitat