Announcement

Collapse
No announcement yet.

Komponentenzugriff über Funktion

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

  • Komponentenzugriff über Funktion

    Hallo,
    ich stehe gerade vor einem Problem und komme leider nicht wirklich weiter.
    Ich habe 1 extra Form in denen ich mit Panels eine Übersicht gestaltet habe.


    Diese ganze Übersicht befindet sich in einem Server.
    Ich habe die Panels wo die Zahl 2 drinsteht so genannt wie die Überschrift "FLSHG5010" bloß ohne Bindestriche und Leerzeichen.

    Mein Problem ist folgendes:
    Ich möchte gerne von meinem Hauptprogramm (Form1) die Panelzahl ändern, passend zu dem Fahrzeug.
    Ich dachte mir, dass ich den Namen und die Zahl einfach an die Funktion übergebe und diese dann im Panel in Form2 die Zahl ändert.
    Leider bin ich bis jetzt noch nicht weitergekommen. Denn Form2->FindeComponent(AnsiString Name) liefert ja leider nur einen String zurück.

    Noch einmal kurz zusammengefasst:
    Ich übergebe den Rufnamen z.B. FL-SHG 50-10 und die Zahl z.B. 3 an eine Funktion.
    Diese macht aus dem übergebenen Rufnamen FLSGG5010.
    Nun soll diese Funktion auf Form2 zugreifen und beim Panel mit dem Namen FLSHG5010 die Caption von 2 auf 3 ändern.

    Ich hoffe ich konnte mein Problem einigermaßen klar schildern.

    Viele Grüße
    Henning
    Zuletzt editiert von Henning; 31.03.2009, 00:27.

  • #2
    (AnsiString Name) liefert ja leider nur einen String zurück.
    Nein, sie liefert ein TComponent, welches auf die gesuchte Komponente gecastet werden kann.

    Vorausgesetzt dein FindeComponent entspricht FindComponent des Frameworks
    Christian

    Comment


    • #3
      Hi,
      ja war nen Schreibfehler von mir. Ehm könntest du mir vielleicht mal ein kleines Beispiel zeigen wie ich das anwenden kann?

      Danke!

      Viele Grüße
      Henning

      Comment


      • #4
        TLabel *tmpLabel=(TLabel)Form1->FindComponent("1234");
        tmpLabel->Caption="Hallo";

        oder


        TLabel *tmpLabel=dynamic_cast<TLabel*>(Form1->FindComponent("1234"));
        tmpLabel->Caption="Hallo";
        Christian

        Comment


        • #5
          Hallo,
          danke funktioniert wunderbar! Eine Frage habe ich aber trotzdem noch. Und zwar geht so etwas auch für Formen? Und wenn ja wie?

          Viele Grüße
          Henning

          Comment


          • #6
            Ja, Genau so
            Christian

            Comment


            • #7
              Hi,
              danke. Ich glaube irgendwas habe ich falsch gemacht.
              TForm *tmpForm=dynamic_cast<TForm*>(FindComponent("Form1 8"));
              tmpForm->Caption="Hallo";

              Er will bei mir absolut nicht die Caption der Form ändern.

              Viele Grüße
              Henning

              Comment


              • #8
                FindComponent?? Methode ohne Klasse?

                Des Weiteren wird, da es sich um eine Methode der Klasse TForm handelt er sich selbst nicht finden.

                Das casten funktioniert genauso.

                Wenn du ein Objekt hast welches von einer Basisklasse abgeleitet ist, und du das Objekt als ein Objekt der Basisklasse irgendwo her bekommst, dann dannst du dieses Objekt in seine "Originalklasse" umwandeln -> casten

                Alle sind von TComponent abeleitet. Bekomst du nun ein TComponent irgendwoher, und weisst es ist eigentlich ein TButton, so kann das Objekt von TComponent in TButton gewandelt werden.
                Christian

                Comment


                • #9
                  Wenn du TForms suchst würde ich mal in der Klasse TApplication schauen, ob die ihre Forms finden kann.
                  Christian

                  Comment


                  • #10
                    Hallo,
                    danke für die Erkläriung.

                    Henning

                    Comment

                    Working...
                    X