Newsgroup: it.comp.lang.delphi
Titolo: Opzioni DBLookupComboBox

Vorrei avere un'informazione sul componente DBLookupComboBox. L'ho settato e
mi visualizza il campo testuale a cui l'ho collegato (come result) ma vorrei
sapere se è possibile fare si che oltre al testo visualizzi anche il numero
di riferimento. Mi spiego meglio.
Dataset Ordine, collegato alla tabella ordine, dove c'è tra le varie cose un
campo col codice cliente che ha fatto l'ordine.
Dataset Cliente, collegato alla tabella cliente, dove c'è appunto il codice
cliente ma anche il nome.
Nella form che descrive gli ordini c'è chiaramente il DBLookupComboBox che
partendo dal codice cliente della tabella ordine visualizza il nome del
cliente memorizzato nella tabella cliente, però visualizza solo il nome. Io
vorrei visualizzasse il numero del codice cliente e a fianco il nome ... si
può fare ?

 vorrei visualizzasse il numero del codice cliente e a fianco il nome ...
si
risolvi tutto creando nella tabella clienti un campo calcolato
come fare:
nell'"Object TreeView" di delphi, apri il nodo corrispondente al dataset
clienti
click destro sulla collection Filds e seleziona "New field..."
tipo: string
check: Calculated
come da codice dfm
    object ADOTableClientiCodice_Cliente: TStringField
      FieldKind = fkCalculated
      FieldName = 'Codice_Cliente'
      ReadOnly = True    //io l'ho settato ReadOnly poichè lo calcolo
internamente e non è un input dell'utente
      Calculated = True
    end
una volta che il campo ti appare nel TreeView
fra la collezione dei campi del dataset clienti,
ci clicchi sopra e nell'"Object Inspector" fai scrivere
da delphi l'evento onGetText mediante il doppio click.
riempi l'evento con il seguente codice che saprai riscrivere per le tue
esigenze
procedure TForm1.ADOTableClientiCodice_ClienteGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
        Text := DataSourceClienti.DataSet.FieldByName('idCliente').AsString
                + '-'
                + DataSourceClienti.DataSet.FieldByName('nome').AsString;
end;
poi nella configurazione del DBComboLookUp invece del campo nomeCliente
colleghi il nuovo campo calcolato Codice_Cliente ...
buon Lavoro ;)
se ci sono problemi ti posto il codice della demo che o fatto
  Ciao
  Mak

 di riferimento.
Non sono molto esperto, perň:
Imposta DropDownWidth a un valore in pixel abbastanza largo da farti vedere
piů di una colonna
Imposta in ListField i campi che vuoi vedere separandoli con un punto e
virgola (o forse col separatore di elenco impostato nella configurazione di
Windows)
Per regolare la larghezza delle colonne devi agire sulla DisplayWidth del
Field (fai doppio clic sulla Tabella per accedere ai campi).
C'č qualche post vecchio sull'argomento, perchč anch'io avevo la stessa
esigenza.
Per finire ti consiglio *caldamente* di usare il componente analogo delle
RXlib, perchč *secondo me* il componente di Delphi č bacato.
Ho confrontato TDBLookupComboBox VolgaDBEdit e RXDBLookUpCombo. I primi due
non sempre mi mostrano i valori correttamente aggiornati (talvolta mi
visualizzano il valore del record precedente!)
Ciao

Grazie per le risposte, oggi provo entrambi i metodi che mi avete indicato,
poi vi faccio sapere :)
Per quanto riguarda le RXLib ... ho cercato e su sourceforge mi permette si
di scaricarle, ma dice che si tratta
addirittura di versione Alpha! Siamo sicuri che non siano bacati!??