Newsgroup: it.comp.lang.visual-basic
Titolo: MSHFlexGrid - Nascondere una colonna

Ciao a tutti!
Sapete mica se è possibile nascondere una colonna di una MSHFlexGrid??
Come si fa?
Grazie 1000
Luisa

devi impostare la sua proprieta COlWidth a 0 o a un numero bassissimo
ad es.:
mshflexgrid1.colwidth(5)=1        ' nasconde la colonna 5
attenzione che le colonne sono numerate da 0 in poi...
MarioH

 Sapete mica se č possibile nascondere una colonna di una MSHFlexGrid??


 > Sapete mica se è possibile nascondere una colonna di una MSHFlexGrid??


 wrote in message
9h6u7c$c0fr5$1...@ID-70152.news.dfncis.de...


 Si, mi sembra la soluzione migliore... Grazie 1000!
Peccato perň che la colonna nascosta in questo modo la si possa ancora
ridimensionare,
rendendola ancora una volta visibile. Ed č veramente bruttina come
situazione...

 situazione...
basta "vietare" all'utente di modificare la larghezza delle varie colonne...
e poi anche se non lo si vieta, l'utente deve andare "al millimetro" col
mouse a cercare una colonna di cui neanche conosce l'esistenza...
MarioH

 ha scritto nel messaggio
news:9h71oo$3v4$1...@nreadA.inwind.it...


 wrote in message
l7HZ6.95359$Uo3.2...@news6.giganews.com...


.colwith(x)=0
dove X č il n. di colonna !
ciao Pino

 mouse a cercare una colonna di cui neanche conosce l'esistenza...
Sě sě, hai perfettamente ragione, infatti anche io uso il metodo da te
consigliato. :)
Solo che un paio di clienti hanno "sgamato" la colonna :(
Ora impedisco che possano modificare la larghezza, come dici tu. Ma ho
dovuto sperimentare
sulla mia pelle che non tutti gli utenti sono imbranati... o che sono
sfigato! ;)
Ciao.


eheheh anche se lo sgamano, però, l'importante è che metta del codice che
impedisca di modificare impunemente tutte le colonne.
cioe, quando uno tenta di modificare il valore di una cella nella colonna
"protetta", lui se ne deve accorgere per non fare danni.
io nelle colonne nascoste ci metto gli ID del database access, o dei valori
long che rappresentano delle date, per poter ordinare il flexgrid con piu
facilità... se uno va e le tocca sono dolori... ::))))))
MarioH

 facilità... se uno va e le tocca sono dolori... ::))))))
Idem, stesso utilizzo :)
Non capisco perchè non abbiano implementato una funzione simile a quella
della TrueDBGrid della Apex. Cioè, in teoria secondo MSDN dovrebbe essere
così,
ma in pratica no.
Ho letto che ColIsVisible serve solo per sapere se la colonna è visibile, ma
nel senso
che se "scorri" la griglia troppo a destra o sinistra, fino a far scomparire
la colonna
che ti interessa, la suddetta proprietà ti dice se la colonna si vede o no.
Per carità, può essere utile, ma sarebbe molto + utile se funzionasse come
dovrebbe.
Ciao :)

 ma in pratica no.
a proposito, io vorrei prima o poi passare a questa famosa True DB Grid
della APex... ma e vale davvero la pena?
ha delle funzioni che la normale (e schifosa) DB grid del VB non ha ??
č facile usarla in modalitŕ unbound ?
io avevo abbandonato la DB Grid proprio perchč in modalitŕ unbound non
riuscivo ad aggiungere un rigo... sembra ridicolo, sembra la cosa piu banale
di questo mondo, ma non riuscivo a fare una specie di rows.add ...
incredibile...
che mi consigliate?
passo a TrueDBGrid?
MarioH

L'ho usata e la uso ogni tanto. Anche perchè mi sa che costa un bel pò,
quindi
di solito uso i componenti MS forniti con VB.
Personalmente la ritengo nettamente superiore, e usarla in modalità unbound
è
semplice. L'help è fatto bene ci sono esempi (20 tutorial mi sembra), che
spiegano chiaramente
quasi tutte le proprietà e i metodi della griglia.
E' compatibile con DAO e ADO (ci sono due versioni infatti: TrueDBGrid, e
TrueOLEDBGrid).
Ho usato la versione 6, non so se ne è uscita una più recente.
Ogni tanto qualche cosa stramba mi capitava.
Soprattutto quando usavo la modalità unbound e l'Xarray (una specie di
recordset per popolare
la griglia): spesso il Rebind e il Refresh non funzionavano, cioè la griglia
non si aggiornava.
E ho dovuto risolvere con qualche accorgimento (anche se poco ortodosso).
Spero che ti possano dare più informazioni
Ciao.


Scusate, io non ho mai utilizzato quella grid ma solo la normale
DataGrid. Non è possibile, come per la DataGrid, semplicemente creare
solo le colonne che si vogliono far vedere (a design-time oppure in
esecuzione riempiendo opportunamente la collection Columns)?
EMG

 riuscivo ad aggiungere un rigo...
Ma per quale motivo uno dovrebbe farsi del male utilizzando la modalità
unbound quando sono così comodi gli ADO Data Control (e i vecchi DAO
Data Control)? Cosa offre in più?
EMG

 esecuzione riempiendo opportunamente la collection Columns)?
Sì, ma supponi di voler fare in modo che, se lui fa doppio click su un
record,
lo possa modificare tramite una maschera, per esempio.
O che possa cancellarlo... per far questo devi identificare il record
tramite un ID.
Questo ID, che di solito nel db è anche la chiave primaria, lo metti in una
colonna
che è invisibile, e te lo tiri fuori quando vuoi.
Inoltre, se non identifichi univocamente i record, al momento della
cancellazione o
della modifica direttamente dalla griglia, ricevi un errore,
perchè non si sa qual'è il record che deve essere manipolato.
Scusami... ma non so spiegarmi meglio :)
Ciao.

 > riuscivo ad aggiungere un rigo...
La proprietà unbound è comoda perchè puoi mettere, per esempio, in una sola
colonna della griglia
più valori. Es.: Nome e Cognome, che magari nel db hai in due colonne
differenti.
Data e ora, idem come sopra. E tante altre cose che ora non mi vengono in
mente ma che ho fatto.
Una situazione nella quale uso la modalità unbound è quando devo modificare
i dati direttamente
dalla griglia: spesso ricevevo errori se usavo un data associato; e non
venivano aggiornati i dati.
Con l'XArray è un pò più complicato (ma mica tanto), ma hai il pieno
controllo.
Ciao :)

 Scusami... ma non so spiegarmi meglio :)
Infatti non ho capito dov'è il problema. Spiegamelo meglio...
EMG

 mente ma che ho fatto.
Ma questo si può fare benissimo a livello di recordset: basta che la
query preveda una colonna composta. Es.:
SELECT Cognome + ' ' + Nome AS Cliente FROM Clienti
EMG


per quale motivo? non certo masochismo, ma... libertà &
flessibilità...!!!!!!!!
del resto se la chiamano modalità "bound" ci sarà pure un perchè, no... ??
::)))))))
MarioH

 Infatti non ho capito dov'è il problema. Spiegamelo meglio...
Ok, per esempio ho appena realizzato un piccolo programmino a un amico che
ha una cartolibreria. Gestisce alunni, libri, fornitori, etc.
Poichè ha ancora un monitor a 14'... poichè e ciecato come una talpa... e
poichè usa i font grandi come impostazione predefinita (e guai a cambiare le
impostazioni predefinite a un cliente...), non avendo molto spazio, posso
visualizzargli solo pochi campi/colonne nella griglia. Grazie alla
TrueDBGrid, e alla sua proprietà di nascondere le colonne, nascondo quelle
superflue... poi, con dei check, gestisco la loro visualizzazione. Credo che
sia molto + semplice e veloce del dover ricaricare un recordset (magari con
istruzioni complesse, per esempio concatenare Nome e cognome -vedi quindi
anche l'utilità dell'unbound), ricostruire la griglia con la collection
Columns... Certo, potrei impostarne la larghezza delle colonne a 0, e
impedirne il ridimensionamento... Ma dovrei scrivere più codice, mentre ho
risolto il tutto con meno di 10 righe.
Cmq non è detto che il metodo che adotto sia il migliore, ma se ho degli
strumenti che mi vengono forniti, li uso.
Se poi la TrueDBGrid non posso usarla, mi ingegno e faccio in altro modo.
Ciao.


Vero.
Ma non so se si possono usare funzioni tipo Replace in SQL.
O altre.
Con l'unbound si risolvono problemi simili.
Lo ritengo + flessibile.
Ciao.

 flessibilità...!!!!!!!!
Allora fate conoscere anche a me dei motivi validi così magari mi viene
la fantasia.
EMG