quello che credo vuott ti stesse dicendo è che se nel tuo codice scrivi:
If sDevice = "Stampante" Then Paint.Font.Size = Round(Paint.Font.Size * F_GAMBERETTO_STAMPA, -2)
Print Paint.Font.Size
Message(Paint.Font.Size)
il round entra in funzione solo quando l' espressione nell' IF è vera , ovvero quando il device è stampante altrimenti il round non viene eseguito e quindi non viene eseguito l' arrotondamento
Si avete ragione ma dopo, successivamente, ho postato del codice meno confuso (ProvaGian_2) che ingloba nell'If anche Message e Print. E comunque anche prima (ProvaGian) usando le tue precauzioni, cioè stampando su file, appena uno usava stampa otteneva i valori da me postati.
L'unica cosa che posso aggiungere per spiegarmi meglio è che chiamare passo 3 stampa e passo 4 stampa, non spiega nulla il passo 3 stampa è l'adeguamento per la stampante del font.size ridimensionato per rientrare nel rettangolo e il passo 4 stampante è praticamente il ritorno al size originale.
Forse occorreva un esempio più semplificato ma siccome era codice di cui avevamo discusso in precedenza, ed era quello che mi ha, per così dire, ispirato la domanda...
Il punto comunque rimane questo è o non è lecito passare alla funzione ROUND un'espressione? E se è lecito, è lecito interrogare il codice come faccio io:
Paint.Font.Size = Round(Paint.Font.Size * 1.3441, -2)
Print Paint.Font.Size
perché se questo è giusto allora il mio Gambas non funziona o meglio non arrotonda.