Usando Delphi VCL. Quando o usuário inicia um trabalho de impressão, eu exibo o TPrintDialog.
O ideal seria que a caixa de diálogo de impressão mostrasse o nome da impressora, o tamanho do papel e a orientação que o usuário utilizou por último (que salvei). Mas, embora eu possa passar a orientação para a impressora e fazer com que ela apareça na caixa de diálogo, não consigo encontrar uma maneira de fazer com que a caixa de diálogo mostre algo diferente da impressora e do tamanho do papel padrão.
Eu poderia criar uma caixa de diálogo personalizada que se parecesse com a caixa de diálogo de impressão e passar os parâmetros dessa forma, mas parece que deveria haver uma maneira de passá-los para o TPrintDialog.
Obrigado.
Scott
OK, não tenho certeza se estou fazendo isso corretamente do ponto de vista do StackOverflow. Por favor, desculpe se não estiver.
Resolvi o problema do VCL funcionar com a ajuda do Remy, mas agora estou preso na versão FMX para MacOS.
Trabalhando com a orientação da página, posso definir e obter a orientação com sucesso, mas isso não afeta a orientação na caixa de diálogo de configuração da página nem como a página é realmente impressa.
Aqui está o que eu tenho:
function getOrientation: string;
var
FPrintInfo: NSPrintInfo;
orientation: integer;
begin
result:='';
FPrintInfo := TNSPrintInfo.Wrap(TNSPrintInfo.OCClass.sharedPrintInfo);
FPrintInfo.retain;
PMGetOrientation(FPrintInfo.PMPageFormat, @orientation);
FPrintInfo.release;
if (orientation=1) or (orientation=3) then result:='portrait';
if (orientation=2) or (orientation=4) then result:='landscape';
end;
procedure setOrientation (const toSetS:string);
var
FPrintInfo: NSPrintInfo;
orientation: integer;
begin
if toSetS='portrait' then orientation:=1 else orientation:=2;
FPrintInfo := TNSPrintInfo.Wrap(TNSPrintInfo.OCClass.sharedPrintInfo);
FPrintInfo.retain;
PMSetOrientation(FPrintInfo.PMPageFormat,orientation,true);
FPrintInfo.release;
end;
Obrigado.