Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Crystal reports "can grow" polje, dinamicko odredjivanje visine

[es] :: .NET :: Crystal reports "can grow" polje, dinamicko odredjivanje visine

[ Pregleda: 1015 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mikelly

Član broj: 16730
Poruke: 389
*.crnagora.net.



Profil

icon Crystal reports "can grow" polje, dinamicko odredjivanje visine12.06.2010. u 18:44 - pre 168 meseci
Imam polje na izvjestaju koje je "can grow", a imam zahtjev, kako korisnik kaze, "da raste na gore". Tj. da mu donja koordinata bude fiksna, a da se gornja podesava u zavisnosti od toga koliko polje "naraste".

Krenuo sam dinamicki da odredim tu "naraslu visinu", pa da na osnovu nje podesim novu koordinatu, ali nikako nemam uspjeha.

Ja lociram to polje u izvjestaju:

Code:

foreach(ReportObject ro in report.ReportDefinition.ReportObjects) if(ro.Name == "PoljeKojeTrazim") ro.Top = 6520 - ro.Height;


ocekivajuci da ce mi ro.Height biti nova narasla visina, ali mi CR uvijek daje vrijednost (600) koju sam podesio u designeru, iako je na ekranu ocigledno da je ta visina mnogo veca (1500+).

Onda sam probao da direktno ispod polja stavim novu sekciju, pa da ocitam koliko mi se sekcija povecala, ali opet dobijem tu dummy vrijednost od 600 iako je stvarnost drugacija.

Posto sam izgubio dobrih par sati googlanja i probanja, zasuka sam rukave i rijesio da sam izmjerim kolika ce biti visina toga polja:
Code:

int MeasureString(string arg)
{
string[] words = arg.Split(' ');
string whitespace = " ";

Bitmap bmp = new Bitmap(1, 1);
Graphics grph = Graphics.FromImage(bmp);
System.Drawing.Font fnt = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold | FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

int pixelwidth = 0, pixelheight = 0;
int lines = 1, buffx = 0;
int pixelws = (int)grph.MeasureString(whitespace, fnt).Width;
int buffy = (int)grph.MeasureString("A", fnt).Height;
            
foreach (string s in words)
{
     buffx = (int)grph.MeasureString(s, fnt).Width;
     if ((int)(pixelwidth + (pixelws + buffx) * 14.45) > 10450)
     {
          pixelheight += (int)((buffy) * 14.45);
          pixelwidth = 0;
          lines++;
     }
     else pixelwidth += (int)((buffx + pixelws) * 14.45);
}

if (pixelwidth > 10250) return pixelheight + 2 * (int)(buffy * 14.4)
else return pixelheight + (int)(buffy * 14.4);
}


gdje je 10450 sirina polja u pixelima u CR designeru, a 14.45 odnos pixela C#-a i CR-a.

Top koordinatu polja smanjim za povratnu vrijednost funkcije i imam procenat uspjesnosti 37 od 40. To je rezultat nakon mnogo testiranja odnosa pixela u C# i CR (14.45 sam dobio metodom pokusaja). Mozda neko zna tacno koliko je ovaj odnos, ako tako nesto uopste postoji.

Svaka pomoc mi je dobrodosla, treba mi uspjesnost 100% :)

Pozdrav i hvala
 
Odgovor na temu

[es] :: .NET :: Crystal reports "can grow" polje, dinamicko odredjivanje visine

[ Pregleda: 1015 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.