Hallo Leute!
Schon wieder ein Problem, an dem ich mir die Zähne ausbeiße:
Ich versuche, mit Quick Report die Spalten eines DBGrid zu übernehmen. Da der Anwender an den Spalten "herumspielen" können soll, müssen die QRLabels und QRDBLabels zur Laufzeit erstellt werden. Das geschieht so:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| procedure TQR_Bestand.TakeOverSpalten; var i: Integer; hor, vert: Integer; begin hor:= 0; vert:= 8; for i:= 0 to Bestand_Form.DBGrid1.Columns.Count -1 do begin with TQRLabel.Create(QR_Bestand) do begin Parent:= ColumnHeaderBand1; AutoSize:= False; AutoStretch:= False; if hor + Bestand_Form.DBGrid1.Columns[i].Width >= ColumnHeaderBand1.Width then begin vert:= vert + Height + 2; hor:= 1; end; Left:= hor; Top:= vert; Transparent:= True; Width:= Bestand_Form.DBGrid1.Columns[i].Width; Caption:= Bestand_Form.DBGrid1.Columns[i].Title.Caption; Visible:= True; end; with TQRDBText.Create(QR_Bestand) do begin Parent:= DetailBand1; AutoSize:= True; AutoStretch:= False; Left:= hor; Top:= vert; Transparent:= True; Width:= 64; Inc(hor,Left + Width + 2); DataField:= Bestand_Form.DBGrid1.Columns[i].FieldName; DataSet:= Bestand_Form.DBGrid1.DataSource.DataSet; Visible:= True; end; end; end; |
Diese Methode wird aufgerufen, wenn der Anwender in der Form mit der DBGrid den entsprechenden Button klickt. In der DBGrid sieht alles noch i.O. aus. Wenn ich die Spalten in der DBGrid vertausche, wird das auch übernommen, aber in der Vorschau haben nur die ersten 2 Labels den richtigen Abstand, die anderen "laufen weg".[/img]
Ich hoffe, der Code erklärt sich von selbst.
Wer weiß Abhilfe?
Gruß
Ingo