AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBLoockupbox möglichkeit kein Auswah zu treffen?
Thema durchsuchen
Ansicht
Themen-Optionen

DBLoockupbox möglichkeit kein Auswah zu treffen?

Ein Thema von Karstadt · begonnen am 10. Jul 2006 · letzter Beitrag vom 12. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 10. Jul 2006, 21:57
Datenbank: Mysql • Version: 4.1 • Zugriff über: Mydac
Hallo.

Wenn ich mit diese Komponente arbeite und ein Wert auswähle kann ich dann "KEIN WERT" nicht mehr auswählen. Kann man das irgendwie realisieren? Wichtig ist, das ich mit SOURCELIST arbeite.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 10. Jul 2006, 22:42
Im OnKeyDown Event auf VK_DELETE prüfen und dann ItemIndex := -1 setzen.
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#3

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 10. Jul 2006, 23:03
...das ist richt. Der Benutzer arbeitet Mit Maus. Kann man das irgendwie mit mausrealisieren? ich möchte vermeiden, das ich einen DUMMY Datensatz anlege.
  Mit Zitat antworten Zitat
Peinhard

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

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 10. Jul 2006, 23:10
Mit ItemIndex ginge es mit TDBLookupComboBox auch nicht, man müßte schon ein

dblCombo.Field.Clear

absetzen (vorher auf dsEditModes prüfen). Mit der Maus bliebe 'auf die Schnelle', also ohne was eigenes zu stricken, wohl nur ein PopupMenu für die Box - oder der zu recht ungeliebte Dummy-Datensatz.

peinhard
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 10. Jul 2006, 23:32
Zitat von Peinhard:
Mit der Maus bliebe 'auf die Schnelle', also ohne was eigenes zu stricken, wohl nur ein PopupMenu für die Box
Ohne Popup-Menü geht das über die Auswertung des Rechtsklicks.

Delphi-Quellcode:
procedure Tfrm.cbMwstMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
    TabellenFeldname.Clear; // das ist das TField
    // oder auch
    // dblCombo.Field.Clear;
end;
  Mit Zitat antworten Zitat
Peinhard

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

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 11. Jul 2006, 00:30
Gute Idee, das... Hier ein schnell gestrickter Abkömmling:

Delphi-Quellcode:
unit DBLookupComboBoxEx;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DB, DBCtrls;

type
  TDBLookupComboBoxEx = class(TDBLookupComboBox)
  private
    FAllowClear: boolean;
    procedure ClearField;
  protected
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
  public
  published
    property AllowClear: boolean read FAllowClear write FAllowClear default False;
  end;

procedure Register;

implementation

procedure TDBLookupComboBoxEx.ClearField;
begin
  if FAllowClear and CanModify then
  begin
    DataSource.Edit;
    Field.Clear;
  end;
end;

procedure TDBLookupComboBoxEx.KeyDown(var Key: Word; Shift: TShiftState);
begin
  inherited KeyDown(Key, Shift);
  if (Key = VK_DELETE) then ClearField;
end;

procedure TDBLookupComboBoxEx.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbRight) then ClearField;
  inherited MouseDown(Button, Shift, X, Y);
end;

procedure Register;
begin
  RegisterComponents('DBAddOns', [TDBLookupComboBoxEx]);
end;

end.
Bei Fehlern bitte nicht hauen... Verbesserungen gerne.

Edit: Prozedur ClearField angepasst...

peinhard
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 11. Jul 2006, 07:19
Also meine TDBLoopkupComboBoxen haben die Eigenschaft NullValueKey, die eigentlich genau das erledigt.
  Mit Zitat antworten Zitat
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
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#9

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 11. Jul 2006, 23:45
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#10

Re: DBLoockupbox möglichkeit kein Auswah zu treffen?

  Alt 12. Jul 2006, 11:18
Hai Karstadt,

genau wegen solchen "Problemen" arbeite ich kaum noch mit DBxxxxx Komponenten zur visualisierung von Daten. Ich nehme dafür die "normalen" Edits, Comboboxen usw. Das bedeutet zwar etwas mehr aufwand beim tippen. Dafür habe ich aber eine bessere Kontolle über den Ablauf.

Im Anhang mal ein 0815 Beispiel.
Angehängte Dateien
Dateityp: zip demoform_205.zip (12,3 KB, 6x aufgerufen)
Stephan B.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz