PDA

Visualizza la versione completa : [Delphi] ottenere il contenuto della riga selezionata


slyfer89
30-01-2012, 18:32
Nuovo giro,nuova corsa e nuova domanda :)
mi trovo alle prese con una DBGrid collegata ad un datasurce che a sua volta è collegata ad una ADOQuery....fin qui nulla di strano,ma vorrei che una volta eseguita la query e visualizzato il risultato sulla tabella,cliccando su una riga dei risultati,i valori di quella riga venissero copiati in una label,esempio tabella con 3 colonne:
col1 col2 col3
A B C

clikko sulla riga e la label dovrebbe contenere ABC
ho provato con label.caption:=DBGrid.Fields[0].AsString+DBGrid.Fields[1].AsString+DBGrid.Fields[2].AsString;
ma come risultato ho sempre e solo la prima riga cioè se nella mia tabella avessi
col1 col2 col3
A B C
d e f
1 2 3

se clikko sulla terza riga ottengo sempre ABC...
qualcuno sa aiutarmi?

alka
30-01-2012, 18:45
Invece di lavorare sul controllo TDBGrid, quindi sulla griglia, estrai i dati dal record corrente del DataSet che è correlato alla griglia tramite il TDataSource, cioè agisci direttamente sul componente TADOQuery.

Quando navighi nella griglia, non fai altro che spostare il record corrente su quel DataSet; accedendo ai campi (es. tramite il metodo FieldByName del DataSet) otterrai i valori per il record attualmente selezionato.

Se l'obiettivo è visualizzare i dati su un'etichetta di testo, comunque, puoi sfruttare direttamente il controllo TDBText e associarlo al DataSource/DataField corrispondente: il DataSource è lo stesso della griglia, mentre il DataField è il campo da visualizzare.

Facendo così, senza scrivere una riga di codice, avrai i dati che ti servono mostrati a video e aggiornati a ogni cambiamento di selezione del record corrente sulla griglia.

Ciao! :ciauz:

slyfer89
31-01-2012, 10:01
problema risolto con label.caption:=DataSource.DataSet.FieldByName('Nom e').AsString

alka
31-01-2012, 10:38
Originariamente inviato da slyfer89
problema risolto con label.caption:=DataSource.DataSet.FieldByName('Nom e').AsString

Avresti risolto ancora prima con un normale TDBText, che svolge esattamente lo stesso compito ma non richiede di scrivere codice aggiuntivo (da verificare e testare, e mantenere aggiornato). :fagiano:

slyfer89
31-01-2012, 10:49
no xk mi serviva visualizzare tutti i risultati in una tabella e poi con il dbclick selezionare cosa visualizzare nella label

alka
31-01-2012, 11:09
Originariamente inviato da slyfer89
poi con il dbclick selezionare cosa visualizzare nella label

La questione del "doppio clic" l'avevi omessa. ;)
Meglio dire sempre tutto...

Ciao! :ciauz:

Loading