Zugriff von Panel in Form auf andere Controls der Form?



  • Hallo!

    Ich bin relativ neu in der C++ Welt, "darf" aber im Rahmen eines Uniprojektes eine C++ Applikation bauen.
    Das ganze soll eine Messkarte auslesen und die Messwerte graphisch darstellen. Die Werte aus der Karte bekomme ich, bzw ich hab eine Verkettete Liste, die Dummydaten enthält.
    ich habe schon einen anderen Thread hier wegen des gleichen Projektes, durch den ich nun soweit bin, dass ich ein eigenes UserControl abgeleitet habe um es auf DoubleBuffered zu stellen und darauf zu malen. Irgendwo im Forum (oder war's bei irgendwas ergoogletem?) Schrieb jemand man solle sich dann darauf beschränken nur die OnPaint Methode des DoubleBuffered Controls zum zeichnen zu nehmen, weil das DoubleBuffern sonst sinnfrei wäre. Daher fällt ja aus auf den PaintEvent mit einer "panel1_paint"-Methode in meiner Form zu reagieren und darin zu zeichnen.
    Das Problem ist nun, auf meiner Form1 habe ich u.A. ein paar Checkboxen, die steuern sollen was gezeichnet wird, an die ich innerhalb des geschrieben Controls nicht rankomme.
    Ich habe im Control zwar eine Variable vom Typ Form1 erstellt und den Konstruktor erweitert, damit ich auf meine Form zugreifen kann. Ich hab sie auch vordeklariert damit das überhaupt alles funktioniert. Das zuweisen klappt auch, aber wenn ich drauf zugreifen möchte bekomme ich folgenden Fehler:

    error C2027: Verwendung des undefinierten Typs "Schwingung::Form1"

    Daraus werde ich nicht schlau, da ich ja eigentlich im gleichen Namensraum bin.

    Hier ist das ganze Projekt gepackt zu finden. (~2Mb wegen der Intellisense DB)

    Ein ähnliches Problem habe ich auch mit meiner CLinkedList, die meine Messwerte enthalten soll. die liegt im Moment noch global in der Schwingung.cpp, da komm ich aber wahrscheinlich weder von der Form noch vom "Zeichenpanel" ran. Ich weiß nur nicht so recht wohin damit und wohin mit den Funktionen für die Messkarte. Die CallBack-Funktion muss ja auf jedenfalls außerhalb einer Klasse sein, zumindest hab ich es anders nicht hinbekommen, dass alles durch kompiliert.

    Für Hinweise und Google-Tipps bin ich sehr dankbar.
    Danke schon mal
    dridde



  • Okay, hat sich jetzt soweit erledigt, dass das zeichnen über den PanitEvent mit panel1_paint auch doublebuffered ist und nicht flackert, daher hab ich das Problem jetzt nicht mehr direkt. Wie das prinzipiell funktioniert wüsste ich aber schon gerne, da ich früher oder später von einem eigenen Panel auf Komponenten der Form in der das Panel drin ist zugreifen werden muss.

    Danke 😉



  • da ich früher oder später von einem eigenen Panel auf Komponenten der Form in der das Panel drin ist zugreifen werden muss.

    Ist immer das gleiche Muster.
    Für den Zugriff benötigt man Pointer, Referenzen, Delegaten etc.
    Die müssen gesetzt, erzeugt usw. werden.
    Ist genau (!!!) dasselbe wie wenn zwei "normale" Objekte miteinander kommunizieren.

    Simon


Anmelden zum Antworten