INVALID CALL OR ARGUMENT

OCTOPUS 23/03/2005 17:06:28
#74547
Pessoal, estou com um problema ao utilizar o objeto Printer do VB. Em determinadas situações (principalmente em Win98se, utilizando impressoras laserjet 1100 pra frente), ao tentar ler a propriedade Printer.Width ou Height, obtenho uma excessão de "Invalid call or argument".

Se o problema fosse constante, não seria tão problema assim... Mas acontece que não o é. Tenho vários nestas condições e o problema aparece apenas em algumas máquinas.

Alguém já passou por problemas semelhantes ?
WEBMASTER 23/03/2005 17:35:20
#74556
Coloque parte do código, para ver se eu tenho como te ajudar ?
OCTOPUS 24/03/2005 08:42:43
#74628
OK, segue o local da checagem. Outras propriedades tais como PaperSize, são lidas sem problemas...

O contexto: é uma função que calcula as margens desejadas pelo usuário e verifica se é possível ajustar no papel selecionado. é nesta verificação que ocorre o problema. Centimetro é uma constante de valor 567. No Immediate, se colocar ?printer.width, já ocorre o erro mencionado.

Notei que este erro não acontece em WinXP... Estou desconfiado que o driver da impressora pode ter quebrado alguma compatibilidade de interface com o Printer. Independete do que seja, preciso dar solução... Se puder me ajudar, ficarei muito agradecido!!

If (CDbl(txtMargemEsq.Text) * Centimetro) + _
(CDbl(txtMargemDir.Text) * Centimetro) > Printer.Width Then
MsgBox "Margem não suportada para papel selecionado", , "Mensagem"
SetarMargens = False
txtMargemEsq.SetFocus
Exit Function
Else
SetarMargens = False
Exit Function
End If

[]'s
Reinaldo
OCTOPUS 24/03/2005 08:46:33
#74629
Correção do trecho de código acima:

If (CDbl(txtMargemEsq.Text) * Centimetro) + _
(CDbl(txtMargemDir.Text) * Centimetro) > Printer.Width Then
MsgBox "Margem não suportada para papel selecionado", , "Mensagem"
SetarMargens = False
txtMargemEsq.SetFocus
Exit Function
End If

[]'s
Reinaldo
Tópico encerrado , respostas não são mais permitidas