Ima li neko resenje? Txt stampa u Delfiju6 pravi probleme na stampacima sa usb prikljuckom-nece da posalje stampanu informaciju koja se vidi na stampanje. Molim vas za pomoc! Neki tutorijal ili komanda koja ce ga naterati da prepozna stampac( sa ranijom komandom za stare stampace radi kao doksa).
Delfi-txt stampa
Zaključano
Zakačeno
> Ima li neko resenje? Txt stampa u Delfiju6 pravi probleme na stampacima sa usb
> prikljuckom-nece da posalje stampanu informaciju koja se vidi na stampanje. Molim
> vas za pomoc! Neki tutorijal ili komanda koja ce ga naterati da prepozna
> stampac( sa ranijom komandom za stare stampace radi kao doksa).
Razjasni pitanje. Šta znači prepoznati štampač, ne šalje štampanu informaciju i kako štampaš?
> prikljuckom-nece da posalje stampanu informaciju koja se vidi na stampanje. Molim
> vas za pomoc! Neki tutorijal ili komanda koja ce ga naterati da prepozna
> stampac( sa ranijom komandom za stare stampace radi kao doksa).
Razjasni pitanje. Šta znači prepoznati štampač, ne šalje štampanu informaciju i kako štampaš?
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Ako imas mogucnosti da snimis temp fajl, mozes da posaljes komandu "notepad.exe /p ime_fajla.txt" sto ce odstampati fajl na default stampacu
u pitanju je Delfi. U kodu postoji komanda koja txt stampu salje na LPT i to radi savrsenu. korisnicki ekran predvidja unos parametara na osnovu koji ih se pokupe podaci i na sledecoj formi koja je napravljena za potrbe stampe ti podaci se prikazuju. Postavljen je direktorijum u koji se smesta i iz koga se poziva txt stampa koja se prikazuje na navedenoj formi.Klikom na dugme STAMPA korisnik salje informaciju na stampu. Problem je sto kod stampaca sa USB prikluckom ta komanda ne reaguje. Putanja kojom se salje na LPT je u redu,treba mi naredba kao za LPT kojom cu stampu poslati na USB port. Inace fajl mogu da prozovem iz sacuvanog direktorijuma,ali ovo treba da koriste ljudi koji sve rade na klik i ne interesuje ih gde sam ja sta cuvao. Pozdrav
[img]
[img]
Zasto jednostavno ne bi uzeo device context stampaca i sam iscrtao tekst, ili koristi neki report... ko zna na koji stampac ce neko da spampa... mozda ce stampati na neki virtualni (pdf, e-mail sender,...) stampac?
Potpis
> koji se smesta i iz koga se poziva txt stampa koja se prikazuje na navedenoj
> formi.Klikom na dugme STAMPA korisnik salje informaciju na stampu. Problem je
> sto kod stampaca sa USB prikluckom ta komanda ne reaguje. Putanja kojom se
> salje na LPT je u redu,treba mi naredba kao za LPT kojom cu stampu poslati na USB port.
Pretpostavljam da kod LPT štampe samo kopiraš sadržaj txt fajla na LPT port? Taj pristup ne može funkcionisati kod Win only štampača (kakva je većina sada), imaš nekoliko alternativa:
1) Moraš sam raditi štampanje, Printer.BeginDoc, PRinter.TextOut i sl. Ili AssignPrn (koji interno radi na prethodni način).
2) Probaj neki report alat, beše FastReport ima nešto za štampanje txt fajlova.
3) Neki specijalizovan alat za štampanje txt fajlova iz DOS programa (tj. na način kako se ranije radilo), tu je ruski dosprn ili Printing (www.wings.co.yu/download).
4) Zavisno od štampača, čak i kod USB možeš pokušati sa raw slanjem teksta, preko Win Spooler funkcija. Ovo možeš probati i sa DPrintom, komand line verzijom Printinga.
> formi.Klikom na dugme STAMPA korisnik salje informaciju na stampu. Problem je
> sto kod stampaca sa USB prikluckom ta komanda ne reaguje. Putanja kojom se
> salje na LPT je u redu,treba mi naredba kao za LPT kojom cu stampu poslati na USB port.
Pretpostavljam da kod LPT štampe samo kopiraš sadržaj txt fajla na LPT port? Taj pristup ne može funkcionisati kod Win only štampača (kakva je većina sada), imaš nekoliko alternativa:
1) Moraš sam raditi štampanje, Printer.BeginDoc, PRinter.TextOut i sl. Ili AssignPrn (koji interno radi na prethodni način).
2) Probaj neki report alat, beše FastReport ima nešto za štampanje txt fajlova.
3) Neki specijalizovan alat za štampanje txt fajlova iz DOS programa (tj. na način kako se ranije radilo), tu je ruski dosprn ili Printing (www.wings.co.yu/download).
4) Zavisno od štampača, čak i kod USB možeš pokušati sa raw slanjem teksta, preko Win Spooler funkcija. Ovo možeš probati i sa DPrintom, komand line verzijom Printinga.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
izmenjeno 1 put, poslednji put Miloš Baić 23.05.2007. u 20:31
Izmene poruke
- Miloš Baić23.05.2007. u 20:31zapis iz teksta poruke
U sklopu JEDI projekta imaš par primera.
Ako ne uspeš, probaj u projekat uključiti TPrinterSetupDialog i/ili TPrinterDialog.
BTW, nemam trenutno instaliran JEDI projekat, ali mislim da se nešto može odraditi i sa TJvgReport!?!
Ako ne uspeš, probaj u projekat uključiti TPrinterSetupDialog i/ili TPrinterDialog.
BTW, nemam trenutno instaliran JEDI projekat, ali mislim da se nešto može odraditi i sa TJvgReport!?!
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Ako ostajes pri LPT, za ovo moraš da koristiš poseban program. A sad, za inat, ne mogu da se setim imena.
Evo:
http://www.google.com/search?q=USB+LPT+print
Evo:
http://www.google.com/search?q=USB+LPT+print
Deo koda izgleda ovako(na Click dugmeta Stampa)
AssignFile(F, 'a.tmp');
Rewrite(F);
Write (F, Chr(10), Chr(12)); {reset printera}
Write (F, Chr(27), Chr(64)); {reset printera}
Write (F, Chr(27), Chr(54)); {STAMPA KARAKTERE 128 - 159}
{write (F, Chr(27), Chr(54), Chr(27), Chr(64));}
Case frmPPra.RadioGroup1.ItemIndex Of
0: latinica(0);
1: latinica(1);
2: cirilica;
End;
CloseFile(F);
SCREEN.Cursor := crDefault;
FreeMem(Buf, BufSize);
S := Windows.GetVersion;
If S > 0 Then Komanda := 'cmd /c copy "a.tmp" lpt1:/b'
Else Komanda := 'command.com /c copy "a.tmp" lpt1:/b';
Problem je sta da stavim umesto zadnje dve linije koda,a da mi on stampu posalje na Usb stampac.
Hvala za svu dosadasnju pomoc,ali bi posebno molio ako neko moze da mi primeni ideju sa
notepad.exe /p ime_fajla.txt izmenama u kodu.Dobrodosla je i bilo koja druga izmena!
HVALA!!!
AssignFile(F, 'a.tmp');
Rewrite(F);
Write (F, Chr(10), Chr(12)); {reset printera}
Write (F, Chr(27), Chr(64)); {reset printera}
Write (F, Chr(27), Chr(54)); {STAMPA KARAKTERE 128 - 159}
{write (F, Chr(27), Chr(54), Chr(27), Chr(64));}
Case frmPPra.RadioGroup1.ItemIndex Of
0: latinica(0);
1: latinica(1);
2: cirilica;
End;
CloseFile(F);
SCREEN.Cursor := crDefault;
FreeMem(Buf, BufSize);
S := Windows.GetVersion;
If S > 0 Then Komanda := 'cmd /c copy "a.tmp" lpt1:/b'
Else Komanda := 'command.com /c copy "a.tmp" lpt1:/b';
Problem je sta da stavim umesto zadnje dve linije koda,a da mi on stampu posalje na Usb stampac.
Hvala za svu dosadasnju pomoc,ali bi posebno molio ako neko moze da mi primeni ideju sa
notepad.exe /p ime_fajla.txt izmenama u kodu.Dobrodosla je i bilo koja druga izmena!
HVALA!!!
Kada želiš da kopiraš na LPT port koristiš "lpt:" u kodu. Jesi li probao da kopiraš na "USB001:" ili kako se već zove port na koji pokušavaš da štampaš?
Drugo, pošto već imaš fajl snimljen (a.tmp) startuj (WinExec ili bolje CreateProcess) "notepad.exe /p a.tmp".
Predlažem ti da ostaviš i jednu i drugu opciju u programu, pa korisnik neka podesi.
Pošto će verovatno uslediti pitanje za CreateProcess, iskoristi ovo:
Ili pošto već imaš:
Komanda := 'cmd /c copy "a.tmp" lpt1:/b'
prepravi u/dodaj :
Komanda := 'cmd /c notepad.exe /p "a.tmp"'
Drugo, pošto već imaš fajl snimljen (a.tmp) startuj (WinExec ili bolje CreateProcess) "notepad.exe /p a.tmp".
Predlažem ti da ostaviš i jednu i drugu opciju u programu, pa korisnik neka podesi.
Pošto će verovatno uslediti pitanje za CreateProcess, iskoristi ovo:
Code:
function RunAndWait(FileName:String; Visibility : integer): integer;
var
zAppName:array[0..512] of char;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil, zAppName, nil, nil, false, CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
Result := -1
else begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,cardinal(Result));
CloseHandle( ProcessInfo.hProcess );
CloseHandle( ProcessInfo.hThread );
end;
end;
function RunAndWait(FileName:String; Visibility : integer): integer;
var
zAppName:array[0..512] of char;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil, zAppName, nil, nil, false, CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
Result := -1
else begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,cardinal(Result));
CloseHandle( ProcessInfo.hProcess );
CloseHandle( ProcessInfo.hThread );
end;
end;
Ili pošto već imaš:
Komanda := 'cmd /c copy "a.tmp" lpt1:/b'
prepravi u/dodaj :
Komanda := 'cmd /c notepad.exe /p "a.tmp"'