Taki problem: wysyłam z programu na drukarkę różne teksty, tym razem za pomocą kodu typu:
[code]int Szer = PageWidth;
int Wys = PageHeight;
Printer()->BeginDoc();
Printer()->Canvas->TextOut(Szer/10, Wys/10, "Wiersz pierwszy");
Printer()->Canvas->TextOut(Szer/10, 2 * Wys/10, "Wiersz drugi");
Printer()->Canvas->TextOut(Szer/10, 3 * Wys/10, "Wiersz trzeci");
Printer()->EndDoc();[/code]
Specjalnie do pozycjonowania używam wartości obliczanych z rozmiaru strony a nie konkretnych wartości pixeli, aby (mam nadzieję) uniknąć problemów. Jednak problemy są. Program musi drukować na atramentówce i igłówce i oto co się dzieje w kolejności:
- uruchamiam program
- wydruk na atramecie - OK
- potem wydruk na igłach - źle (za duże odstępy między wierszami)
- drugi wydruk na igłach - już jest OK
- znów wydruk na atramencie (po igłach) - źle (za małe odstępy między wierszami)
- ponowny wydruk na atramencie - już jest OK
Czyli generalnie na atramencie zawsze by dobrze drukowało, gdyby nie igły. Po przejściu na igły, czy to po atramencie czy zaraz po uruchomieniu programu (czyli jakby nie było w ogóle atramentówki) zawsze jest źle za pierwszym razem. Za drugim razem na igłach jest już dobrze.
Tam gdzie jest źle wygląda to tak, że są złe odstepy między wierszami, zaś rozmiar liter jest właściwie bez zmian.
Jeszcze taka ciekawostka: załóżmy że mam tylko atrament, bez igłówki. Gdy drukuje w normalnym trybie to jest OK. Jeśli zaś przełączę w tryb oszczędny atramentu to zawsze drukuje z tymi dużymi odstępami, jak na igłach za pierwszym razem. Co za cholera z tymi drukarkami! :-8
Nie podaję nazw drukarek bo przecież nie ma to znaczenia - program musi być uniwersalny. Jeśli ktoś może mi pomóc to bardzo proszę.
Dzięki dla wszystkich, którzy pomagają!