Newsgroup: it.comp.lang.visual-basic
Titolo: allineamento a Dx

ciao
devo creare una procedura che stampi dei numeri
e riportare la somma al fondo..
Ovviamente mi servirebbe che i numeri siano allineati a destra..
esiste qualcosa o qualche modo per farlo?
Grazie
Ciao
MArco G.


Sapere da dove vengono questi "numeri" sarebbe utile per darti una mano, cmq
puoi usare il datareport oppure l'oggetto printer, a seconda del grado di
complessità della stampa.
Se la stampa è una robetta semplice col datareport in pochi minuti il gioco
è fatto.

 ha scritto nel
messaggio news:2n8qk3F...@uni-berlin.de...

I numeri vengono inseriti dall'utente per creare una specie di report di
dati derivanti da alcuni macchinari! ma non è questo il problema...
il problema è che se io uso
printer.print "10"
printer.print "100"
printer.print "1000"
printer.print "20000"
il risultato sarà ovviamente
   1
   10
   100
   1000
    .......
invece vorrei :
        1
      10
    100
....... ecc. ecc. ecc
Grazie

     100
Cito un certo massimo.Per allineare a sinistra non devi far altro che
impostare lo stesso
printer.CurrentX per le diverse righe.
Per l'allineamento a destra devi scrivere il codice che si ricavi la
CurrentX in base alla larghezza della stringa.
Nel caso del 2000, devi prima impostare dove vuoi che arrivi la parte destra
della stringa per es. in una variabile
destra = printer.width
poi devi fare:
CurrentX = destra - printer.textwidth("2000")Mi sembra abbastanza chiaro.
-- 
Per diventare grandi non bisogna avere paura di essere piccoli
Per rispondere in privato elimina dall'indirizzo "togliquesto"
MasterDavidex - David Ruscelli

Puoi anche fare in modo molto semplice:
Aggiungi a sinistra del numero un numero di spazi pari alla 
differenza tra lo spazio massimo di stampa e la lunghezza del numero:
print space$(n-len(trim$(str$(1000))))+trim$(str$(1000))
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 print space$(n-len(trim$(str$(1000))))+trim$(str$(1000))
Il concetto di carattere proporzionale non ti č molto chiaro, vero?
Alberto

 print space$(n-len(trim$(str$(1000))))+trim$(str$(1000))
C'è però da tenere conto che perdi la funzionalità in caso di caratteri non
proporzionali.


 stampato.
Che è esattamente quella postata prima da Frank.
Ciao
Alberto

print space$(n-len(trim$(str$(1000))))+trim$(str$(1000))
Ok. E se non usi un carattere monospaziato??
Vabbe', diamo un aiutino. Bisogna utilizzare il metodo TextWidth e la
property ScaleWidth....
--
Ciao!
Luca Menegotto

sfugge il nome, e forse è wrappata anche da qualche metodo di 
Fi chiama Textidth, e torna il valore non in pixel ma in base a quanto
impostato con ScaleMode
--
Ciao!
Luca Menegotto

Albe V° wrote:
 > Alessandro Zanzi wrote:
 >
 >> Puoi anche fare in modo molto semplice:
 >>
 >> Aggiungi a sinistra del numero un numero di spazi pari alla
 >> differenza tra lo spazio massimo di stampa e la lunghezza 
del numero:
 >>
CUT
CUT
 >>Ci vorrebbe una funzione (credo che esista come API ma me ne
 >>sfugge il nome, e forse è wrappata anche da qualche metodo di
 >>VB) che ritorna l'ampiezza in pixel del testo come apparirebbe
 >>stampato. Uno stabilisce poi una dimensione massima
 >>ragionevole (con un output che include un numero abbastanza
 >>grande e di cifre grasse, senza uni diciamo), e mette su un
 >>abominevole ciclo che inserisce prima dell'ultimo numero, la
 >>somma, uno spazio, e ricalcola ogni volta la dimensione.
 >>Quando supera il massimo confronta quale delle due stringhe è
 >>più vicina al massimo medesimo, e sceglie quella con enne (o
 >>enne meno uno) spazi inseriti.
CUT
 >>Volendo spaccare il capello, allora devi proprio impazzire
 >>(sempre appoggiandosi sulla funzione di misura in pixel del
 >>testo grafico) e posizionare manualmente il cursore di stampa
 >>alla posizione opportuna. Ma, appunto, si cade negli effetti
ricordavo bene : le API che servono sono (da MSDN)
''---------------------------------------------------------------------
''---------------------------------------------------------------------
<<GetTextExtentPoint32>>
The GetTextExtentPoint32 function computes the width and height 
of the specified string of text.
BOOL GetTextExtentPoint32(
   HDC hdc,           // handle to device context
   LPCTSTR lpString,  // pointer to text string
   int cbString,      // number of characters in string
   LPSIZE lpSize      // pointer to structure for string size
);
Parameters
hdc : Handle to the device context.
lpString : Pointer to the string of text. The string does not 
need to be zero-terminated, since cbString specifies the length 
of the string.
cbString : Specifies the number of characters in the string.
lpSize : Pointer to a SIZE structure in which the dimensions of 
the string are to be returned.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
Remarks
The GetTextExtentPoint32 function uses the currently selected 
font to compute the dimensions of the string. The width and 
height, in logical units, are computed without considering any 
clipping.
Because some devices kern characters, the sum of the extents of 
the characters in a string may not be equal to the extent of the 
string.
The calculated string width takes into account the 
intercharacter spacing set by the SetTextCharacterExtra function.
''---------------------------------------------------------------------
''---------------------------------------------------------------------
SIZE
The SIZE structure specifies the width and height of a rectangle.
typedef struct tagSIZE { // siz
     LONG cx;
     LONG cy;
} SIZE;
Members
cx : Specifies the rectangle's width.
cy : Specifies the rectangle's height.
Remarks
The rectangle dimensions stored in this structure may correspond 
to viewport extents, window extents, text extents, bitmap 
dimensions, or the aspect-ratio filter for some extended functions.
''---------------------------------------------------------------------
''---------------------------------------------------------------------
infine bisogna stampare testo con
<<TextOut>> o <<TextOutEx>>
sempre da cercare su MSDN
