169 похожих чатов

А кому-то удавалось кастомный размер бумаги выставить? Что-то вот такой код

у меня не работает. Если название размера задавать, то ОК, а вот прямое указание - не хочет.

TPrinterWin(Printer).GetPrinter(Device, Driver, Port, DeviceMode);
DevMode := GlobalLock(DeviceMode);
if DevMode <> nil then
try
DevMode.dmFields := DevMode.dmFields or DM_PAPERSIZE or DM_PAPERLENGTH or DM_PAPERWIDTH;
DevMode.dmPaperSize := DMPAPER_USER;
DevMode.dmPaperWidth := round(Widthmm * 10);
DevMode.dmPaperLength := round(HeightMM * 10);
TPrinterWin(Printer).SetPrinter(Device, Driver, Port, DeviceMode);
finally
GlobalUnlock(DeviceMode);
end;

1 ответов

17 просмотров

В Fr в D7 такая процедура, но не пробовала. Очень похоже) procedure TfrPrinter.SetSettings; var i, n: Integer; begin if FPrinterIndex = FDefaultPrinter then begin FPaperNames.Clear; for i := 0 to PAPERCOUNT - 1 do begin FPaperNames.Add(PaperInfo[i].Name); PaperSizes[i] := PaperInfo[i].Typ; if (PaperSize <> $100) and (PaperSize = PaperInfo[i].Typ) then begin PaperWidth := PaperInfo[i].X; PaperHeight := PaperInfo[i].Y; if Orientation = poLandscape then begin n := PaperWidth; PaperWidth := PaperHeight; PaperHeight := n; end; end; end; PaperSizesNum := PAPERCOUNT; Exit; end; FPrinter.GetPrinter(FDevice, FDriver, FPort, FDeviceMode); try FMode := GlobalLock(FDeviceMode); if PaperSize = $100 then begin FMode.dmFields := FMode.dmFields or DM_PAPERLENGTH or DM_PAPERWIDTH; FMode.dmPaperLength := PaperHeight; FMode.dmPaperWidth := PaperWidth; end else FMode.dmFields := FMode.dmFields and not (DM_PAPERLENGTH or DM_PAPERWIDTH); if (FMode.dmFields and DM_PAPERSIZE) <> 0 then FMode.dmPaperSize := PaperSize; if (FMode.dmFields and DM_ORIENTATION) <> 0 then if Orientation = poPortrait then FMode.dmOrientation := DMORIENT_PORTRAIT else FMode.dmOrientation := DMORIENT_LANDSCAPE; if (FMode.dmFields and DM_COPIES) <> 0 then FMode.dmCopies := 1; if ((FMode.dmFields and DM_DEFAULTSOURCE) <> 0) and ((Bin and $FFFF) <> $FFFF) then FMode.dmDefaultSource := Bin; FPrinter.SetPrinter(FDevice, FDriver, FPort, FDeviceMode); finally GlobalUnlock(FDeviceMode); end; GetSettings; end;

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта