PDA

Vollständige Version anzeigen : Linien in Berichten


Albert
15.01.2003, 18:35
Hallo an alle,

ich brauche wieder einmal euere Hilfe für folgendes Problem:

Ich möchte senkrechte Linien in meinem Bericht (im Detailbereich) auf der ganzen Seite des Berichtes haben, auch wenn nur 2 oder 3 Datensätze drauf stehen. Zwar arbeite ich mit der Line-Methode, diese macht mir jedoch die Linien nur so lange, so groß der Detailbereich ist.
gibt es eine Möglichkeit, dies zu realisieren?

Besten Dank für die Hilfe. Ich arbeite mit ACC00 und 97.

Albert

Axel37
15.01.2003, 19:00
schau mal hier nach

http://www.donkarl.com

unter berichte findest du linienverlängern

axel

Albert
15.01.2003, 19:21
Hallo Axel,

mit der bei donkark beschriebenen Line-Methode kann ich eine Linie dynamisch verlängern oder verkürzen, jedoch nicht eine feste Linie (fest Länge) in einem veränderbaren Detailbereich zeichnen.
Vielleicht hast duch nochmals einen Tipß

Danke

Albert

Nouba
15.01.2003, 19:47
meine OL-Hilfe spendiert der <code>Line</code>-Mothode großzügigerweise sogar das passende Beispiel. Wenn das bei Dir fehlt, melde Dich nochmal zurück.

Albert
15.01.2003, 21:14
Hallo Nouba,

ich kann das passende Beispiel in meiner OL-Hilfe leider nicht finden. Könntest du es mir vielleicht senden?

Albert

Nouba
15.01.2003, 21:26
Hallo Albert

hier ist das Beispiel<pre><font size="2">Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)<br> ' Call the Drawline procedure<br> DrawLine<br>End Sub<br><br>Sub DrawLine()<br> Dim rpt As Report, lngColor As Long<br> Dim sngTop As Single, sngLeft As Single<br> Dim sngWidth As Single, sngHeight As Single<br><br> Set rpt = Reports!EmployeeReport<br> ' Set scale to pixels.<br> rpt.ScaleMode = 3<br> ' Top inside edge.<br> sngTop = rpt.ScaleTop + 5<br> ' Left inside edge.<br> sngLeft = rpt.ScaleLeft + 5<br> ' Width inside edge.<br> sngWidth = rpt.ScaleWidth - 10<br> ' Height inside edge.<br> sngHeight = rpt.ScaleHeight - 10<br> ' Make color red.<br> lngColor = RGB(255,0,0)<br> ' Draw line as a box.<br> rpt.Line(sngTop, sngLeft) - (sngWidth, sngHeight), lngColor, B<br>End Sub</font></pre>Als Ereignis nimmt man das Page Event.

Albert
15.01.2003, 22:06
Hallo Nouba,

die Line Methode ist das Beispiel, das ich bereits verwende. Nach meiner Erfahrung kann man damit die angegebenen Linien nur dynamisch verlängern oder verkürzen (je nach größe des Detailbereiches). Dies ist aber nicht mein Problem.

Ich möchte in meinen Bericht einen festen Rand haben, der immer da ist, egal wie groß mein Detailberch ist. Im Seitenkopf und Seitenfuß läßt sich der Rand ja ohne Probleme einzeichnen (ist immer gleich groß). Der Rand im Detailbereich paßt sich immer der Größe des Detailbereiches an. Es ensteht also meistens eine Lücke zwischen dem Rand vom Detailbereich und Seitenfuß. Diese Lücke sollte geschlossen werden.

Vielleicht weiß nochmals wer Hilfe.

Danke

Albert

Axel37
16.01.2003, 08:00
also wenn ich das nun richtig verstanden habe, möchtest du zb bei einem lieferschein zusätzlich die weitere umrandung bis nach unten haben, die immer die seite entsprechend gleichmässig abgrenzt ?!

ich habe das folgendermassen gelöst:

die detaildatensätze stehen in einem unterbericht und sind natürlich zum hauptbericht verknüpft. dieser unterbericht hat dann zb horiz. abgrenzungslinien um die einzelnen ds optisch zu trennen...
im hauptbericht lege ich im detailbereich (wo auch unterbericht ist) die feste vertikal liniengrösse mittels zeichnungselementen fest und taste mich per bildvorschau (abhängig v druckertreiber) mit der linienlänge nach unten vor mit paar mm sicherheitsabstand (wg unterschiedl drucker) und füge dann zusätzl noch seitenumbruch in einstellungen ein.
dadurch erhalten alle berichte je nach füllgrad der detail-ds ein ebenmässiges aussehen.


axel