Announcement

Collapse
No announcement yet.

TQRDBText zur Laufzeit erstellen und freigeben...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TQRDBText zur Laufzeit erstellen und freigeben...

    Hi Leute,<br><br>
    weil ich das DataField bei einer TQRDBText-Komponente während der Laufzeit nicht ändern kann erstelle ich die Komponente wie folgt während der Laufzeit:<br><br>

    with TQRDBText(Form15.DetailBand1.AddPrintable(TQRDBTex t)) do<br>
    begin<br>
    Name := 'F_' + form14.ListBox1.Items[i];<br>
    Alignment := taRightJustify;<br>
    DataField := 'F_' + form14.ListBox1.Items[i];<br>
    DataSet := DataModule1.AuswertQuery;<br>
    Mask := '0.,00 €';<br>
    Width := 80;<br>
    Top := 0;<br>
    left := 150 + (80 * (i-1));<br>
    AutoSize := False;<br>
    end;<br><br>
    Wenn den Druck ein zweites mal aufrufe bekomme ich die Meldung "Komponente existiert schon. Gebe ich die Komponente nach dem Preview des Quickreports wieder frei (mit free) bekomme ich eine Zugriffsverletzung.<br>Ich hab auch schon den gesamten Quickreport freigegeb und wieder createt, aber ausser wielden Schutzverletzungen hab ich heute noch nicht viel gesehen.<br><br>
    Hat jemand einen Tip oder besser noch einen kleinen Codefetzen....<br><br>
    Danke

  • #2
    Das folgende ist ein (grotten) falscher Aufruf zur Konstruktion

    >TQRDBText(Form15.DetailBand1.AddPrintable(TQRDBTe xt))

    Dabei wird nur ein Typcast vorgenommen. Richtig muß der Konstruktir aufgerufen werden, also

    <pre>TQRDBText.Create(Form15.DetailBand1.AddPrinta ble(TQRDBText))</pre>

    oder s

    Comment


    • #3
      <b>@Andreas</b> Wenn ich deine Aufruf erstelle wird mir in meinem Quickreport garnichts angezeigt..

      Comment


      • #4
        @Frank

        vermutlich muß Du noch einen Parent oder sowas setzen. Kenn mich nicht mit Quick Report aus. Aber aus reiner O-Pascal Stcht konnte das nicht gehen, was Du da im Original geschrieben hast

        Comment


        • #5
          Hallo,<p>
          der Aufruf<p>
          TQRDBText(Form15.DetailBand1.AddPrintable(TQRDBTex t))
          <p>
          ist korrekt, denn AddPrintable ist eine Funktion eines Bands, die ein Control vom Typ ->Parameter erzeugt, sich selbst als Parent zuweist und das erzeugte Control als Result zurückgibt. Das Problem muss woanders liegen. Wann wird das Control erzeugt? QR muss vor dem Beginn der Reporterstellung Kenntnis über alle zu druckenden Controls haben

          Comment


          • #6
            @Bruno @Frank

            Ups, wenn man sich zu weit aus dem Fenster lehnt, bzw. von Dingen schwatzt von denen man nichts versteht sollte man es lassen. Also halte ich in Zukunft zum QR meinen Mund.

            Wußte nicht das AddPrintable ein entsprechendes Teil erzeugt, also den Create enthält.

            p.s. Hätte aber folgendes besser gefunden

            Form15.DetailBand1.AddPrintable(TQRDBText) as TQRDBText;

            Denn das erste wird leider häufiger als Construktur mißbraucht, daher war ich auch auf der falschen Fährte

            Comment


            • #7
              @all danke für Eure Hilfe, ich hab das Problem jetzt etwas anders (pemitiver) gelößt, weil ich etwas unter zeitdruck stehe... Da auf meine Seite sowieso nur max 12 spalten passen hab ich 12 permanente felder und 12 felder in meinem sql die ich mit entsprechenden parameter fülle. falls eine spalte nicht angezeigt werden soll blende ich sie einfach aus. zwar premitiv und wenig flexibel aber für mich reichts. <br><br>Dabei ist mir noch etwas aufgefallen was bei ALLEN QR-Komponenten einen Fehler verursacht (bei "Normalen" Komponenten klappts):<br><br>
              Produziert beim QR Schutzverletzung bei "normalen" Objekten nicht:<br><bt>
              with TQRDBText(FindComponent('Form1.Feld' + inttostr(i))) do ...<br><br>
              Das allerding erzeugt keine Schutzverletzung:<br><br>
              with TQRDBText(FindComponent(Form1.Feld1)) do ...<br><br>
              Find ich irgendwie komisch.... hab ich mir irgendwie meine Quickreportkomponenten zerschossen oder tritt der fehler bei euch auch auf...
              <br><br>
              aber trotzdem dank

              Comment

              Working...
              X