[ Krsta @ 22.02.2002. 01:26 ] @
Koristim crystal report 6.0 za stampanje tekstva iz Visual Basica,
osnovne stvari sam provalio, ali nikako ne mogu da iz VB-a zadam path slike
i ta slika da se u CR odstampa.
Pravim neki program koji bi korisnik u samom programu izabrao sliku i gde je
potrebno da se ta slika kasnije odstampa sa dodatnim tekstom.
Voleo bi da i neko odgovori na pitanje ili da mi preporuci neki drugi nacin
za stampu, tj. Active X ili neki dodatak za VB.
[ jc denton @ 22.02.2002. 07:43 ] @
Koliko ja znam, Crystal Report je preteca danasnjem Data Report-u. Koju ver . VB-a koristis?
Da bi koristio data report u VB6, moras da imas konekciju na data source (baza).

Ako ne planiras da se bakces sa bazama onda Printer objekt zavrsava sve bez problema (mada snjim moze da se odradi dosta ozbiljnih stvari).

Malo sam ovo zaboravio, ali trebalo bi da bude ovako :

dim slika as picture - slika koju stampas
set slika = loadpicture("putanja do slike") - inicijalizacija obj. slika
printer.paintpicture slika, 0, 0

pogledaj detaljno paintpicture metodu, moze da vrsi stretch slike kako hoces i ostale korisne stvari

bitno je i da se postavi .scalemode za Printer, recimo :

printer.scalemode = vbcentimeters - znaci da ce sve velicine koje koristis biti u cm,
recimo :
printer.paintpicture slika, 1, 1,1,1
odstmapace sliku ciji je gornji levi ugao odaljen od margina po 1 cm, sirine i visine 1cm


za tekst :
printer.currentx - koordinate za stampanje teksta
printer.currenty
printer.print "tekst" - obrati paznju na ovo, zato sto print metoda ne stoji u listi


printer.enddoc - start stampe

ovo je najprostije, a ako hoces malo slozenije pogledaj property-je i metode za Printer Object.

Pozdrav, zemljak !!!
[ Krsta @ 26.02.2002. 22:49 ] @
Od skoro koristim VB6, tako da DataReport nisam koristio, mada
CrystalReports (ne onaj standardni iz VB-a) je odlican za srednje
slozenije stvari.
Sa obicnim print objectom ne mogu lepo da formatiram stampu, bar
do sada nisam uspeo.
Na primer ako hocu da stampam neki tekst u vise kolona tako da tekst u jednom redu ima isto rastojanje, npr:
xxxxxx xxxxxxxx xxxxx
xxxxxx xxxxxxxx xxxxx
xxxxxx xxxxxxxx xxxxx a u nastavku da bude slika.

Ako imas neko resenje za ovaj problem voleo bih ili da postujes
kod ovde ili posalji na Mail.
[ TJMoFo @ 27.02.2002. 06:50 ] @
[quote]Krsta:
Koristim crystal report 6.0 za stampanje tekstva iz Visual Basica,
osnovne stvari sam provalio, ali nikako ne mogu da iz VB-a zadam path slike
i ta slika da se u CR odstampa...

Ja sam koristio CR 7.0, i takođe nisam uspio da u report postavim sliku čiji bi se sadržaj mijenjao u run-timeu. Lično sam više nego ubijeđen da CR - ni verzije 6 ni 7 - (treba tražiti novije verzije!) tu mogućnost i ne podržavaju.

Ako ti je neophodno da praviš izvještaj sa slikom, iz VB-a napravi izvještaj kao HTML fajl i pokreni IExplorer sa tim fajlom, a u HTML-u upiši putanju slike, i sav ostali tekst. Malo je zamorno pisati sve te komande print, print, print, ali sam fazon radi brže nego kroz CR.
[ jc denton @ 27.02.2002. 11:54 ] @
Citat:
Krsta:
Od skoro koristim VB6, tako da DataReport nisam koristio, mada
CrystalReports (ne onaj standardni iz VB-a) je odlican za srednje
slozenije stvari.
Sa obicnim print objectom ne mogu lepo da formatiram stampu, bar
do sada nisam uspeo.
Na primer ako hocu da stampam neki tekst u vise kolona tako da tekst u jednom redu ima isto rastojanje, npr:
xxxxxx xxxxxxxx xxxxx
xxxxxx xxxxxxxx xxxxx
xxxxxx xxxxxxxx xxxxx a u nastavku da bude slika.

Ako imas neko resenje za ovaj problem voleo bih ili da postujes
kod ovde ili posalji na Mail.


Ovaj kod bi trebalo da zavrsi posao oko stampanja tabela. Samo unesi tvoje parametre pogledaj parametre) i ostalo ce kod da uradi sam.
Ja sam ovde koristio picture box, ali ovo mozes da primenis i na printer i na form objekt. (pomocu picture boxa mozes da napravis i mali print preview)
Inace, verovatno si primetio da se tekst moze stampati i preko slike u transparent modu. To ti omogucava da odstampas pozadinu tabele, pa onda tekst preko nje.

Set stampac = Picture1 ' ovde stavi umesto Picture1 - Printer, a inace moze i Form
stampac.ScaleMode = vbCentimeters ' radimo u cm
' matrica za probu
Dim podaci(4, 4)
a = False
For i = 0 To 4
For j = 0 To 4
a = Not a
If a Then
podaci(i, j) = "12345.67890"
Else
podaci(i, j) = "qw"
End If
Next
Next
' parametri
brkol = 5 ' br. kolona
mleva = 1 ' razmak od leve margine
mgornja = 1 ' razmak od gornje margine
kolrazmak = 0.5 ' razmak izmedju svake kolone
redrazmak = 0.5 ' razmak izmedju redova
sirinakol = 0.5 ' sirina kolone u cm
maxy = 0 ' maskimalna y koordinata
' stampa
For i = 0 To 4
If i = 0 Then ' za prvi podatak
stampac.CurrentY = mgornja
Else
stampac.CurrentY = maxy + redrazmak 'maksimalna visina polja
End If
treny = stampac.CurrentY ' trenutna y koordinata
For j = 0 To 4
stampac.CurrentX = mleva + j * kolrazmak + j * sirinakol
If stampac.TextWidth(podaci(i, j)) > sirinakol Then
' koliko karaktera staje u jedan red polja
For k = 1 To Len(podaci(i, j))
redupolju = Left(podaci(i, j), Len(podaci(i, j)) - k)
If stampac.TextWidth(redupolju) < sirinakol Then
brredaupolju = Int(Len(podaci(i, j)) / Len(redupolju)) ' koliko redova u polju
stampac.Print redupolju ' stampamo prvi red u polju
Exit For
End If
Next
'stampa ostalih redova u polju
For k = 1 To brredaupolju
red = Mid(podaci(i, j), k * Len(redupolju) + 1, Len(redupolju))
stampac.CurrentX = mleva + j * kolrazmak + j * sirinakol
stampac.Print red
' sada racunamo visinu reda na osnovu 'najviseg' polja
If maxy < stampac.CurrentY Then maxy = stampac.CurrentY ' pamtimo max y koord
Next
Else
' ako duzina teksta u polju ne prelazi sirinu polja
stampac.Print podaci(i, j)
End If
stampac.CurrentY = treny
Next
Next

End Sub


[ jc denton @ 26.03.2002. 18:27 ] @
Resenje za promenu slike koja je u CR-u :

Umesto 'staticne' slike koristiti linkovani OLE objekt (obavezno cekirati 'Link' checkbox).

Posle je lako...
[ gio1000 @ 27.03.2002. 01:44 ] @
Kud ces preciznije stampati nego sa CurentX i CurentY.
Mozes koristiti takodje i Tab
Printer.Print Tab(x); Text1
Printer.Print Tab(x); Text2
Printer.Print Tab(x); Text3

picture1.picture = LoadPicture("c:\slika.bmp")
Printer.paintpicture (picture1.picture,x,y)
Printer.EndDoc
[ Krsta @ 29.03.2002. 00:09 ] @
Hvala ljudi snasao sam se !!!
[ kaan @ 05.07.2002. 12:35 ] @
Kako bih mogao na ovaj nacin da odstampam DataGrid sa podacima(Predpostavljam da moram da kreiram izvestaj, ali mozda ima nesto sto ne znam)

Uopste me interesuje kako mogu da neke rezultate u datagrid-u prebacim u DataReport (standardni iz VB6) i stampam
[ Krsta @ 05.07.2002. 13:46 ] @
Onaj kod sto sam ti napisao u temi "Kreiranje izvestaja u VB 6.0",
sa njim mozes to da uradis, samo sto ides redom, rekord po rekord.
Obicna print naredba.