Lucrez la un program de evidenţă persoane şi trebuie să printez diverse rapoarte. Programul este în wxGTK şi lucrează cu o bază de date în mysql, folosind API-urile corespunzătoare pentru C/C++. Nu sunt probleme până aici. Nu am optat neapărat pentru o aplicaţie doc-view (cu toate că am dezvoltat şi o astfel de variantă). Afişarea datelor (un tabel destul de simplu) se face pe o fereastră derivată din wxScrollWindow, şi sunt vizibile corespunzător. Pentru listarea la imprimantă am derivat din clasa wxPrintout. Tabelul se întinde peste mai mult de o pagină. Dacă vreau să văd fiecare pagină separat în preview sau, chiar să dau listare, nu îmi apare decât prima pagină. Mai ştiu că aş putea rezolva această problemă cu HTML easy printing, folosind o clasă derivată din wxHTMLWindow, dar nu am încercat încă. Mă chinui de vreo 2 săptămâni să găsesc o soluţie, în cazul mai multor pagini. Pentru una sau două, am reuşit, separând funcţia de desenare în secţiuni de goto şi return-uri. Ce mă pot face dacă am de desenat folosind o buclă for sau while, iar pagina se termină în toiul buclei, trebuind să treacă la una nouă? Şi mai ales dacă nu ştiu nici pe câte pagini exact s-ar putea întinde un astfel de tabel? Rog mult pe cei ce citesc acest răvaş, să mă ierte că vin cu astfel de probleme care nu ţin direct de mandriva (e doar S.Op. în acest caz) şi dacă au idee sau experienţă cu aceste probleme, să mă ajute. Mulţumesc frumos!
Autentificare
Meniu utilizator
Cine este online
There are currently 0 users online.
Cine este nou
- gogutu
- alexpetrut93
- CostiCampean
Topicuri noi
Ultimele comentarii
-
1 year 3 months agoAuthor: symbianflo
-
1 year 3 months agoAuthor: rich1974
-
1 year 4 months agoAuthor: symbianflo
-
1 year 4 months agoAuthor: symbianflo
-
1 year 5 months agoAuthor: pretender
-
1 year 8 months agoAuthor: symbianflo
-
1 year 8 months agoAuthor: rich1974
-
1 year 8 months agoAuthor: symbianflo
-
1 year 8 months agoAuthor: rich1974
-
1 year 8 months agoAuthor: symbianflo
Aplicatii noi
Powered by pkgs.org
Ai putea să izolezi problema și să uploadezi un exemplu scurt? Adică un program de sine stătător, care să nu facă altceva decât să afișeze niște pagini în print preview, așa cum ți se întâmplă ție. Ar fi mai ușor de discutat.
Și apropo, ar trebui să eviți goto-urile.
[url=http://counter.li.org/]Linux registered user #368449[/url]
Am mesterit un program de sine statator, pe care pot sa-l afisez, un program cat de simplu posibil, dar merge. La ce adresa sa-l trimit? Scuzele mele, dar sunt chiar novice, fac asta prima oara. As vrea sa trimit fisierul sursa si makefile, cu executabil cu tot, intr-un folder, pe care l-as arhiva. Vreau sa stiu doar, unde, si - cum.
Multumesc foarte mult! ono.
ono
Dacă arhiva nu are mai mult de 1MB atunci poți să o atașezi la următorul mesaj pe care îl scrii pe forum (vezi la "Additional Options...", sub caseta în care scrii mesajul). Dacă e mai mare atunci las-o fără executabil, doar sursele.
[url=http://counter.li.org/]Linux registered user #368449[/url]
Am afacut sa aiba mult sub 1 MB. O trimit imediat.
ono
Uite mai jos diff-ul cu modificările pe care le-am făcut. Am atașat și codul complet, poate ți-e mai la îndemână.
Pe scurt, am făcut variabila contor să fie membru al clasei MyPrintout, ca să nu o ia de la zero de fiecare dată când procesezi o pagină. Contorul se inițializează la începutul imprimării (OnBeginPrinting()). De asemenea, metoda Tabel() întoarce un rezultat care spune dacă a încăput sau nu conținutul. Și în while, nu mai scrii toate liniile până ajungi la sfârșit, ci doar atâtea linii câte încap. Acest lucru îl afli comparând poziția-părții-de-jos-a-liniei (pcrt.y + h) cu dimensiunea paginii (max_y), calculată anterior.
Probabil că soluția asta nu e tocmai elegantă, fiind făcută în pripă, dar măcar rezolvă problema.
[url=http://counter.li.org/]Linux registered user #368449[/url]
Multumesc foarte mult, Cosmine!
ono