![]() |
ReportBuilder - Labels auf Region zur Laufzeit erzeugen
Moin Leute ich hab ein kleines Problemchen mit dem Reportbuilder.
Ich möchte in einem Report zur Laufzeit in einer ppRegion Labels erzeugen. und habe dafür folgenden Code geschrieben:
Delphi-Quellcode:
Der Code läuft sauber durch, es sind aber leider auf dem Report keine Labels zu sehen. Ich dachte es liegt daran, dass ich ppLBankLabel[i].Parent nicht zugewiesen habe, aber beim debuggen sagt er, dass diese Eigenschaft Readonly ist.
for i := 0 to ibds.FieldList.Count-1 do
begin if not Varisnull(ibds.Fields[i].Value) then begin ppLBankLabel[i] := TppLabel.Create(pprBank); ppLBankLabel[i].Left := CompleteWidth; ppLBankLabel[i].Top := pprbank.Top + 2; ppLBankLabel[i].Caption := ibds.Fields[i].AsString; CompleteWidth := CompleteWidth + ppLBankLabel[i].Width +2; end; end; Ich hab auch schon verschiedene Positionen für das ausführen dieses Codes ausprobiert. Ohne Erfolg. Sieht jemand meinen Fehler? |
AW: ReportBuilder - Labels auf Region zur Laufzeit erzeugen
Hi JannesDSK,
bei Problemen mit dem Reportbuilder, habe ich mich immer an die newsgroup von Digital Metaphors gewendet. Dazu lad dir Mozilla Thunderbird runter und richte die newsgroup ein und poste dort dein Problem mal. ( ![]() Dort bekommst du auch schnell und vorallem gute Antworten :-) (aber nicht so schnell wie hier) sorry, dass ich dir nicht direkt weiterhelfen kann, aber falls ich Zeit finde und du dein Problem nicht schon selbst gelöst hast, werd ich's mir auch mal anschaun ! mfg David |
AW: ReportBuilder - Labels auf Region zur Laufzeit erzeugen
vll kann es sein, dass du die erzeugten Objekte noch anzeigen musst.
Muss man ja beim Erzeugen von Objekten in Delphi auch :-) also vll mal:
Delphi-Quellcode:
oder
ppLBankLabel[i].Show
Delphi-Quellcode:
vll. hängt es damit zusammen *gg*
ppLBankLabel[i].Visible := True
|
AW: ReportBuilder - Labels auf Region zur Laufzeit erzeugen
Hi Metallicwar,
hm, ja das hab ich auch schon ausprobiert. das ist es nicht. hab aber nochwas gefunden in der Newsgroup. Für den Tipp auch schon mal ein dickes Dankeschön
Delphi-Quellcode:
Geht immernoch nicht, aber wenigstens sagt er jetzt wenigstens, dass die Region der Parent der Labels ist. Immerhin ;-)
for i := 0 to ibds.FieldList.Count-1 do
begin if not Varisnull(ibds.Fields[i].Value) then begin ppLBankLabel[i] := TppLabel.Create(ppReport1); ppLBankLabel[i].Band := ppSummaryBand2; ppLBankLabel[i].Left := CompleteWidth; ppLBankLabel[i].Top := pprbank.Top + 2; ppLBankLabel[i].AutoSize := True; ppLBankLabel[i].Caption := ibds.Fields[i].AsString; CompleteWidth := CompleteWidth + ppLBankLabel[i].Width +2; ppLBankLabel[i].BringToFront; ppLBankLabel[i].Visible := True; end; end; |
AW: ReportBuilder - Labels auf Region zur Laufzeit erzeugen
Du kannst auch eine Region (mit allen Controls darauf) von einem Report auf einen anderen Report verschieben.
Du hast also einen Hauptreport und einen weiteren Hilfsreport, der nur als Container für ein oder mehrere Regionen dient. Man kann die Regionen zwischen dem Hauptreport verschieben und wieder zurückbewegen.
Delphi-Quellcode:
// verschiebt die übergebene Region an den 1. leeren Platz
// auf dem Zielreport procedure TForm1.MoveRegion1(const region: TppRegion); begin // Region aktivieren region.Band := ReportMain.DetailBand; // Position der Region region.Left := ppLine5.Left; region.Top := ppLine5.Top; // richtige Breite der Region region.Width := ppLine6.Width; region.Height := ppLine6.Top-ppLine5.Top; region.Caption := ''; region.Pen.Mode := pmNop; // Rahmen ausschalten // region.Pen.Color := clRed; // Test end; // alle Regionen wieder entfernen (zurück auf den ursprünglichen Report) procedure TForm1.ResetRegions; procedure ResetBandOfRegion(region:TppRegion); begin region.Band := ReportRegions.DetailBand; end; begin ResetBandOfRegion(Region1); ResetBandOfRegion(Region2); ResetBandOfRegion(Region3); end; |
AW: ReportBuilder - Labels auf Region zur Laufzeit erzeugen
Hey Shmia,
danke für den Hinweis, aber das nützt mir hier eigentlich nix. Das problem ist eher, dass ich die Labels horizontal anordnen möchte. die captions aber immer unterschiedlich lang sind. Im einen Land hat der Bank-Code mehr stellen als in anderen, usw. Daher kam ich auf die Idee, die Labels zur Laufzeit zu erzeugen und so den verfügbaren Platz ideal auszunutzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz