Autor Beitrag
cartridge
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 209

Win XP
D4 Prof,D6 Prof
BeitragVerfasst: Do 02.12.04 21:52 
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:

ausblenden volle Höhe Delphi-Quelltext
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,         //Zeiger auf den nächsten "Left"-Wert für eine neue Komponente
  vert: Integer;  //Zeiger auf den nächsten "Top"-Wert für eine neue Komponente
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
cartridge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 209

Win XP
D4 Prof,D6 Prof
BeitragVerfasst: Di 14.12.04 21:09 
Ich möchte hiermit die Chance darauf, dass sich jemand meines Problems annimmt nutzen!!!

Wäre nett, wenn sich jemand meldet, der mit dieser Aufgabenstellung bereits gearbeitet hat! Danke!