[D7 + RAVE] - automatyczne przypisanie drukarki

0

Witam

Mam taki drobny problem (a czas nagli) - na jednym z komputerów w sieci działa uruchomiony 'procesor wydruków', który co określony czas drukuje na drukarce sieciowej raporty. Problem polega na tym, że na tym komputerze czasem ktoś pracuje i nigdy nie wiadomo która z zainstalowanych drukarek jest aktualnie domyślna, a wydruki z 'procesora' MUSZĄ iść zawsze na konkretną sieciówke.
Dotychczas w D5 zrealizowałem to następująco:

for i := 0 to printer.Printers.Count -1 do
begin
if printer.Printers[i] = ServiceDruk.pDane.FieldByName('value1').AsString then
  begin
   
  WynikA4.PrinterSettings.PrinterIndex := i;
  WynikA5.PrinterSettings.PrinterIndex := i;
   end;
end;

Może mało elegancko, ale działa i mogę 'w locie' przestawić drukarkę w razie awarii (nazwa drukarki jako parametr przechowywany w tabeli konfiguracji systemu).

Niestety, po przeniesienu kodu na D7 nie bardzo znajduje jak podczas działania 'procesora wydruków' przypisać wydruk do konkretnej drukarki, która nie zawsze jest drukarką domyślną, a to wszystko oczywiście bez interwencji usera...

0

jak ją znajdziesz (czyli w if) daj na początku
Printer.PrinterIndex := i;

a po co to?
WynikA4.PrinterSettings.PrinterIndex := i;
WynikA5.PrinterSettings.PrinterIndex := i;

0
Misiekd napisał(a)

jak ją znajdziesz (czyli w if) daj na początku
Printer.PrinterIndex := i;

a po co to?
WynikA4.PrinterSettings.PrinterIndex := i;
WynikA5.PrinterSettings.PrinterIndex := i;

To jest rozwązanie z D5, przypisanie drukarki do raportu w o parciu o QuickReport :) - a niestety nie widze odpowiednika w Rave

Co do Twojej propozycji, to niestety nie działa :( (w D5 takie rozwiązanie też nie działało)
To raczej powinno byc realizowane jako przypisanie drukarki do konkretnego raportu... tylko nie bardzo znajduje gdzie.. :(

0

No dobra.. troche sobie rozwiązałem..

W RAVE dla Report component jest właściwość Printer, tam tez mogę sobie wpisac drukarkę.. Jako chwilowe rozwiązanie przyjąłem powielenie raportów dla tych drukarek które będę używał (zasadniczo jedna stała + jedna awaryjna). Z poziomu Delphi, zależnie od potrzeby robie to przez datamodule2.RvProject1.ExecuteReport('Nazwa_raportu_dla_drukarki');

Teoretycznie jest możliwe przekazanie nazwy drukarki jako parametru, ale niestety coś nie bardzo to działa... W głównym projekcie rave dodałem parametr drukarka, przekazuje go przez
datamodule2.RvProject1.SetParam('Drukarka', '\SERWER\Lexmark Optra W810');

Potem próbuje ustawić dla OnBegforePrint (Report) podstawienie drukarki, kompiluje się bez błędu, ale niestety drukuje na drukarce domyślej... :(
Może tu jakaś podpowiedź?

0

Pozwolę sobie podnieść - modernizuje soft tamtego okresu, więc może wybór drukarki zrobiłbym bardziej elegancko.... łatwiej też będzie 'opanować' sytuacje przy zmianie drukarki...

Może ktoś z Was rozwiązał już problem wyboru drukarki (innej niż domyślana) przed wykonaniem raportu?

0

a co za problem? - PrinterDialog przecież masz - wystarczy go wywołać i tyle

1 użytkowników online, w tym zalogowanych: 0, gości: 1