AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBLookupBox und Integer
Thema durchsuchen
Ansicht
Themen-Optionen

DBLookupBox und Integer

Ein Thema von barnti · begonnen am 14. Okt 2004 · letzter Beitrag vom 14. Okt 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Sharky
Sharky

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

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 12:17
Zitat von barnti:
... Das geht nur mit STRINGS. Ich habe aber bei dem Beispiel INTEGER..
Hai barnti,

caste doch in deiner SQL-Abfrage den Integer in einen String.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 12:21
Hi sharky,

das ist die erste Idee zu meinem Problem.
Ich arbeite mit mysql und den mysqlDAC.
Wie kann ich die Abfrage casten und dann die Box nutzen?
Sollte ja mit der Query für die Lookupbox geschehen...
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 12:32
Hai barnti,

versuche es mal so:
SELECT cast(id AS char) FROM tabelle
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 13:15
Hi Sharky,

ich werde mich mal gleich an die Arbeit machen...
Gruß,

Barnti
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 13:34
Hi Sharky,
das ganze bedarf größerer Änderungen. Ich werde diese Woche nicht mehr dazu kommen. Ich melde mich nächste Woche bezüglich dieses Problems noch einmal.
Danke erst einmal!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 13:34
Zitat von barnti:
...Danke erst einmal!
Bitte schön
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#17

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 14:12
Zitat von barnti:
Hi,

ich muss wohl chinesisch reden

Ich KENNE die Funktion der TDBLookupCombobox. Ich NUTZE diese bereits!!

Was nicht funktioniert:

Auswahl eines Wertes aus der Box PER Tastatur. Das geht nur mit STRINGS. Ich habe aber bei dem Beispiel INTEGER.

Mehr weiß ich dazu jetzt echt nicht zu sagen...
OH MANN!!!
Ich hab wohl komplett chinesisch verstanden...
Ok, nachdem ich das mal ausprobiert hab, das ListField als IntegerField zu deklarieren, ist mir auch klar, was dein Problem ist!
In der Tat eine komische Sache, aber irgendwie funzt das bei IntegerFeldern nicht mit der Tastatureingabe...

Ich hab mich mal geguckt, warum das so ist. Tja, in der Komponente wird gesagt, dass das mit der Tastatureingabe nur funktioniert, wenn das Feld vom Typ String o.Ä. ist, aber nicht bei Integer.

Nu gut, versuchen wir doch mal die Klasse etwas zu "modifizieren".

Einfach in die Unit, wo du die TDBLookupComboBox hast folgende Zeile als erstes unter type:
Delphi-Quellcode:
  TDBLookupComboBox = class(DBCtrls.TDBLookupComboBox)
    procedure ProcessSearchKey(Key: Char); override;
  end;
Die Funktion definieren wir wie folgt (mit kleinen Änderungen aus TDBLookupControl übernommen):
Delphi-Quellcode:
uses
  DB;

var
  SearchTickCount: Integer = 0;

procedure TDBLookupComboBox.ProcessSearchKey(Key: Char);
var
  TickCount: Integer;
  S: string;
  CharMsg: TMsg;
  FListField: TField;
  FKeyField: TField;
begin
  FListField := ListSource.DataSet.FindField(ListField);
  if (FListField <> nil) and (FListField.FieldKind in [fkData, fkInternalCalc]) and
    (FListField.DataType in [ftString, ftInteger, ftWideString]) then // <<--- hier hab ich ftInteger hinzugefügt
    case Key of
      #8, #27: SearchText := '';
      #32..#255:
        if CanModify then
        begin
          TickCount := GetTickCount;
          if TickCount - SearchTickCount > 2000 then SearchText := '';
          SearchTickCount := TickCount;
          if SysLocale.FarEast and (Key in LeadBytes) then
            if PeekMessage(CharMsg, Handle, WM_CHAR, WM_CHAR, PM_REMOVE) then
            begin
              if CharMsg.Message = WM_Quit then
              begin
                PostQuitMessage(CharMsg.wparam);
                Exit;
              end;
              SearchText := SearchText + Key;
              Key := Char(CharMsg.wParam);
            end;
          if Length(SearchText) < 32 then
          begin
            S := SearchText + Key;
            try
              if ListLink.DataSet.Locate(FListField.FieldName, S,
                [loCaseInsensitive, loPartialKey]) then
              begin
                FKeyField := ListSource.DataSet.FindField(KeyField);
                SelectKeyValue(FKeyField.Value);
                SearchText := S;
              end;
            except
              SearchText := S;
            end;
          end;
        end;
    end;
end;
Somit hast du - ok, auf etwas fiesem Weg - die Klasse überschrieben, ohne eine neue zu erstellen. Sie gilt allerdings nur innerhalb dieser Unit! Jetzt funktioniert die ganze Sache auch mit der Tastatureingabe.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 14:31
Hallo Sharky,

ich habe mir mal eben ein Testprogramm erstellt. Ich habe deinen Tip beherzigt und - es FUNKTIONIERT!

Ich bin begeistert! Danke!Danke!...
Gruß,

Barnti
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 14:44
Hi Stevie,
auch ein Weg. Ich bin am überlegen, ob das nicht sogar einfacher wäre.
Aber ich weiß nicht, ob das nicht andere 'Sauereien' macht...

Vielen Dank auch für Deine Geduld und Mühe!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#20

Re: DBLookupBox und Integer

  Alt 14. Okt 2004, 14:49
Zitat von barnti:
Hi Stevie,
auch ein Weg. Ich bin am überlegen, ob das nicht sogar einfacher wäre.
Aber ich weiß nicht, ob das nicht andere 'Sauereien' macht...

Vielen Dank auch für Deine Geduld und Mühe!
Du läufst auf jeden Fall nicht Gefahr, dass dein in string gecastetes Feld doch irgendwo als integer benötigt wird.
Ok, die einzige Sauerei ist eigentlich, dass es schon etwas gegen die "Gesetze" der OOP verstößt, wenn ich die Kompo hier einfach "superclasse". Ansonsten funktioniert das so, wie vorher.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:50 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