Newsgroup: it.comp.lang.visual-basic
Titolo: tutti i Dettagli di un Record in verticale

Buongiorno a tutti.
Vi spiego il mio problema.
Premetto che lavoro in VB6.
Progetto di calcolo calorico degli alimenti
Ho una una form, con una griglia, dove in base ai criteri del cliente,
faccio vedere faccio vedere una parte dei dati disponibili, in quanto
tutti quanti occupano troppo spazio e non si vuole farli vedere in
prima battuta.
Se il cliente vuole vedere il massimo dettaglio possibile, si
posiziona sul record interessato, il programma esegue una query per
quel prodotto e si ottiene un recordset di dettaglio.
Il problema è come visualizzarlo.
In orrizontale non si può per i motivi di cui sopra.
Io vorrei far vedere il record in verticale, cioè a sinistra i nomi
dei campi, e a destra il loro valore.
Non so se c'è un controllo apposta.
Io l'ho fatto mettendo due textbox affiancate, dove sulla prima metto
i nomi dei campi, e sulla seconda il valore.
Il problema si pone quando certi valori sono molto lunghi e
oltrepassano la larghezza della seconda textbox, in questo caso il
valore va a capo, ma io mi perdo l'allineamento tra nomi e valori.
Una parziale soluzione è di impostare la scrollbar orrizontale per la
seconda textbox, in questo modo la funzionalità è ottenuta, ma
esteticamente è sgradevole?
Un aiutino?
grazie sam
Allego delle foto
Griglia
http://xs.to/xs.php?h=xs132&d=08421&f=riga676.jpg
Text con scroball orrizontale
http://xs.to/xs.php?h=xs132&d=08421&f=lista1610.jpg
Text SENZA scroball orrizontale e disallineamento
http://xs.to/xs.php?h=xs132&d=08421&f=lista2607.jpg
.

 
http://xs.to/xs.php?h=xs132&d=08421&f=lista2607.jpg
Perchè non usi una ListView?
-- 
Ciao Fede
By Chicco Production
http://bcp.freetools.it


Anzichè usare 'Text con scroball orrizontale',
perchè non usi una ListView
con due campi?


 esteticamente è sgradevole?
O disegni la form in maniera appropriata con una label per ogni nome campo
e una textbox per ciascun valore, dimensionadola ad hoc, oppure come ti han
detto una listview, anche se comunque, se una descrizione è molto lunga non
mi pare venga benissimo. La datagridview di .net ad esempio può avere
altezze riga differenti fra le varie righe, ma in VB6 non mi risulta sia
possibile.
Ma i dati sono solo visualizzati o anche modificabili?



Ci proverò
grazie
sam--



I dati in quella modalità sono solo visualizzabili
Alcuni dati sono molto lunghi ( 180 caratteri ) e non posso impiegare
tutto lo schermo disponibile.
Mi dispiacerebbe aprire un'altra form solo per questa visualizzazione.
Pensavo a una specie di pannello.
ciao e grazie
sam--

 Pensavo a una specie di pannello.
Te sulla form dove hai messo 2 texbox metti (se hai 10 campi), 10 label con
il nome del campo e 10 texbox dove metterai i valori.
Se un campo č 10 caratteri la fai piccola, se č 200 la fai grande.
Se cosě non c'entra e non puoi cambiare la dimensione della finestra, o
metti le texbox in un SSTAB, o gestisci un Vertical Scroll, oppure la
soluzione che a questo punto č la meno peggio, usi una listview.
Al limite ti crei un tooltiptext con il testo completo.

Al limite ti crei un tooltiptext con il testo completo.
Ho provato ora con una listview.
Non è che mi piace tanto il risultato.
Mi pare molto simile alla mia soluzione senza nessun  vantaggio in
più.
ciao sam--

metti le texbox in un SSTAB, o gestisci un Vertical Scroll, oppure la
cioè?
spiega SSTAB e Vertical Scroll
ciao sam--

 piů.
Il vantaggio č che una descrizione su 2 righe non va a scombinare sotto.
La tua assolutamente non č accettabile a livello utente, perchč mi trovo
valori shiftati.
Lo svantaggio č che o fai le righe piů alte (tutte), altrimenti devi
scrollare il testo.


Ad ogni modo non mi paiono soluzioni veloci AND carine.

 Text SENZA scroball orrizontale e disallineamentohttp://
xs.to/xs.php?h=xs132&d=08421&f=lista2607.jpg
Se vuoi mantenere quel tipo di interfaccia, te la puoi cavare usando
la funzione dell'API SendMessage con il messaggio EM_LINECOUNT, che ti
restituisce il numero totali di righe in un TextBox prendendo in
considerazione anche i ritorni a capo automatici.
Ti è sufficente confrontare, subito dopo aver aggiunto ognielemento di
dettaglio, le righe nel textbox di sinistra e di destra, e nel caso in
cui quello di destra ne abbia di più, accodare al primo i CRLF che
servono per pareggiare il conto.
Vado a spanne perchè non ho VB sottomano
'In un modulo, oppure come Private direttamente nella tua form
Public Declare Function SendMessage Lib "user32" Alias
"SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const EM_LINECOUNT = &HBA
e quindi quando generi il dettaglio
Dim countSX As Long, countDX As Long
Dim i As Long
'[...] dopo aver accodato il testo dell'elemento nei due textbox
countSX = SendMessage(textBoxSX.hWnd, EM_LINECOUNT , 0&, 0&)
countDX = SendMessage(textBoxDX.hWnd, EM_LINECOUNT , 0&, 0&)
For i=1 To (countDX-countSX)
   textBoxSX.text =  textBoxSX.text & vbCrLf
Next
' e passi al prossimo elemento

scrollare il testo.

Ad ogni modo non mi paiono soluzioni veloci AND carine.
condivido
ciao sam--



bene, metto anche questo da provare.
grazie
ciao sam--

 
http://xs132.xs.to/xs132/08421/prova115.gif
Andrea come fai a far vedere solo la tua foto senza tutta la pub del sito 
che ospita?
-- 
Greg 


Apparentemente... se già avessi 3 righe in più e dovessi scrollare
*verticalmente*, allora con i due textbox appaiati è molto più scomodo
da gestire e brutto rispetto ad un controllo "lista" vero e proprio.
Anche a livello di codice sarebbe più semplice perchè ogni riga
sarebbe trattata come un singolo elemento, non come due pezzi di
stringa scritti nei due controlli
Comunque, al di la della soluzione che ti accennavo nell'altro
messaggio (che ho simulato qui, e sembra ottenere l'effetto che
cerchi), se arrivi alla decisione di cambiare controllo allora fai 31
e invece di un ListView passa direttamente ad un controllo griglia che
ti consente il multilinea come vuoi tu e tutti i vantaggi di una lista
a colonne.
Un buon esempio di griglia, free:
http://www.vbaccelerator.com/home/VB/Code/Controls/S_Grid_2/S_Grid_2/article.asp

 che ospita?
Bhe quel sito manco lo conoscevo.
Quando fai l'upoload di un'immagine basta prendere fra i link che ti
propone (web, forum ecc.) quello "Direct Link", che è il link diretto alla
sola immagine.

 alla sola immagine.
Grazie Andrea, se ne impara una nuova ogni giorno.
Ti gratifico con la visione del mio bonsai di ulivo che in questi giorni sta 
arrivando a maturazione :)
http://xs432.xs.to/xs432/08422/100_1106940.jpg
-- 
Greg 

 
http://xs432.xs.to/xs432/08422/100_1106940.jpg
Mi sa che d'olio ce ne viene fuori poco :P



certo questa sarebbe la soluzione ottimale.
grazie luca
ciao sam--

Andrea [Work] ha scritto:

Infatti sono olive da tavola; ormai è qualche anno che raccolgo 15-20 olive.
Le metto 15 giorni in una tazza con acqua e sale cambiando spesso la'cqua.
Poi origano aglio peperoncino per 24 ore e poi in tavola. Ottime!
-- 
Greg 

 Poi origano aglio peperoncino per 24 ore e poi in tavola. Ottime!
Volendo si mettono anche semplicemente sotto sale e mi pare buccia
d'arancia e chicchi di pepe (su questo non sono sicuro).
Devono disidratarsi, ma poi bastano anche un annetto. Ma 20 olive non penso
sia un problema farle sparire :P
Chiudiamo l'OT prima che qualcuno si arrabbi :)