Newsgroup: it.comp.lang.visual-basic
Titolo: Informazioni semplici su GRIGLIA

Ciao,
mi trovo per la prima volta a
dover usare una Griglia.
4 anni fa ho usato il controllo Grid
di Visual Basic 4: dopo giorni di programmazione,
mi sono accorto che non permetteva di scrivere 
manualmente nelle celle. Quasi morivo lě.
E neanche salvava su file. 
Ora possiedo VB 5 Enterprise e prima di
mettermi con una Griglia, vorrei chiedervi
alcuni informazioni di base (che possono essere
utili anche ad altri) sul "mondo" Griglia.
Io cerco una griglia per poche colonne (max 15)
e poche righe (max 100) che:
----- 
salva il contenuto in un file
ricarica i file da lei salvati
stampa il contenuto 
copia il contenuto sul Clipboard
salva anche in almeno un formato accettato 
da Office o da Corel
permette di editare manualmente all'utente le celle
permette di selezionare un "rettagolo" qualsiasi di celle
(per la Copia; meglio se anche per la Stampa ed il Salvataggio)
permette ordiamento ascendente o discendente di colonne 
che hanno testo o che hanno numeri o che hanno date
(a proposito,
se una colonna ha una cella "mista", esempio con con testo e numeri,
che si fa ?
si istruisce preventivamente la colonna dicendo di considerare
tutto come testo o tutto come numeri ?) 
accetta l' Incolla dal Clipboard (di un suo precedente Copia,
ma anche quello di un altro programma noto come Office, Corel...)
permette font e sfondi delle celle colorati
---------
Ripeto non so nulla della Griglia.
Vorrei sapere se ce ne almeno una con tutte
queste funzioni assieme
(mi dite se sono eccessive, ed eventualmete quali ?),
possibilmente gratuita, sennň a pagamento (che costa poco).
Come detto possiedo VB 5 Enterprise,
ma il MSflexiGrid ed il DBGrid mi pare non salvano
su file, quindi le ho scartate (ho sbagliato?).
----------------
Molte grazie per le info.
Francesco

 Io cerco una griglia
[cut]
Assolutamente al caso tuo lo Spreadsheet dell'Office Web Components.
Ha la sola unica e vedi tu se trascurabile sfiga che occorre che sia
installato Office sul PC.
ciao
Alberto

Se tolgo queste condizioni, la rosa mi si ampia?
salva anche in almeno un formato accettato 
da Office o da Corel
permette di selezionare un "rettagolo" qualsiasi di celle
(per la Copia; meglio se anche per la Stampa ed il Salvataggio)
accetta l' Incolla dal Clipboard (di un suo precedente Copia,
ma anche quello di un altro programma noto come Office, Corel...)
------------------------------
Rimarrebbero queste:
salva il contenuto in un file
ricarica i file da lei salvati
stampa il contenuto 
copia il contenuto sul Clipboard
permette di editare manualmente all'utente le celle
permette ordiamento ascendente o discendente di colonne 
che hanno testo o che hanno numeri o che hanno date
(a proposito,
se una colonna ha una cella "mista", esempio con con testo e numeri,
che si fa ?
si istruisce preventivamente la colonna dicendo di considerare
tutto come testo o tutto come numeri ?) 
permette font e sfondi delle celle colorati

 Se tolgo queste condizioni, la rosa mi si ampia?
[cut]
Che io sappia no.
A te serve una griglia con funzionalità molto simili a Excel.
Puoi provare la MSHFlexGrid, che ha qualche cosina in più rispetto al
DataGrid, ma grossomodo siamo lì.
Per il salvataggio su formati foglio di calcolo, l'unico formato in cui puoi
salvare senza avere Office installato è il csv, ma salvi solo il contenuto,
non tutta la formattazione.
Credo proprio che ti serva lo Spreadsheet.
Oltretutto, se lo devi popolare da codice o caricando dei file, è
infinitamente più semplice rispetto alle griglie nate per gestire recordset.
Ciao
Alberto


Ehm, io so cos'č un file csv
e come caricarne i valori su un GRid o MSHFlexyGrid.
Ma cos'č un recordset? (non mi sparare)
Non č un file preesistente che ha dei valori con 
una certa formattazione (come puo' avereha il csv
con i suoi puntoevirgola o le virgolette...)
che possono essere caricati su una griglia
e poi da li anche salvati su file sempre di tipo recordset?

 Ma cos'è un recordset? (non mi sparare)
Non mi metto a spiegarti cos'è un recordset.
Ti faccio invece un discorso diverso.
Se non sai cos'è un recordset, è chiaro che le tue esperienze di
programmazione non sono avanzatissime.
Quindi, a questo punto, ti sconsiglio vivamente di addentrarti nell'utilizzo
di griglie classiche, che richiedono molto lavoro e una notevole conoscenza
del loro object model, per arrivare a solo la metà delle cose che vuoi fare
tu.
Se sul client dove dovrai installare il tuo applicativo c'è Office, con lo
spreadsheet dell'Office Web Component hai praticamente tutte le cose che ti
servono con poco sforzo.
Oltretutto, nell'help di OWC c'è tantissimo codice di esempio, e puoi anche
sfruttare il registratore di macro di Excel, visto che l'object model dello
spreadsheet è quasi identico a quello del worksheet di Excel.
Ciao
Alberto

Dunque io di Griglia come detto non so niente.
Programmo da 5 anni cose in animazione
o cose di Windows "hard-core" .
Quattro anni fa mi sono imbattutto  nel Grid
di Visual Basic 4 ma visto che non era affatto flessibile
e siccome sono abituato a quasi ribaltare Windows sottosopra
(bhč adesso esagero un po'.... ),
una cosa cosě statica mi ha impressionato in negativo e
quel progetto l'ho lasciato perdere.
Chidevo appunto se oggigiorno c'era qualche Griglia piů
flessibile (il copia e incolla ed il salvataggio su file...
mica poi la luna      ;-)     ).
Per entrare ed uscire uso il formato .csv e mi trovo bene.
Sai se esiste anche qualche formattazione particolare
per portare i dati sul Clipboard e vederli riposizionati sulle celle
della stessa griglia o anche di Office?
Capisco che queste domandine stancano un po',
ma mi basta sapere che una cosa c'č o non c'č,
č fattibile o meno... poi mi ci metto da solo.
Ma cercare quello che non so se neanche c'č ....
Attualmete come hai detto sto usando MSFlexGrid
di VB5  (senza "h" nel nome")
Ciao e grazie intanto. 

 Ma cercare quello che non so se neanche c'è ....
C'è. Si chiama Spreadsheet. Altrimenti, puoi provare a giocare con il
controllo Grid, ma il 50% di quello che ti serve lo devi fare a mano da
codice.
ciao
Alberto

Posto a sinistra della tua risposta,
perchè stavo uscendo dal frame del 
mio Newsreader.
...............
Io non posso proprio
obbligare l'utente ad usare 
lo Spreadsheet.
Ho quindi deciso di usare
il MSFlexgrid 
(non sono legato a nessun
database preesistente,
cioè la griglia si popola con l'uso
in corso della applicazione).
Sono riuscito a dargli parecchia 
flessibilità in questi 5 giorni:
Copia/Incolla  
Apri/Salva (.cvs) 
Stampa  
Edita la cella  
Ordina per colonna
--------
Se conosci il MSFlexiGrid
ho adesso 2 problemini:
se si può fare la selezione
di colonne non consecutive
e poi anche di righe non consecutive
(per quanto ho fatto non sono riuscito.
Magari c'è un workaround, come colorare
temporanemante gli sfondi col colore della selezione?)
Inoltre,
date due semplici colonne
contenenti entrambe stringhe
"Nomi di persona"   e  "Colore capelli"
ordinarle entrambe per alfabeto,
con priorità finale alla seconda.
Esempio,
avere la seconda ordinata per ord. alfabetico:
Biondi
Biondi
Biondi
Biondi
Castani
Castani
Castani
Rossi
Rossi
ma anche la prima ordinata per alfabeto,
senza ad andare a togliere la precedenza
alla seconda, cioè:
Andrea        Biondi
Carlo           Biondi 
Michele       Biondi
Roberto      Biondi
Antonio      Castani
Luca           Castani
Stefano      Castani
Andrea       Rossi
Massimo   Rossi
Il MSFlexigrid mi ordina bene la seconda, 
ma la prima non me la ordina proprio.
C'è un comando o devo riordinare io
a mano le voci nella prima colonna
(al limite c'è qualche esempio da qualche parte?) ?
Ovviamente nel mio caso le colonne non sono solo
due (sono quattro) e non saranno tra l'altro consecutive.
Non so come chiamare questa cosa, diciamo
"ordinamento per colonne con priorità"
----------
Grazie

 ho adesso 2 problemini:
Per l'ordinamento non vedo grossi problemi, anche se credo convenga agire
sui dati collegati alla griglia, anzichč sulla griglia.
Per la selezione di roba sparsa, io l'ho fatto con discreto successo sulla
datagrid, come ho postato qualche giorno fa in un altro thread.
Ma sempre operando sui dati, non direttamente sulla griglia.
ciao
Alberto


Qui invece non ho risolto.
Almeno con le proprietà ufficiali non ho trovato.
Quindi adesso mi mettero' a pensare a dei workaround.
Hint per incomiciare sono benvenuti.
Problema invece appena sorto:
Stampa della MSFlexgrid che ha molte colonne
tali da eccedere il foglio messo in orizzontale.
Qualcuno ha qualche routine per la stampa delle Griglie 
molto larghe? 
Quella che ho lavora bene per le eccedenze verticali
(riesce cioè a cambiare foglio), ma per l'orizzontale
non ci riesce.
Aiuti? 
(Devo fare le colonne che eccedono come 
fosse una nuova stampata?)
Thanks