![]() |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hier ist vielleicht was:
Delphi-Quellcode:
So in der Richtung müßte es gehen. Mit FIBplus geht es jedenfalls.
unit grid;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, DB, FIBDataSet, pFIBDataSet, FIBDatabase, pFIBDatabase, Grids, DBGrids; type TForm1 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; pFIBDatabase1: TpFIBDatabase; pFIBTransaction1: TpFIBTransaction; pFIBDataSet1: TpFIBDataSet; DataSource2: TDataSource; pFIBDatabase2: TpFIBDatabase; pFIBTransaction2: TpFIBTransaction; pFIBDataSet2: TpFIBDataSet; DBLookupComboBox1: TDBLookupComboBox; procedure FormCreate(Sender: TObject); procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin DBLookUpComboBox1.visible := false; end; procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin if (gdFocused in state) then begin if (Field.FieldName = DBLookupComboBox1.DataField) then begin DBLookUpComboBox1.Left := Rect.Left + DBGrid1.Left; DBLookUpComboBox1.Top := Rect.Top + DBGrid1.Top; DBLookUpComboBox1.Width := Rect.Right - Rect.Left; // DBLookUpComboBox1.Height := Rect.Bottom - Rect.Top; DBLookUpComboBox1.Visible := true; DBLookUpComboBox1.DropDownRows := 5; end; end; end; end. |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Das ist nett, dass du mir das geschrieben hast, aber ich weiß nicht so Recht, was mir das bringen soll. :?: Die Fehlermeldung:
Index nicht mehr gültig. Index: Name kommt immer noch, und außerdem benutze ich gar kein DBGrid. :wink: Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Zitat:
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Zitat:
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo Matze,
hat die Tabelle, die das Feld Name enthält, einen Index? Ist dieser Index ausgewählt? Du solltest ggf. mit der Datenbankoberfläche den Index ggf. löschen und neu anlegen. |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo!
In der Datenbankoberfläche ist bei Sekundärindizes 'Name' eingestellt. In der Table1 habe ich bei den 4 Index-Eigenschaften nichts eingestellt. Was muss ich dort einstellen? Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo Matze,
ich meine, dass Paradox es eigentlich nicht erlaubt, dass ein Feld einer Tabelle und der Name eines (Sekundär)Indexes denselben Namen haben. Benutze einmal die Datenbankoberfläche und lösche den Index auf das Feld "Name". Speichere das Ergebnis und lege anschließend einen neuen Sekundärindex auf das Feld "Name" an, das du z.B. idxName nennst. Wenn du mit locate arbeitest, musst du den Index nicht vorher auswählen. Alternativ kannst du aber bei Table1 die Eigenschaft IndexName auf idxName setzen und anschließend anstatt mit Locate auch mit FindKey suchen:
Delphi-Quellcode:
Aber auch die locate Anweisung muss funktionieren.
if Table1.FindKey([Edit1.Text]) then
{ Name gefunden } else { Name nicht gefunden } |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Also, ich hab das mit dem Index jetzt mal weggelassen. Jetzt ist es bei mir so: Es ist egal, welchen Datensatz ich auswähle, es werden immer nur die Daten vom letzten Datensatz zugeordnet. :evil:
So rufe ich den Datensatz auf:
Code:
Gruß Matze
procedure TForm1.ComboBox2Change(Sender: TObject);
begin try Form3.Table1.Locate('Name',Combobox2.text,[LoCaseInsensitive]); except end; Edit2.text:=Form3.Table1.fieldbyname('Str').asstring; Edit3.text:=Form3.Table1.fieldByname('Ort').asstring; end; |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hey, sorry, dass ich nochmal geschrieben hab. Jetzt geht es!! :mrgreen: :mrgreen:
Ich hab einfach die Zeile:
Code:
durch diese:
Form3.Table1.Locate('Name',Combobox2.text,[LoCaseInsensitive]);
Code:
ersetzt.
Form3.Table1.Locate('Name',Combobox2.text,[]);
Mal so nebenbei: Was bedeutet eigentlch das in den eckigen Klammern?? Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo Matze,
ist schon komisch, dass es mit dieser Änderung funktioniert. Die eckigen Klammern kennzeichnen eine Menge, in diese kannst du grundsätzlich beliebig viele Elemente der zugrundeliegenden Menge (als Teilmenge) aufnehmen; bei locate gibt es nur zwei Elemente. Schau dir in der OH einmal Set of an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz