Newsgroup: it.comp.lang.visual-basic
Titolo: [domanda stupida] dimensionate contenuto FlexGrid in base a contenuto

Lo so, sar� un argomento che � gi� stato trattato, ma, forse complice
l'abbuffata di ieri sera, non trovo una cippa su Google. O meglio, l'ho
trovato per 
VB.NET
, ma a me serve su VB6.....
In poche parole ho una FlexGrid e vorrei aggiustare la larghezza delle
colonne in funzione del contenuto.
Grazie.

 wrote:

Solo per correggere il subject....

> colonne in funzione del contenuto.
Io mi memorizzo in un vettore il testo pi� lungo di ogni colonna mentre
carico e poi uso il codice sotto.
Uso la "OOOOOOOO" per fare una media. L'esattezza sarebbe memorizzarsi nel
vettore direttamente la TextWidth maggiore:
"iiiii" non � pi� largo di "WWWW" sulla griglia.
Solo che se carichi tante righe mi pare che la Len() sia meno onerosa.
    For j = 0 To .Cols - 1
      .ColWidth(j) = TextWidth(String(aRowMaxLen(j), "O"))	
    Next j
Forse con qualche API si fa comunque...

Andrea [Work] <andrea.isw...@gmail.invalid> wrote:

Sistema chiarissimo.
Solo un dubbio: la guida mi da TextWidth solo come metodo relativo a
Form, PictureBox o Printer. Cosa mi sfugge?
Intanto grazie!!!!  

 Intanto grazie!!!!
Forse perch� si appoggia a ScaleMode e simile, che hanno le form.
Credo che se utilizzi font diversi nella flexgrid potrebbe non funzionare a
dovere.
Fai qualche prova e verifica.
A me serviva in qualcosa di poco importante, e una volta visto funzionare
non mi sono fatto tante domande.

Andrea [Work] <andrea.isw...@gmail.invalid> wrote:

La stessa funzione che mi suggerisci tu messa nel codice del FORM su cui
� la FlexGrid funziona. Se la sposto su un modulo che contiene una
variabile di tipo Control che punta la stessa FlexGrid, non va pi� nulla
e mi viene detto che TextWidth � una funziona non definita! 

 e mi viene detto che TextWidth � una funziona non definita!
Ci stiamo arrotolando, mi sa. La FlexGrid non ha la TextWidth,
ma se usi lo stesso font alla stessa dimensione la larghezza di
una determinata stringa sar� la stessa che avrebbe sul form.
Quindi basta controllare la larghezza che avrebbe sul form, e usare
il valore rilevato per la larghezza della colonna della FlexGrid.
La logica dovrebbe essere pi� o meno quella di questo pseudocodice,
scritto al volo e ovviamente non testato:
********************
Dim LarghezzaTesto as long
Dim LarghezzaMax as long
Dim TestoCella as string
dim FontPrecedente as font
dim N as integer
dim M as integer
fontprecedente=me.font
me.font = flexgrid.font
for n=0 to flexgrid.numerocolonne ' per ogni colonna
larghezzamax=0 ' partendo da zero
for m=0 to flexgrid.numerorighe ' andiamo su ogni riga
testocella = testo nella cella N, M ' prendiamone il testo
larghezzatesto = me.textwidth(testocella) ' calcoliamone la lunghezza
' se la larghezza che abbiamo in memoria � minore, la aggiorniamo.
if larghezzamax<larghezzatesto then larghezzamax=larghezzatesto
next m prossima riga
' finite tutte le righe: assegnamo la larghezza massima trovata
' alla colonna corrente
flexgrid.larghezzadellacolonna N = larghezzamax
next n ' e proseguiamo con la prossima colonna.
' finito, rimettiamo a posto il font del form
me.font= fontprecedente
********************
Cos� a occhio, qui dovresti trovare molta pi� roba:
http://www.google.it/search?q=textwidth+colwidth+flexgrid
oppure con:
http://www.google.it/search?q=flexgrid+autosize
Probabilmente trovi anche la pappa fatta...
Bye, G. 

 
Appena ho un secondo ci guardo!

 a quest'ultimo, se lo faccio in un modulo mi manda a spendere!!!!
Basta che nella funzione, se la vuoi tenere nel modulo, passi come
argomento anche la Form, dovrebbe andare.

 argomento anche la Form, dovrebbe andare.
Ho continuato a passare slo la Grid, e poi mi sono riferito al suo
Parent.
Grazie ancora!