ilosc linii na drukowanej stronie

0

Na pierwszej stronie moze byc drukowane tylko 23 linie pliku textowego, ale na nastepnych juz 40, jak to napisac?

Moj kod, dotyczacy druku do 23 linii ponizej:

(...)
while not EOF (TxtFile) do
begin
Readln(TxtFile,StrPrint);
Printer.Canvas.TextOut(150,y,StrPrint);
y := y + LineSpace; //y=odleglosc od gory strony
Ctr := Ctr + 1; //ilosc linii
if Ctr > 23 then
begin
Printer.NewPage;
y:=400;
Ctr := 1;
Printer.Canvas.TextOut(150,y,aaa');
y := y + LineSpace;
end;
end;

prosze o pomoc

0

Nie wiem, czy o to chodzi, ale chyba masz na pierwszej stronie jakis tytul, swoje logo itp. a potem jedziesz z drukowaniem pliku tekstowego. Mialem cos takiego, tylko drukowalem linie z RichEdit W moim przypadku rozwiazalem to tak, ze odnosilem sie nie tyle do ilosci lini (23, 40), ile do konca strony. Tak wiec sproboj (jesli o to biega?) zamiast:

      if Ctr > 23 then

zastosowac:

      if Ctr > (Printer.PageHeight - 100) then

To "-100" jest dla dolnego marginesu.
Teraz chyba powinno ruszyc jak nalezy.

0

Dzieki wielkie, pomoglo.

[browar] Browar dla Ciebie ;)


Dash
Delphi vincit

0

Troche dopisalem... moze niepotrzebnie, ale zawsze...

Nie wiem, czy o to chodzi, ale chyba masz na pierwszej stronie jakis tytul, swoje logo itp. a potem jedziesz z drukowaniem pliku tekstowego. Mialem cos takiego, tylko drukowalem linie z RichEdit. W moim przypadku rozwiazalem to tak, ze odnosilem sie nie tyle do ilosci lini na stronie(23, 40), ale do konca strony.
Tak wiec sproboj (jesli o to biega?) zamiast:

      if Ctr > 23 then
        begin
           (cos tam, cos tam...)
        end;

zastosowac:

      if Ctr > (Printer.PageHeight - 100) then //gdy dojdzie do konca strony, to
         begin
            Printer.NewPage; //rozpocznie nastepna strone
           //Ustaw wartosci poczatkowe!!!na nowej stronie
            y:= ... //wartosc, gdzie chcesz zaczac pierwsza linie na nowej stronie 
            Ctr:=... //wyzerowany licznik (nie wiem jak to bedzie u ciebie, czy 1, czy 0?)
         end; //wyskakuje stad i robi dalej petelke

end; //dla while not EOF... do

To "100" jest dla ustawienia jakiegos dolnego marginesu i oczywiscie mozesz tu wpisac inna wartosc, np. 200, 300 itd.

Acha, drukowanie lini ze zbioru tekstowego na pierwszej stronie, z tego co rozumiem, ma sie zaczac od jakiegos ustalonego y. Ta warotsc y z pierwszej strony okresl jeszcze przed petla "for", bo potem jak dojdziesz do nastepnej strony, to ta wartosc bedzie zmieniona na inna, ktora podasz po tym Printer.NewPage (to co napisalem w przykladzie kodu u gory)

Moze beda potrzebne jakies lekkie modyfikacje, ale generalnie powinno chodzic.

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