Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delphi pocetnik, nesto o stampanju...

[es] :: Pascal / Delphi / Kylix :: Delphi pocetnik, nesto o stampanju...

[ Pregleda: 1512 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milan che

Član broj: 225022
Poruke: 10
*.dynamic.sbb.rs.



Profil

icon Delphi pocetnik, nesto o stampanju...09.06.2009. u 12:18 - pre 183 meseci
Krenuo sam skoro da radim u Delphiju, pravio sam neke sitne programcice, kao mali editor teksta na primer. U stvari to smo poceli na vezbama, pa sam ja to malo kuci dovrsio. Znaci, jedan memo u koji se kuca text i kasnije se moze sacuvati, nesto kao notepad. Hteo bi da stampam tekst koji otkucam ili ucitam iz .txt fajla i video sam da imaju komponente PrinterSetupDialog i PrintDialog. Video sam da se sa Execute otvara onaj prozor za izbor stampaca i sl.. Pretpostavljam da to onda zapamti izbor i da posle stampa na tom stampacu. Pa imam nekoliko pitanja.

1. Da li moram svaki put birati stampac preko jedne od ovih komponenti (u slucaju da necu da stampam preko default stampaca) ili mogu da podesim nekako da ova moja aplikacija zapamti sa kojeg stampaca da stampa i da uvek stampa na tom stampacu? Ako to moze, jel moze onda da mi se uopste ne pojavljuje taj Dialog kad ocu da stampam nego da omah pocne stampanje?

2. Kako u stvari da iskoristim ovu drugu komponentu da bi ostampao tekst iz Memo komponente (bilo ucitan iz nekog fajla bilo otkucan, mada to i nema veze kolko kontam), ne kontam kako da kazem tom dialogu sta da stampa?

3. Sta bi bilo kad bi hteo neki komplikovaniji fajl da odtampam, na primer word ili pdf? Kako bi njih ucitao, preko cega? Da li uopste moram ove fajlove (.txt, .doc, .pdf) da ucitavam da bi ih stampao?

 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Delphi pocetnik, nesto o stampanju...09.06.2009. u 13:32 - pre 183 meseci
Za takve stvari koristi TRichEdit komponentu.

Za printanje RichEdit1.Print
F
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi pocetnik, nesto o stampanju...09.06.2009. u 16:15 - pre 183 meseci
> ili mogu da podesim nekako da ova moja aplikacija zapamti sa kojeg stampaca da stampa i da uvek stampa na tom stampacu?

Možeš koristiti ovakvu funkciju, trebaš joj proslediti pun naziv štampača koji si negde ranije sačuvao.

Code:

procedure SetPrinterName(const APrinter: string);
var
  Device, Driver, Port: array[0..254] of Char;
  PrintHandle: THandle;
begin
  // Podesavamo naziv stampaca, ako stampac ne postoji bice selektovan default stampac
  if APrinter = '' then
    Printer.PrinterIndex := -1 // Stampacemo pomocu default stampaca
  else
    Printer.PrinterIndex := Printer.Printers.IndexOf(APrinter);

  // Forsiramo ispravnu incizijalizaciju stampaca jer ponekad nije dovoljno samo koristiti PrinterIndex
  Printer.GetPrinter(Device, Driver, Port, PrintHandle);
  Printer.SetPrinter(Device, Driver, Port, 0);
end;


> 2. Kako u stvari da iskoristim ovu drugu komponentu da bi ostampao tekst iz Memo komponente (bilo ucitan iz nekog fajla bilo otkucan, mada

Nikako, to nisu komponente za štampanje već odabir i podešavanje štampača. Možeš koristiti TRichEdit i njegovu Print metodu.

> 3. Sta bi bilo kad bi hteo neki komplikovaniji fajl da odtampam, na primer word ili pdf? Kako bi njih ucitao, preko cega? Da li uopste
> moram ove fajlove (.txt, .doc, .pdf) da ucitavam da bi ih stampao?

Ne moraš ako na ciljnom računaru postoji program koji ih može hendlovati (Word, AcrobatReader), dovoljno je da pozoveš ovo:

ShellExecute(0, 'print', PChar(PunaPutanjaDoFajla), nil, nil, SW_SHOWNORMAL);



 
Odgovor na temu

milan che

Član broj: 225022
Poruke: 10
*.dynamic.sbb.rs.



Profil

icon Re: Delphi pocetnik, nesto o stampanju...10.06.2009. u 01:33 - pre 182 meseci
Hvala vam mnogo, odradicu to sa RichEdit-om.

Citat:
Ne moraš ako na ciljnom računaru postoji program koji ih može hendlovati (Word, AcrobatReader), dovoljno je da pozoveš ovo:

ShellExecute(0, 'print', PChar(PunaPutanjaDoFajla), nil, nil, SW_SHOWNORMAL);


Molio bih ako moze pojasnjenje, da li bi se u ovom slucaju, pozivajuci ovo, stampalo na default stampac ili na neki drugi koji bih izabrao sa PrinterSetupDialog? Nije mi jasno kako taj Dialog funkcionise, sta vraca, da li to sto podesimo u njemu na pocetku kad pokrenemo aplikaciju vazi dok god je aplikacija ukljucena ili svaki put pre stampe moramo birati stampac. Ako bi moglo malo pojasnjenje oko toga, to me buni.

Hvala jos jednom.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi pocetnik, nesto o stampanju...10.06.2009. u 10:09 - pre 182 meseci
> Molio bih ako moze pojasnjenje, da li bi se u ovom slucaju, pozivajuci ovo, stampalo na default stampac

Na default sistemski štampač.

> ili na neki drugi koji bih izabrao sa PrinterSetupDialog?

Štampanje u tom slučaju vrši eksterni nezavisni program (Word, Acrobat) i na njega ne utiče podešavanje u tvom programu. Napomena, ima načina i da se iz tvog programa izvrše promene na sistemskom nivou (default štampač, parametri štampe) ali se to ne može raditi sa tim Print setup Delphi dijalozima.

> Nije mi jasno kako taj Dialog funkcionise, sta vraca, da li to sto podesimo u njemu na pocetku kad pokrenemo aplikaciju vazi dok god je aplikacija ukljucena ili

To podešavanje utiče na default Dephi Printer objekat (funkcija iz Printers.pas) koji se verovanto koristi svuda u VCLu za štampu.

> svaki put pre stampe moramo birati stampac. Ako bi moglo malo pojasnjenje oko toga, to me buni.

Ako ne biraš, koristiće se default sistemski štampač sa njegovim default podešavanjima.

 
Odgovor na temu

milan che

Član broj: 225022
Poruke: 10
*.dynamic.sbb.rs.



Profil

icon Re: Delphi pocetnik, nesto o stampanju...10.06.2009. u 14:54 - pre 182 meseci
Hvala Igore mnogo.

Koliko sam skontao, da bi vazilo ono sto podesim u PrintSetupDialog-u (npr. promenim stampac na neki drugi umesto defaultnog), moram koristiti onaj RichEdit.Print, za ShellExecute to ne vazi.

Da li se moze uz pomoc tog ShellExecute mozda birati na koji stampac da se stampa?

Kako bih stampao .doc, .pdf, ... fajlove ako bi trebalo da se stampa na stampac koji nije dafault?

Izvinjavam se za ovoliko cimanje, ukoliko je problem (zbog vremena ili bilo cega) da se ovde to objasni, dobro bi mi dosla i pomoc u vidu preporuke nekog sajta (ili knjige, tutorijala itd.) na kome je objasnjen mehanizam stampe, kako se bira stampac, kako se salje fajl na stampu i sl.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi pocetnik, nesto o stampanju...10.06.2009. u 17:20 - pre 182 meseci
> Da li se moze uz pomoc tog ShellExecute mozda birati na koji stampac da se stampa?

Potraži da li konkretna aplikacija (Word) podržava da se navede štampač kao parametar komandne linije.

> ako bih stampao .doc, .pdf, ... fajlove ako bi trebalo da se stampa na stampac koji nije dafault?

Promeniš dati štampač na default pa odštampaš, s tim što ti za to trebaju odgovarajuća prava pa takvo rešenje neće svuda raditi. Imaš i još jednu mogućnost ako je u pitanju Word (ili druga Office/Open Office aplikacija) da ga pozoveš kao OLE server, u tom slučaju možeš podesiti šta hoćeš i štampati kako hoćeš, bilo je ranije pitanja o tome pa potraži stare diskusije.

Evo ti primer kako se menja globalni kvalitet štampe, za promenu default štampača nemam primer, ali ih sigurno ima na netu.

Code:

procedure SetGlobalPrintQuality(const APrinterIndex: Integer; const AQuality: SHORT);
var
  Device, Driver, Port: array[0..80] of Char;
  DevMode: THandle;
  hPrinter: THandle;
  pDevmode: PDeviceMode;
begin
  Printer.PrinterIndex := APrinterIndex;
  Printer.GetPrinter(Device, Driver, Port, DevMode);
  OpenPrinter(Device, hPrinter, nil);
  if (Devmode <> 0) and (hPrinter <> 0) then
  begin
    pDevMode := GlobalLock(Devmode);
    if pDevmode <> nil then
    try
      pDevMode^.dmPrintQuality := AQuality;
      pDevMode^.dmYResolution := AQuality;
      pDevMode^.dmFields := pDevMode^.dmFields or DM_PRINTQUALITY or DM_YRESOLUTION;

      DocumentProperties(0, hPrinter, Device, pDevMode^, pDevMode^, DM_IN_BUFFER or DM_UPDATE);
      WinSpool.SetPrinter(hPrinter, 9, @pDevMode, 0);
    finally
      GlobalUnlock(DevMode);
    end;

    ClosePrinter(hPrinter);
  end;
end;

 
Odgovor na temu

milan che

Član broj: 225022
Poruke: 10
*.dynamic.sbb.rs.



Profil

icon Re: Delphi pocetnik, nesto o stampanju...10.06.2009. u 20:05 - pre 182 meseci
E hvala jos jednom, razgledacu malo i prostudirati ovo. Valjda cu nesto smuckati. :)
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Delphi pocetnik, nesto o stampanju...

[ Pregleda: 1512 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.