[Delphi] DBLookupComboBox selected value

Pagina: 1
Acties:
  • 216 views sinds 30-01-2008
  • Reageer

  • mrSunshine
  • Registratie: Juni 2001
  • Laatst online: 15-09 22:21
Ik heb een DBLookupComboBox die gekoppeld is aan een bepaald veld in een recordset. Nu is het zo dat deze combobox gewoon bovenaan begint in de recordset en het eerste record als 'selected value' laat zien. Ik zou graag deze 'selected value' afhankelijk maken van een andere recordset.

Dus eenvoudig gezegd wil ik graag aangeven welk item in de lijst als beginwaarde moet worden weergegeven.

Kan iemand mij vertellen of, en hoe dit mogelijk is?

Verwijderd

Ik zou niet zo gauw voor een DBLookupComboBox kiezen, maar voor een gewone ComboBox waarbij je op de Create van 't form z'n Items vult. Iets als (uitgaand van de BDE):
code:
1
2
3
4
5
6
7
8
9
10
11
with TQuery.Create(nil) do try
  Database := YourDatabase; //kan ook via DatabaseName
  SQL.Add('select <veld> from <tabel> order by <veld>');
  Open;
  while not EOF do begin
    YourComboBox.Add(FieldByName('<veld>').AsString);
    Next;
  end;
finally
  Free;
end;

Op het moment dat je zelf de default waarde wilt bepalen, hoef je dan alleen maar YourComboBox.Text op die waarde te zetten, eventueel na controle via YourComboBox.Items.IndexOf of die waarde wel bestaat.
Bijkomend voordeel: je houdt niet de hele tijd die recordset onnodig geopend.

edit:
Die controle is niet noodzakelijk wanneer je Style op csDropDownList zet, want dan worden niet bestaande waarden niet geaccepteerd, en wordt 't gewoon ''.

Verwijderd

Je kunt bij een TDBLookupComboBox de waarde in keyvalue uitlezen maar ook veranderen. Je geeft een veldnaam op in de keyfield propertie, als je vervolgens in keyvalue de waarde van het veld in keyfield voor het record dat je wilt selecteren opgeeft dan werkt dat gewoon.

  • mrSunshine
  • Registratie: Juni 2001
  • Laatst online: 15-09 22:21
In ieder geval bedankt, maar ik zou toch graag willen weten of het uberhaupt mogelijk is met een DBComboLookupBox.

Het is namelijk zo dat het om 25 comboboxen gaat die op verschillende manieren gebruikt worden wat betekent dat ik behoorlijk wat code aan moet passen als ik al die dblookupcomboboxen vervang door gewone comboboxen.

Verwijderd

Op maandag 19 november 2001 20:34 schreef mrSunshine het volgende:
Het is namelijk zo dat het om 25 comboboxen...
ItsMeAgain heeft je wat betreft keyfields al op 't goeie spoor gezet, maar 25 datasets openhouden alleen maar om de comboboxen te vullen???
Mocht je je 's afvragen waar je resources nou zijn gebleven, dan heb ik wel een hint... :)

  • mrSunshine
  • Registratie: Juni 2001
  • Laatst online: 15-09 22:21
Bedankt voor de hint Afterlife :)

Het werkt perfect met die keyvalue, dat was precies wat ik zocht, maar nu moet dat gekke ding ook gereset kunnen worden. Dat 'is dus gewoon weer blanco wordt op de een of andere manier...

Verwijderd

code:
1
DBLookUpComboBox1.KeyValue := Null;
Pagina: 1