Gerador de relatorios em impressoras matriciais com TPrinter
05/02/2003
0
Olá Galera....
Estou precisando de ajuda. Estou criando um gerador de lay outs para relatorios em impressoras matriciais usando DRIVER GENÊRICO/SOMENTE TEXTO e o TPrinter. O meu problema é que defino o tamanho do papel mas quando vou passar as posições ele não tem uma medida exata sendo assim não consigo imprimir corretamente com nenhuma medida (pixel, milimetros, centimetros.). Gostaria de saber se alguem já fez algo parecido e pode me dar uma mão...
O codigo para definir o tamanho da página é esse:
procedure DefineTamanhoPapel(Width : integer; Length : integer);
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);
If hDMode <> 0 then
begin
pDMode := GlobalLock( hDMode );
If pDMode <> nil then
begin
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := 4000; (22,5cm)
pDMode^.dmPaperLength := 3175; (16,5cm)
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
end;
GlobalUnlock( hDMode );
end;
end;
Se eu ficar tentando até acertar o lugar que vai sair, blz ai consigo definir a posição, só que preciso passar as posições, pois o usuário poderá mudar a qualquer momento as posições no relatório.
Obrigado
Estou precisando de ajuda. Estou criando um gerador de lay outs para relatorios em impressoras matriciais usando DRIVER GENÊRICO/SOMENTE TEXTO e o TPrinter. O meu problema é que defino o tamanho do papel mas quando vou passar as posições ele não tem uma medida exata sendo assim não consigo imprimir corretamente com nenhuma medida (pixel, milimetros, centimetros.). Gostaria de saber se alguem já fez algo parecido e pode me dar uma mão...
O codigo para definir o tamanho da página é esse:
procedure DefineTamanhoPapel(Width : integer; Length : integer);
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);
If hDMode <> 0 then
begin
pDMode := GlobalLock( hDMode );
If pDMode <> nil then
begin
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := 4000; (22,5cm)
pDMode^.dmPaperLength := 3175; (16,5cm)
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
end;
GlobalUnlock( hDMode );
end;
end;
Se eu ficar tentando até acertar o lugar que vai sair, blz ai consigo definir a posição, só que preciso passar as posições, pois o usuário poderá mudar a qualquer momento as posições no relatório.
Obrigado
Anonymous
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)