Announcement

Collapse
No announcement yet.

Leinwand/Bild erlaubt kein Zeichnen

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

  • Leinwand/Bild erlaubt kein Zeichnen

    Hallo !

    Ich nutz den Builder 6.0 und versuche, eigene TForms in eine TScrollBox einzuhängen, dies soll dynamisch, d.h. zúnabhängig von der Anzahl geschehen.

    Die Deklaration meiner "kleinen Anzeigen" lautet
    class TDisplay: public TForm

    Angelegt werden sie mit
    TDisplay MyDisplay = new TDisplay(ptrTScrollBox);

    So weit, so gut.
    In der Praxis tritt jedoch eine Exception auf:

    <I>Im Projekt ist eine Exception der Klasse EInvalidOperation aufgetreten. Meldung: 'Leinwand/Bild' erlaubt kein Zeichnen.</I>

    Auslöser: Datei <I>Graphics</I>, procedure TCanvas.RequiredState, in "<I>CreateHandle;</I>" wird kein FHandle erzeugt.
    Diese Exception tritt auch bei einer "nackten" abgeleiteten Klasse auf, leg ich jedoch eine TForm an, so nicht.
    Außerdem klappts ja ab und zu.
    Des weiteren kann ich mit dem Debugger vor CreateHandle einen Haltepunkt setzen und mit F9 durchlaufen lassen, Resultat: fehlerlos.

    Was mach ich falsch?
    Irgendwie bin ich total ratlos.

    Hat jemand einen Tipp für mich??
    Danke im Voraus!!!

  • #2
    Ohne Parent > kein Handle > kein Zeichnen

    Comment


    • #3
      Hab ich auch schon gedacht, aber das parent ist der Pointer auf die TScrollBox.<BR>
      Habs auch schon probiert, wie bei einigen Beispielen im Internet, die Application als parent zu übergeben. Ebenfalls ohne Erfolg.<BR>

      Wenns denn so einfach wär, wär ich ja glücklich, aber dem widerspricht, daß es sporadisch ja klappt!!!

      "Trotzdem" dankeschön!

      Comment


      • #4
        "..das parent ist der Pointer auf die TScrollBox."

        Das reicht nicht:

        MyDisplay ->Parent=xxxx;

        Im Consturctor wird der Eigentümer übergeben. Das muss nicht der Parent sein
        Christian

        Comment


        • #5
          Hallo,<br>
          vielleicht nochmal zur Klärung:<br>
          Ein parent würd ich ja gern eintragen, aber soweit komm ich erst gar nicht!!!<br>Beim Aufruf von <I>new TDisplay(ptrTScrollBox);</I> biegt der Debugger in den Constructor von TDisplay ab, da sofort in den von TForm. Und hier passierts!<br>
          Also ganz ohne eine Chance, überhaupt ein parent zuzuweisen!!!<br>
          <br>
          Vor allem gehts ja im Debugger mit Haltepunkt...

          Comment


          • #6
            Solche Merkwürdigkeiten habe ich auch manchmal. Da hilft manchmal:

            Lokale Variablen global machen,

            Anlegen und zewrstören von Objekten an anderen Stellen vorzunehmen

            Verwunderlich finde ich, das eine TForm Tochter von irgendwas sein kann. Dachte bisher TForm ist immer oberster Vater. Zumal die TForm ja automatisch scrollt, wenn die Objekte über den Screen gehen
            Christian

            Comment

            Working...
            X