Cerco il metodo print tra quelli della griglia e, meraviglia delle
meraviglie, non lo trovo...
Orbene, l'uso dell'oggetto printer mi pare duretto, specie considerando che
non l'ho mai effettivamente utilizzato, se qualcuno avesse una soluzione
meno scomoda gli sarei molto grato se me la proponesse :)
Tutto cio' che ho a disposizione e' una MSFlexGrid imbottita di dati da un
provider esterno di cui io non so nulla. Con questa flex grid posso farci
quel che mi pare purche' poi la rimetta a posto, tanto durante la stampa il
mio OCX e' invisibile.
Avevo pensato di setparentarla su un form nascosto e stampare quello, poi il
mio capo mi ha fatto notare che i dati dovrebbero essere stampati tutti, non
solo quelli visibili, percui l'idea e' stata cassata...
Inoltre a foglio devo anche mettere delle intestazioni, da ripetersi su ogni
foglio...
Se qualcuno ha suggerimenti mi fa un favore :)
Ciaotutti,
Alessandro
Anni fa' avevo iniziato una cosa del genere a carattere generale (un gestore
della stampe) poi ho lasciato perdere, troppo dura, ma se fai una cosa
dedicata in 1-2 settimane ne salti fuori.
Salve
Dbg
*Alessandro* ha scritto nel messaggio
>Vi ricordate il famigerato ocx da 6000$ che devo emulare? Ci sono quasi...
A
>questo punto non mi rimane che stampare la mia famigerata flex grid.
>
>Cerco il metodo print tra quelli della griglia e, meraviglia delle
>meraviglie, non lo trovo...
]zac[
[Come e' noto il suono dello sparo non fai in tempo a sentirlo :)]
Ciaotutti,
Alessandro
Della Bianca Giuseppe <bep...@zacadria.it> wrote in message
news:DeIr6.8894$6W.7...@news.infostrada.it...
*Alessandro* ha scritto nel messaggio
PrnPrv3 lo conosci?
Da me, area VB...
O nel zito comune...
Hey Pal, quante volte l'avrò scritto?
--
GbC
http://www.chiappori.net
--
<*Alessandro* <inet...@hotmail.com> wrote in message
<98ncrk$2pi6d$1...@ID-68324.news.dfncis.de...
No :)
> Da me, area VB...
> O nel zito comune...
>
> Hey Pal, quante volte l'avrň scritto?
>
Downloadato... Il progetto in se' e' ottimo, il problema e' che io devo
stampare una griglia, i cui dati sono contenuti in una flex grid. I dati
devono essere adeguatamente grigliati, nel senso che se li faccio al forno
non va bene :)
Ora, ho visto un metodo PrintRefGrid, ma me ne sfugge assolutamente lo
scopo...
Prima di iniziare a sbattere la testa su questo progetto, dato che ho
appena finito di sbatterla su un form con dei trucchi da far impallidire
silvan, quanto costerebbe secondo te riuscire a mettere in griglia i dati
stampati?
Grazie,
Alessandro
Infine, per retrocompatibilita', il tutto deve essere grigliato come
l'originale a schermo.
Ottenere tutto cio' con un datareport e' piuttosto complesso...
Ma soprattutto, io mi domando, e' possibile che non ci sia un modo semplice
di stampare una griglia??
Con F1 era a dir poco banale, gli passavi solo le intestazioni, la griglia
la conteneva gia' lui. Ma 6000$ per stampare una griglia sono decisamente
troppi...
Ho provato a usare il printform coi barbatrucchi, peccato che con la
setparent non funzioni. Inoltre al secondo printform mi dice che con questo
tipo di stampante i form non si possono stampare.
Ciaotutti,
Asterix perplesso
G.G <gennaro...@tin.it> wrote in message
news:XoMr6.20549$x3.4...@news2.tin.it...
Da qui in poi vorrei che chi eventualmente ha da dire qualcosa prima di scrivere
ci pensi su un bel po'... Nel senso che non mi interessa sapere che per stampare
un form si può fare in questo o in quest'altro modo... Lo so anche io, grazie.
Sto parlando di poter gestire qualsiasi tipo di stampa con lo stesso set di
funzioni, in ogni programma che si scrive, per qualsiasi tipo di applicativo.
Per chi scrive in modo sistematico (lo fa per lavoro) questo è fondamentale.
Direi che il set di routines di stampa fanno parte della dotazione base di ogni
buon programmatore. PrnPrv fa tutto questo.
Dunque... In VB non esiste altro sistema valido per stampare che utilizzare
l'oggetto printer...
Qualsiasi alternativa non è professionalmente accettabile, nel senso che
rappresenta un escamotage di bassa lega per evitare di scrivere codice e
realizza delle stampe generiche; il che rende una applicazione di scarso livello
qualitativo e poco 'professionale'.
Inoltre ci si scontra inevitabilmente con delle limitazioni intrinseche nella
gestione delle stampe degli oggetti stessi. Utilizzatori di Crystal Report, ce
l'ho anche con voi.
Un esempio? L'ultimo lavoro che abbiamo fatto è un gestore di spool per una
ditta che deve stampare 40.000 resoconti di 6/7 pagine al mese, ed inviarli in
tutta Italia per posta. Avevano iniziato con Crystal Reports, poi ci hanno fatto
scrivere un programma per farlo. Gli stumenti pronti sono bellini e divertenti,
ma la flessibilità si perde. Se poi sono anche flessibili hanno dei costi
improponibili. Dove non si risolveva il problema? Intanto il numero di pagine
non era fisso... Poi alcune sono in orizzontale ed altre in verticale... Le
verticali andavano stampate in fronte retro... In ogni pagina si doveva inserire
il codice a barre per l'imbustatrice...
Quindi, per generare pagine di stampa di buon livello non si può fare altro che
crearne direttamente i contenuti. Sembra complesso, ma una volta compreso il
meccanismo diventa banale.
Nel caso di una griglia basta scorrerne le righe e le colonne con un ciclo, ed
inviarne i dati attraverso una delle funzioni previste; la coordinata Y è
facilmente parametrizzabile. Se volete un esempio basta richiederlo qui nel NG
che provvedo ad inviarlo al SC.
Dal punto di vista strettamente logico, il ciclo sarebbe questo:
din NumeroPagine as integer
dim InizioPagina as boolean
dim CoordinataY as single
dim PrimaRiga as single 'Y in centimetri della prima riga
PrimaRiga = 2 'supponiamo che la prima riga disponibile sia a 2 cm dal margine
superiore)
dim FinePagina as single 'oltre questa misura non stampare, in centimetri
FinePagina = 27 'in cm
NumeroPagine = 0
InizializzaRoutineDiStampa
InizioPagina = true
do
if InizioPagina = true then
StampaIntestazioni 'vedi PrintHeader di PrnPrv
NumeroPagine = NumeroPagine + 1
StampaModuloVuoto 'questa te la scrivi tu ed è la tua pagina senza i
dati
CoordinataY = PrimaRiga
InizioPagina = False
end if
for l=1 to NumeroColonne
' per dati di larghezza fissa si possono usare
' PrintInLef, InRig, InCen...
' la PrintJust usa una variabile locale lOfs che ti riporta la
coordinata
' Y dopo il riallineamento su più righe del testo... così puoi ripartire
da lì...
PrintInLef 2,CoordinataY,DatiColonna1,Font,FontSize,FontBold,0
PrintInLef 2+1,CoordinataY,DatiColonna2,Font,FontSize,FontBold,0
PrintInLef 2+4,CoordinataY,DatiColonna3,Font,FontSize,FontBold,0
PrintInLef 2+7,CoordinataY,DatiColonna4,Font,FontSize,FontBold,0
PrintInLef 2+18,CoordinataY,DatiColonna5,Font,FontSize,FontBold,0
next l
se RigaSuccessivaGriglia > RigheGriglia then
'fine dati griglia!
' ho stampato tutto!
StampaFondoPagina
exit do
else
SpostatiRigaSuccessivaGriglia
end if
se CoordinataY = FinePagina then
StampaFondoPagina 'vedi PrintFooter di PrnPrv
InizioPagina = True
else
CoordinataY = CoordinataY + Interlinea
end if
while
Non mi pare sconvolgentemente complesso...
Ed è molto flessibile...
Bada... In alcun caso voglio convincerti; ma qui realizziamo software
commerciale. In alcuni casi dobbiamo stampare centinaia di pagine, ed alla fine
del gioco le funzioni di stampa ce le siamo riscritte.
--
GbC
http://www.chiappori.net
--
PS:
Scusa... Ho riletto bene il tuo messaggio...
Costerebbe?
Non voglio farlo io...
Fallo tu, così da qui in poi saprai come si fa :))
PrintRefGrid...
Stampa una pagina di carta millimetrata, e serve come riferimento per sapere le
coordinate di dove andare a stampare... Per quanto Windows prometta
l'indipendenza dall'hardware è sempre raccomandabile stamparsi la griglia di
riferimento, per sapere quali effettivamente sono le coordinate fisiche
dell'area utilizzabile.
... per cosi' dire :)
archivio il tuo post, e me lo tengo per qualche momento in cui il cervello
sara' in funzione. sperando che lo sia in modo particolarmente brillante,
dalla scorsa che ho dato...
aggiungo solo, se ci sono urgenze, che il nostro bravo ilMes (*) aveva fatto
un ocx per stampare i recordset, che direi funzionasse. non so se lo ha
ancora fuori sul suo sito. se e' per il collo alessandro potrebbe provare a
chiedere a lui...
(*) ero agli inizi: gliel'ho chiesto, e me l'ha mandato, con codice di
attivazione... io ero terrorizzato, non pensavo che un essere umano potesse
produrre un oggetto simile. poi l'ho anche conosciuto di persona e da allora
sono cresciuto 15 cm buoni :)
ciao, a.
GbC <-...@O-O.OOO> wrote in message
news:eT5s6.23606$6W.13...@news.infostrada.it...
> StampaModuloVuoto 'questa te la scrivi tu ed č la tua pagina senza i dati
E qui casca l'asino :))
I casini sono tre:
1) stampare la griglia vuota - StampaModuloVuoto?
2) allineare il testo alla griglia - CoordinataY = PrimaRiga?
3) impedire che il testo sfori i limiti stabiliti dalla griglia - E qui mi
perdo... Immagino che PrnPrv abbia un controllo per impedire al testo di
andare in giro per i fatti suoi, ma ancora non ho avuto tempo di guardare
con attenzione...
> PS:
> Scusa... Ho riletto bene il tuo messaggio...
> Costerebbe?
> Non voglio farlo io...
> Fallo tu, cosě da qui in poi saprai come si fa :))
>
Intendevo costo in termine di tempo, se parliamo di outsourcing devo
chiedere ai piani alti ;-)
Cmq visto che non ne stiamo parlando posso evitare di chiedere... :)
Il resto del messaggio me lo studio con calma domani tra un progetto,
l'altro e l'altro... In attesa che arrivi il quarto, che mi hanno gia'
prospettato oggi.
Come vedi il tempo abbonda...
E' per questo che ti chiedo: secondo la tua esperienza, e a questo punto
suppongo sia notevole, quanto ci vuole a prendere in mano una base come
PrnPrv, capire come funziona esattamente e ricavarne quanto serve a me?
Attento, non a TE, probabilmente tu in una giornata ribalti il codice come
ti pare, diciamo a un programmatore con discreta esperienza che hai assunto
ieri e che quindi non ha mai visto quel codice (quindi a uno nella mia
stessa situazione).
Giusto per capire la difficolta' dell'operazione, in modo da inquadrare la
scansione delle operazioni.
Ho tre progetti da finire e un quarto in arrivo, devo stabilire le priorita'
con una certa precisione. Se questo progetto lo completo in una o due
giornate, inizio da questo, altrimenti prima completo gli altri e poi
ricomincio da questo. Anche perche' il debug di questa parte mi sta gia'
costando troppe ore, se devo aggiungerci due settimane per la stampa e il
debug della medesima e' meglio che prima mandi fuori la parte DB del
progetto per avviare un'altra catena di smontaggio, poi faccia un giro sul
resto di quello che ho in mano ed infine pensi alla stampa.
> PrintRefGrid...
> Stampa una pagina di carta millimetrata, e serve come riferimento per
sapere le
> coordinate di dove andare a stampare... Per quanto Windows prometta
> l'indipendenza dall'hardware č sempre raccomandabile stamparsi la griglia
di
> riferimento, per sapere quali effettivamente sono le coordinate fisiche
> dell'area utilizzabile.
>
No, scusa, questa non l'ho capita... Riferimento rispetto a cosa? Rispetto
ad un A4? Se la stampante dell'utente per qualche ragione sua ha dei
riferimenti diversi ho modo di tutelarmi?
Ciao e grazie,
Alessandro
.........
>Da qui in poi vorrei che chi eventualmente ha da dire qualcosa prima di
scrivere
>ci pensi su un bel po'... Nel senso che non mi interessa sapere che per
stampare
]zac]
Tra tutte le domande che ti ho fatto la parola 'esiste' non la trovo...
Ciaotutti,
Alessandro
GbC <-...@O-O.OOO> wrote in message
news:lVjs6.29751$6W.25...@news.infostrada.it...
> Certo che esiste.
> Bye.
Più che impedire (?) ti dice fin dove è arrivato.
Ma io non voglio che vada dove gli pare :)
Io voglio che, data una griglia di dimensione fissa, il testo eccedente
venga tagliato.
Inoltre il testo deve essere allineato alla griglia, la quale puo' avere
righe di altezza variabile... Ma il testo deve sempre occupare una sola
linea, niente wrap.
Non mi pare cosi' banale ottenere questo risultato, per questo speravo ci
fosse qualcosa di pronto in giro.
Ciao,
Alessandro