TPrintDialog w CBuilder /i Delphi/

4 отговора 182 прегледа
#1

TPrintDialog w CBuilder /i Delphi/

Zdravejte.
Do sega ne mi se beshe sluchawalo. Programa, napisana na CBuilder na iska da startira ako njama instaliran printer na PC-to. Razbrah che ima syshtija problem i v Delphi. Porovih se v mrejata, no reshenieto, koeto vidjah e "Instalirajte si printer". Njakoj da se e sblyskwal s tozi problem, da znae kak se reshawa i da iska da spodeli. :)

Отговор
в отговор на cwetalin #2

Re: TPrintDialog w CBuilder /i Delphi/

Проблемът определено не е в BCB-то или пък Делфи-то. Всяка вин програма ще изреве на умряло, ако не си инсталирал принтер и искаш да печаташ на принтера по подразбиране - дето го няма. По добре сложи на формата си TPrinterSetupDialog и при натискането на съответния бутон или каквото е там да изпълни следното:
PrinterSetupDialog1->Execute();
Не ти ли е хрумвало че може да има инсталирани няколко принтера на едно ПК - вкл. мрежови ? Как ще избереш напр. принтера на 2-я етаж ,по коридора в дясно ?

Отговор
в отговор на cwetalin #3

Re: TPrintDialog w CBuilder /i Delphi/

До колкото разбирам, можеш да бръкнеш в кода, нали?
Ако е така, добре. Ако не е така, то май наистина трябва да си инсталираш някакъв принтер...

За да не ти стартира въобще програмата, значи, че имаш грешка в самата инициализациа някъде.

Прост пример (работя на Delphi и за това ще е от там):

Имам форма, на която в един от компонентите трябва да се покажат и онагледят имената на всички фонтове, които мога да използвам. За предпочитане е да са принтерските фонтове, а не тези на екрана.

Ако директно във FormCreate извикам Printer.Fonts (списъка с фонтове на принтера по подразбиране) и в системата ми няма изобщо такъв принтер, ще имам отвратителна грешчица, която няма да разреши на програмата да продължи изобщо.

За целта - два варианта за решение:

1. Try... except... end:
 ............

try
lFonts := Printer.Fonts;
except
lFonts := Screen.Fonts;
end;
......


Но това е само за конкретния пример, да речем... Ти можеш да използваш нещо от сорта на:
 ............

try
Printer.GetPrinter(ADevice, ADriver, APort, ADeviceMode); //tuk moje da imash problemi,
//ako imash default printer,
//no toi ne e aktiven v momenta
except
//do s.th. else
end;
......


2. Провери дали списъкът на принтерите в системата не е празен
... Printer.Printers.Count = 0 (100% нещо подобно в CBuilder...)
и действай в зависимост от това.

Отговор
в отговор на Pocти #4

Re: TPrintDialog w CBuilder /i Delphi/

Jawno ne sym opisal sywsem dobre problema. Ne opitwam da pechatam. Imam prosto forma, w kojato slagam PrintDialog. Nishto poweche. Takawa forma ne moje da startira izobshto. Ne stigam do PrintDialog->Execute(). Problema idwa, kogato na sistemata njama instalirn nito edin printer.
Inache, blagodarja za otgoworite. Shte prodaljawam da opitwam warianti.

Отговор
в отговор на cwetalin #5

Re: TPrintDialog w CBuilder /i Delphi/

Problema se okaza slednija. Edna forma, t.e., dialog, pri mnogoto mu preprawjanija se okaza che ima TPrintDialog, kojto izobshto ne izpolzwam. I poneje tazi forma se syzdawa sys starta na prilojenieto....
Oshte wednyj vi blagodarja za otgovorite.

Отговор