Newsgroup: it.comp.lang.delphi
Titolo: problemino con DBLookupComboBox

Uso un DBLookupComboBox sfruttando solo il ListField e il KeyField.
In altre parole non uso il DataField (lascio il DataSource vuoto).
Non mi riesce di far apparire il primo elemento del ListField 
all'apertura della maschera, sebbene i valori ci siano e si srotolino 
per benino quando si tocca il componente. In altre parole tutto funziona 
a dovere.
Sulle prime mi sembrava una cosa facile da sistemare, ma la verità è che 
non ci sono proprio riuscito.
Qualcuno mi ha detto che potrebbe dipendere dal fatto che il Combo non è 
collegato a nessun DataField: ok, ma per l'uso che faccio del componente 
questo collegamento sarebbe disastroso, quindi è da escludere.
Molte grazie.
Michele Giordano

Dovrebbe essere una cosa del genere:
With combo do
  keyvalue := ListSource.Dataset.FieldByName(KeyField).Value
Bye
A.



E' una bella pensata!
A questo punto,pero',visto che non deve scrivere il valore da nesusna parte, gli suggerirei
di utilizzare un combobox semplice eventualmente caricato con una sql.
Il DBLookUpComboBox ha il difetto di caricarsi in memoria tutti i valori del listsource, e quindi
potrebbe degradare le prestazioni in fatto di velocita'....
Ciao
Morde

 
Se puň interessare a qualcun altro io l'ho risolto cosě:
====================
procedure MostraPrimoDellaLista.FormActivate(Sender: TObject);
begin
   NomeCombo.KeyValue:=NomeCombo.ListSource.DataSet.Fields[0].AsInteger;
end;
====================
Molte grazie al Alberto Salvati.
Michele Giordano

 
Vero. Ma non capisco perché un Combo semplice dovrebbe essere piů veloce 
di un DBCombo, visto che dovrei comunque trasferirgli l'esito di una 
query di peso paragonabile a quello della query che pilota il DBCombo.
Ciao.
Michele Giordano

> NomeCombo.KeyValue:=NomeCombo.ListSource.DataSet.Fields[0].AsInteger;
Ricorda pero che se cambi la keyfield devi cambiare anche la riga riportata
sopra.
Usando direttamente keyField basta modificare quella ed il gioco è fatto.
ByeBye
A.

useresti una query unidirezionale.
Invece quelle associate ad un dbaware DEVONO essere bidirezionali.
Bye
A.

 
Sospettavo una risposta del genere...
Grazie.
MG

 
Ma FieldsByName non è accessibile dal DataSet:
   keyvalue := ListSource.Dataset.FieldByName(KeyField).Value
non è una linea di codice componibile col "suggeritore" di codice;
E' accessibibile FieldValues, ma restituisce un Variant, e qui, non 
avendo trovato subito la funzione di conversione, ho ripiegato su Fields[0].
E' FieldValues la strada giusta?
Ciao.
Michele Giordano

query di peso paragonabile a quello della query che pilota il DBCombo.
Si, hai ragione, pero' io faccio un altro ragionamento: una query, una volta eseguita, la carichi
nel combo e poi il resto del lavoro lo fa il combo in memoria (sort,ricerche per porzioni di testo, ecc.)
Invece un dblookupcombobox (ma tu hai scritto dbcombo(?)) resta connesso al datasource, fa il lookup ogni
volta che cerchi un valore, utilizza le risorse del db.
Anche se in minima parte, ovviamente, ma questo poi si lega all'ordine di grandezza del dominio dal quale
peschi i valori di lookup.Ti lascio immaginare un DBlookupcombobox che mostra i cognomi 
dei clienti di un'azienda che ne ha qualche migliaio...
Fattosta' che nei miei programmi, quando non devo salvare il valore selezionato sul db,
utilizzo sempre dei combobox caricati con sql.
Cmq, in linea generale, le prestazioni non sono poi cosi' differenti per domini con popolazioni piccole.
Ciao
Morde

 utilizzo sempre dei combobox caricati con sql.
Giusto. Finora, però, io non ho mai pescato da server impegnati in mille 
altre cose, e quindi semplicemente non mi sono posto il problema. Ma 
credo che in altro situazioni me ne sarei accorto eccome!
Ciao.
Michele

 non è una linea di codice componibile col "suggeritore" di codice;
TDataset ha filedbyname.
Solo che, siccome la parte sinistra della espressione vuole alla sua destra
un variant e fieldbyname restituisce un TField, il suggeritore la nasconde.
Ma TField ha la prop VALUE che ritorna un variant.
Bye
A.

 Ma TField ha la prop VALUE che ritorna un variant.
Applausi.
:-)
Michele Giordano