TartalomFriss hozzászólások
Új fórum témákAktív fórum témákGoogle hirdetések |
Delphi-5 nyomtatás USB nyomtatóval
csg, 2009, június 20 - 16:41
Üdv Mindenkinek! Kezdőként Delphi-5-öt használok. Párhuzamos porttal Segítséget kérek. Van-e valakinek ötlete, hogy tudnám Köszi. »
|
KeresésBelépésIndex TechPC FórumOrigo TechbázisSG.hu
|
Nyomtatás Delphi 7-ben.
Sajnos senki nem tudott segíteni,
ezért áttértem a Delphi 7-re.
Az USB porton keresztül itt sem megy
a képernyő tartalom nyomtatása.
Delphi-ben programozók nem találkoztatok
még ezzel a problémával ?
Cs.G.
Az a helyzet, hogy a Windows
Az a helyzet, hogy a Windows 2000 óta csak driver-en keresztül lehet a portokat elérni, közvetlenül nem. Ha USB akarsz használni akkor erre találsz a freepascal.extra.hu -n komponenst, de ez csak az USB vezérlésére jó. Ha a nyomtató fel van telepítve akkor mi szükség lenne mással nyomtatni? A nyomtatásra pedig már van a fórumon megoldás feltéve.
Üdv.: Totó
Delphi-7 nyomtatás USB nyomtatóval
Az a helyzet, hogy tudom a portokat csak driver-en keresztül lehet elérni, a soros portok elérésére én is használok egy ComPort nevű driver-t. Én az USB portot nem akarom vezérelni!
A meglévő programot, ami egy hagyományos párhuzamos porttal rendelkező nyomtatóval tökéletesen nyomtat, egy USB-portos nyomtatóval szeretném használni. Csak azzal nem működik. Ezt tulajdon képpen a Windows-nak kellene biztosítani.
Cs.G.
RE: Nyomtatás Delphi 7-ben
Szia,
Fura, de nem kéne köze legyen az USB-nek a nyomtatáshoz. Esetleg arra tudok gondolni, hogy a nyomtató drivere nem támogat valami olyan dolgot, amit te szeretnél vele csinálni.
Figyu, amikor én így közvetlenül írogattam nyomtatóra, én mindig megrajzoltam előtte egy image-ra (TImage) osztály, és utána StretchDraw-val rárajzoltam a nyomtatóra. Nem hinném hogy olyan égbekiáltó különbség lenne, de egy próbát megér. A CopyRect-et nem próbáltam, szintén megérné kipróbálni StretchDraw-val.
Nyugi, most én azzal szívok, hogy egyik ügyfelünk vett kéttálcás nyomtatót, és most szeretné ha a programunkból lehetne választani melyik tálcára nyomtasson.
Itt van egy ezeréves programrészletem, 2001-ben csináltam a Honvédségnek egy szolgálatvezénylő programot, az nyomtatott így közvetlenül: (régi kód, de másként csinálnék már benne jópár dolgot... :-D ) (remélem nem csúszik szét a kód)
Menyus
var Rec: TRect;
Mar, Akt, Mekkora : longint ;
imSeged : TImage ;
begin
if printdialog.Execute then begin
screen.cursor := crHourGlass ;
Mar := Im.Picture.Graphic.Height ; Akt := 0 ;
Printer.BeginDoc;
while Mar > 0 do begin
imSeged := TImage.Create(Application) ;
imSeged.Visible := false ;
if Mar >= 1022 then
Mekkora := 1022 else Mekkora := Mar ;
Rec.Top := (Printer.PageHeight-trunc(1022*2.8)) div 2 ;
Rec.Left := (Printer.PageWidth-trunc(Im.Picture.Graphic.Width*2.8)) div 2 ;
Rec.Right := Rec.Left + trunc(Im.Picture.Graphic.Width * 2.8) ;
Rec.Bottom := Rec.Top + trunc(Mekkora * 2.8) ;
try
imSeged.Width := im.picture.graphic.width ;
imSeged.Height := Mekkora ;
imSeged.Canvas.CopyRect(rect(0,0,im.picture.graphic.width,Mekkora),
im.canvas,rect(0,Akt,im.picture.graphic.width,Akt+Mekkora)) ;
imSeged.picture.Bitmap.PixelFormat := pf24bit ;
imSeged.Canvas.pen.color := clblack ;
imSeged.Canvas.pen.width := 1 ;
imSeged.Canvas.MoveTo(0,0) ;
imSeged.Canvas.LineTo(imSeged.Width-1,0) ;
imSeged.Canvas.LineTo(imSeged.Width-1,imSeged.Height-1) ;
imSeged.Canvas.LineTo(0,imSeged.Height-1) ;
imSeged.Canvas.LineTo(0,0) ;
Printer.Canvas.StretchDraw(Rec,imSeged.Picture.Graphic);
if Mar >= 1022 then
begin Akt := Akt + 1022 ; Mar := Mar - 1022 ;end else
begin Akt := Akt + Mar ; Mar := 0 ; end ;
if Mar > 0 then Printer.NewPage else Printer.EndDoc ;
imSeged.Free ;
except
Printer.Abort;
Printer.EndDoc ;
Screen.Cursor := crDefault ;
imSeged.Free ;
raise;
end;
end ;
end ;
Screen.Cursor := crDefault ;
end;
Nyomtatás Delphi7-ben
Szia,
Köszi a segítséget. A nyomtatókkal nincs baj. Minden USB-s nyomtató így viselkedik. A fenti programrész jól bevált eddig.
Tökéletesen nyomtatott a hagyományos nyomtatókkal. Tulajdon képpen ezzel a képernyőn megrajzolt grafikát "másolom rá" a nyomtatóra. Az USB-s nyomtatók is látszólag nyomtatni akarnak, de csak egy üres lap jön ki minden féle hibaüzenet nélkül. Nem hiszem, hogy az általad megadott programrész másként viselkedne, de ki fogom próbálni.
Cs.G.