[ zliki @ 10.09.2008. 12:54 ] @
| Pozdrav svima,
Imam mali problem koji se sastoji u sledecem:
Na primer, imam tabelu sa tri kolone
ID
Naziv
Opis
sada od te tabele zelim da kreiram report kao tabelarni prikaz.
Podesim propery za text kontrole na can grow=yes i za can shrink=yes.
E sada dolazi do problema. Naime polju Opis (memo) sadrzi veliku kolicinu podataka tako da kada se otvori report svi podaci se vide super ali mi se siri samo to polje, ostala polja ostaju istih dimenzija. Kako da, iz koda, "izmerim" visinu (height) polja Opis, te potom tu vrednost dodelim visinama za ostale kontrole tako da mi sva polja zauzimaju iste dimenzije?
Probao sam ovako>
Dim i as integer
i=Me.Opis.Height
Me.ID.Height=i
Me.Naziv.Height=i
ali nije dalo rezultata. Molim za neku ideju.
Nadam se da sam lepo formulisao pitanje
Hvala
|
[ domaci_a_nas @ 10.09.2008. 14:43 ] @
Evo mog predloga rešenja, što mora lako kad može i komplikovano...

U principu, ovaj kod broji koliko text u kontroli ima redova, pa na osnovu tog broja menja i visinu ostalih kontrola.
[ izonic @ 10.09.2008. 23:43 ] @
evo i moj primjer
[ Catch 22 @ 11.09.2008. 00:33 ] @
^ @izonic: Još samo da radi...
PS
Ali zato
primer urađen u Access 2007 (sačuvan u formatu Access 2002-2003) to automatski radi bez i jedne linije koda (!??!)
[Ovu poruku je menjao Catch 22 dana 11.09.2008. u 02:06 GMT+1]
[ izonic @ 11.09.2008. 01:11 ] @
evo tvoj primjer
[ Catch 22 @ 11.09.2008. 01:17 ] @
^ Čim pređe na jekavski linije okvira postanu nevidljive!???!!
Kod mene to izgleda ovako
[att_img]
[ Catch 22 @ 11.09.2008. 01:37 ] @
A isti taj fajl otvoren u Access 2002 gubi formatiranje (!!!!????)
[att_img]
[ domaci_a_nas @ 11.09.2008. 07:44 ] @
A moj primerčić ste tek tako odbacili

[ Catch 22 @ 11.09.2008. 09:18 ] @
^ Naprotiv!
Samo eto zanimljive konstatacije da se isti fajl (bez ikakvog koda) razlicito ponasa u zavisnosti od verzije Accessa, kojom se otvara.
Verzija Access 2007 ima dodatne opcije prilikom dizajniranja reporta, koje na ranijim verzijama ne postoje...
Klik na simbol u gornjem levom uglu, skoro sakriven, koji izgleda nešto kao [+] - daje dodatne opcije u padajućem meniju (Layout / Tabular), kojih mislim da nema u ranijim verzijama Accessa.
[att_img]
[ zliki @ 11.09.2008. 11:11 ] @
OK. Hvala vam svima na odgovorima, zaista ste bili mastoviti i iscrpni.
No da muka bude veca, meni i dalje ne polazi za rukom da ovo primenim.
Mada, posto imam na vistu na laptopu, predlazem, da ukoliko vam nije problem, mi neko objasni u par recenica kako da iskombinujem razlicite verzije accessa i primenim ovaj efekat.
Hvala jos jednom
[ izonic @ 11.09.2008. 11:58 ] @
Kod crtaj prebaci u modul tvog izvjestaja.
Polja koja hoces uokviravati preimenuj tako sto ces na postojece ime dodati 1 na kraju.
Primjer:
staro ime novo ime
ime ime1
prezime prezime1
Na on print grupe napr. Detail ako se tako zove pozovi funkciju crtaj (call crtaj)
Ukoliko ti je okvir tvojih polja vidljiv stavi ga transparent.
[ izonic @ 11.09.2008. 12:32 ] @
domaci_a_nas pogledao sam tvoj primjer i dobar je stim sto je pristup drugaciji.
Rjesavanje ovoga je moguce na 3 nacina.
1-Da u svakm polju prebrojimo broj karaktera te izracunamo kada ce biti prelom u novi red
te da ostale kontrole prosirimo na isto.
Ovo je i dobro ako je samo jedna kontrola ta koja bi se mogla prosiriti.
2. Drugi nacin je da podignemo izvjestaj te da na on print napravimo proceduru koja ce na
iscitati za svaki rekord najsiru kontrolu. Ovdje nastaje problem sto na on print nemozemo
formatirati polja. Sada bi znaci ove sve podatke morali negdje zapisati izvjestaj zatvoriti
te ponovo otvoriti i onda na on format formatirati sirine polja prema iscitanim vrijednostima.
3. Mozemo na on print iscitati najsiru kontrolu u trenutnom trekordu i na osnovu te sirine
iscrtati okvire oko kontrola.
Eto meni je ovo zadnje biolo nekako naj jednostavnije
[ Zidar @ 11.09.2008. 18:05 ] @
Zonicev metod se moze uprostiti, tako da nije potrebno poznavati visinu niti jedne kontrole, niti koja je 'najveca'.
Ako iznad svih kontrola postavimo jednu horizontalnu fiksnu liniju, moze i na nivou TOP za sve kontrole, ona ce uvek ostati gde jeste, jer su kontrole ispod nje. Time fiksiramo pocetak svih vertiklanih linija koje cemo crtati.
Isto tako stavimo ispod svih kontrola jednu horizontalnu liniju. Nju ce kontrole da 'odguraju' na dole kako rastu. Eto nam donje koordinate za sve linije koje cemo crtati.
Na reportu se crtaju linije u X,Y sistemu gde je nula sistema gornji levi ugao. X raste u dexo, Y raste na dole. Sad za svaku kontrolu mozete da nacrtate vertikalnu liniju koja sadrzi vertikalne stranice te kontrole. For Each Ctl.. iz Zonicevog koda je jako korisno u tom slucaju. Koordinate izracunate ovako:
leva stranica kontrole A ce biti na liniji me.line (A.left, GornjaLinija.Top) - (A.Left, DonjaLinija.Top)
desna stranica kontrola A ce biti na liniji: me.line (A.left + A.width, GornjaLinija.Top) - (A.left + A.width,, DonjaLinija.Top)
Vidimo da se menjau samo X koordinate za dve tacke koje odredjuju liniju. Y koordinate su uvek iste, odredjene Gornjom i Donjom horizontalnom linijom.
Evo primer zakace (bez For Each Ctl) ali se moze preraditi da radi za proizvoljan broj kontrola. Sve kontrole treba da su CAnGrow = Yes i da im je BorderType = transaprent. Linije koje se crtaju crtam crvenom bojom, a takve su i horizontalne linije gore i dole, jer se tako lkse vide u dizajnu.
Nisam znao da Access 2007 ovo ima kao opciju bez programiranja. Ima nesto dobro i u novom Accessu, samo treba iskopati ;;;
:-)
[ domaci_a_nas @ 12.09.2008. 07:53 ] @
Ja sam probao to sa horizontalnim linijama da textbox pogura kontrole ispod, al' mi nešto nije išlo

Svejedno, važno je da je problem rešiv, pa nek čovek lepo izabere koje rešenje hoće.
[ Zidar @ 12.09.2008. 13:50 ] @
@domaci_a_nas
Moram da priznam da sam se i ja namucio dok nisam naterao primer da proradi. Zato sam dao uvodnu pricu o koordinatnom sistemu itd. HELP nije bas najasniji u ovoj oblasti. Starije verzije Accessa su imale bolji help. Sve kontrole treba da su CanGrow. Gornja i donja linija treba da su za nijansu udaljene od gornje i donje ivice kontrola u dizajnu. Probaj bez Me.Line da prikazes report i videses kako donja linija putuje na dole. Ostaje samo da se iscrtaju vertikalne linije. Moj primer je hard-codded, sa fiksnim brojem kontrola i njihovim nazivima. ZOnicevo resenje ne zavisi od broja kontrola niti te zanimaju nazivi. To cini kod lako prenosivim. Ako stignem, dacu kompletno resenj sa potpunim objasnjenjem.
Tvoje resenje je jako zanimljivo. U ovom slucaju verovatno efikasnije od ovog drugog, ali si ponudio jedan svez i originalan pristup, kako kazu 'thinking out of the box'. Ideje koje is ponudio mogu se i na drugim mestima upotrebiti. To so se meni vise svidja Zonicevo resenje (slican se slicnom raduje

ne umanjuje vrednost tvog resenja i ja sam pogresio sto sam pomenuo samo jedno. Evo ovde ispravljam gresku.

Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.