Nyomtatást? Szeretném azzal a <Nyomtatás> dialógablakkal, ami a Win-be be van építve, ahol lki lehet választani a nyomtatót és egyéb beállításokat lehet tenni..

Nyomtatást szeretném azzal a <Nyomtatás> dialógablakkal lerendezni, ami a Win-be be van építve (pl.: Explorerben a Fájl-Nyomtatás...-ra ez jön be), ahol ki lehet választani a nyomtatót és egyéb beállításokat lehet tenni... és szeretném tudni, hogyan lehet ezt meghívni és paraméterként fájlokat adni neki; hogy még húzósabb legyen, DOS-ban nyomtatott fájlokat kellene a felhasználó által kiválasztott nyomtatóra küldenem...
Keresgéltem már az API-s függvények között de nem leltem rá...

Köszönöm a segítséget!
Mutasd a teljes hozzászólást!
Ez a tudástár...
Nem hagyta helyben javítani, de itt van:
uses ShellApi; ... ShellExecute(Handle,'print',pchar(Filename),'', SW_SHOW);
Mutasd a teljes hozzászólást!

  • A Dialogs fülön van a PrintDialog és a PrintSetupDialog. Tedd rá őket a formra. Így működik:
    if TPrintDialog1.Execute then
    begin
    //itt végezd el a nyomtatást
    end;
    Mutasd a teljes hozzászólást!
  • A helpből van (TPrintDialog.Execute):
    procedure TForm1.Button1Click(Sender:TObject); var I, Start, Stop: Integer; begin PrintDialog1.Options := [ poPageNums, poSelection ]; PrintDialog1.FromPage := 1; PrintDialog1.MinPage := 1; PrintDialog1.ToPage := PageControl1.PageCount; PrintDialog1.MaxPage := PageControl1.PageCount; if PrintDialog1.Execute then begin { determine the range the user wants to print } with PrintDialog1 do begin if PrintRange = prAllPages then begin Start := MinPage - 1; Stop := MaxPage - 1; end else if PrintRange = prSelection then begin Start := PageControl1.ActivePage.PageIndex; Stop := Start; end else { PrintRange = prPageNums } begin Start := FromPage - 1; Stop := ToPage - 1; end; end; { now, print the pages } with Printer do begin BeginDoc; for I := Start to Stop do begin PageControl1.Pages[ I ].PaintTo(Handle, 10, 10); if I <> Stop then NewPage; end; EndDoc; end; end; end;
    Mutasd a teljes hozzászólást!
  • Adott szöveg nyomtatása:
    var
    RE: TRichEdit;
    begin
    RE := TRichEdit.Create(Self);
    try
    RE.Lines.LoadFromFile('YourFile.txt');
    RE.Print('YourFile.txt');
    finally
    RE.Free;
    end;
    end;
    Mutasd a teljes hozzászólást!
  • Igen, ezt a printdialogos megoldást én is ismerem, és az nem az igazi, mert ott konkrét fájlt nem tudok megadni; a második az izgalmasabb, de kétlem, hogy DOS-ban fájlban nyomtatott fájlra - ami hemzseg a vezérlőkarakterektől - is működik, amúgy kipróbáltam, de hibaüzenetet kaptam:
    "Control '' has no parent window."
    pedig egy egyszerű procedurába tettem be, az usesbe beraktam a 'ExtCtrls, ComCtrls'-eket, de nem. Az a nekem kellő dialógablak amit pl. az explórer is használ szimpatikusabb lenne, és gondolom, annak fájlt is megadhatnék, amit ő már tudna szépen nyomtatóra küldeni.
    Azért köszi.
    Mutasd a teljes hozzászólást!
  • Szerintem te csak egyszerűen nyomtatni akarsz. Van egy kódom nézd meg hátha jó:


    <? print ("<LINK REL=\\\\"alternate\\\\" HREF=\\\\"mit" MEDIA=\\\\"print\\\\">"); ?>
    Mutasd a teljes hozzászólást!
  • Bocs. Tedd még hozzá:

    RE.Parent := Self;
    RE.PlainText := true

    És akkor nem kapsz olyan üzenetet.
    Amúgy nem értelek a printdialogoddal. Az explorer saját dialógusait írtó nehéz kibányászni. Van egy másik mód is:

    uses ShellApi; ... ShellExecute(Handle,'print',pchar(Filename), SW_SHOW);
    Mutasd a teljes hozzászólást!
  • <LINK REL="alternate" HREF="valami.html" MEDIA="print">

    A valami.html helyére bármit berakhatsz, mittudomén, például .doc-ot.
    Mutasd a teljes hozzászólást!
  • Ez a tudástár...
    Nem hagyta helyben javítani, de itt van:
    uses ShellApi; ... ShellExecute(Handle,'print',pchar(Filename),'', SW_SHOW);
    Mutasd a teljes hozzászólást!
  • Az az igazság, hogy a problémám a helyi USB-s nyomtatóra való nyomtatvány küldésben van, amit ezzel a dialógosdival szeretnék kikerülni, ugyanis már utánnanéztem mindenféle print-es DOS parancsnak, amivel csak helyi illetve hálózati nyomtatóra tudtam kiküldeni az anyagomat a helyi USB-s nyomtatóra meg nem!

    Próbálkoztam ezekkel: ShellExecute(Handle,'print /d:+'printer.ServerName+'\\\\'+printrer.ShareName,pchar(Filename), SW_SHOW); --> ez működik hálós nyomtatóval, de ha USB-s a nyomtató akkor nem, pedig a sharename értéke USB001. Ezt a paramétert sajnos nem ismeri a szerencsétlen PRINT Utasítás mint például ha LPT1: ugyanez a paraméter

    Remélem felvilágisító voltam.

    (Amúgy már körberágtam a tudástárban a hasonló témájú anyagokat és abból voltam olyan okos... csak mégse. Próbáltam a NET USE ... utasítással átvariálni az USB-s nyomtatót, de a füle botját se mozgatta.)

    Köszi a figyelmet. Pistván
    Mutasd a teljes hozzászólást!
  • Nem teljesen egyértelmü számomra, hogy te most vajon DOS ablakból akarod indítani a nyomtatást? Mert akkor szerintem ez nem fog menni.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd