Announcement

Collapse
No announcement yet.

Panel mit Labels als eine Komponente

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

  • Panel mit Labels als eine Komponente

    Hallo zusammen,

    ich habe ein Panel mit diversen Labels und einem Image-Objekt drauf. Das Ganze hätte ich gerne eine Komponente. Die als Eigentschaft die einzelnen Labels veröffentlich

    Gibts da eine einfache Methode?

    Vielen Dank Yves

  • #2
    Hallo Yves,

    eine ganz einfache Methode gibt es hier glaube ich nicht. Hierfür muss eine eigene VCL-Klasse erstellt werden. Diese wird registriert, so daß sie in der Komponentenpalette auftaucht und kann dann wie die anderen Komponenten verwendet werden.

    Gruß Ud

    Comment


    • #3
      Man kann aber auch eine normale Klasse erstellen, die nur Zeiger auf die einzelnen Komponenten enthält. Das hilft auch schon weiter. Ich vermutte dass der Yves das haupsächlich wegen der Codevervollständigung haben will, um die Elemente schneller zu finden.

      Gruss
      Sebastia

      Comment


      • #4
        Hallo,

        Mein Ziel eine PanelKomponent (TMyPnl) zu haben auf dem diverse Infos stehen nehmen (z.B. Personendaten: Geburtstag, Name, Vorname usw.) Mehrer dieser Komponente sind gleichzeitig auf meinen Haupformular verteilt. Da sich zur Laufzeit aber der Inhalt ändert war meine Idee den Inhalt über die Eigentschaften von MyPanel zu Ändern
        <PRE>
        MyPnl1->Vorname="Heinz";
        <PRE>
        Das ganze ist mir deshalb wichtig, weil ich den Zurgiff auf die einzelnen TMyPnl Komponenten z.B. aus deren OnDragOver-Routine aus anspechen Möchte und ich dann einen einzigen Eventhandler schreiben könnte.

        Ich habe mich inzwischen damit abgefunden selbst eine Komponente zu entwickeln. (ich hab in Delphi so was auch schon mal gemacht is aber lange her)

        Mit der C-Builder Hilfe hab ich es auch geschaft eine Komponente zu gestalten die sich Compilieren läst aber beim verwenden sind irgendwie keine Labels da weder zur Entwurfzeit noch zur Laufzeit.

        <PRE>
        class PACKAGE TPersonPnl : public TPanel
        {
        private:
        TLabel *FlblName;
        TLabel *FlblVorname;
        int FPlatzNr;
        protected:
        public:
        __fastcall TPersonPnl (TComponent* Owner);

        __published:
        __property int PlatzNr= {read=FPlatzNr,write=FPlatzNr};
        __property TLabel *Name={read=FlblName,write=FlblName};

        };

        <PRE>
        Im Constructor werden dann die Labels erstellt.
        Für den Objekt Inspector hatte ich gehofft es gehen dann ähnlich wie bei der TForm Eigentschaft Font ein untermenü auf in dem ich die eigenschaften der Labels ändern kann

        Hab Ihr ne Idee was ich falsch mache?

        Danke Yve

        Comment


        • #5
          Hi Yves,
          ich würde mir nicht die Mühe machen in diesem Fall eine Komponente zu schreiben,
          <br>sondern lieber zu TFrame greifen.

          <br>1. Erstelle einen Frame.
          <br>2. Kopiere Dein Panel mit den Labels usw auf dieses Frame
          <br>3. in der Komponentenleiste "Standard"
          wähle Frames aus, klicke auf das Formular wo der
          <br> Frame hin soll und wähle Deinen Frame
          <br>
          <br>Der Zugriff auf die Komponenten auf dem Frame ist wie beim Formular.
          <br> TFrame1 * FrameLinks;
          <br> TFrame1 * FrameRechts;
          <br>
          <br> FrameLinks->Label1->Caption = "Links";
          <br> FrameRechts->Label1->Caption = "Rechts";
          <br>
          <br>
          <br>
          <br>Falls Du an Deiner Komponente weitermachst
          <br>Im Konstruktor:
          <br> Hast Du die Parent-Eigenschaft der Labels gesetzt? (Label->Parent = this
          <br> Hast Du die Größe der Labels festgelegt?
          <br>
          <br>Viel Spaß,
          <br> Chri

          Comment


          • #6
            Hallo Christian,

            das mit der Parent eigenschaft war der wichtige hinweis für die Komponente. Inzwischen sehe ich die Komponenten.

            Die Größe hatte ich zwar nicht explizit fixiert, aber Heith und width waren >0

            Das mit dem Speichern der Eigenschaft klappt noch nicht ganz, aber ich habe im Handbuch ein Kapitel gefunden an dem ich micherst mal langhangeln werde.

            Das mit den Frames klingt auch sehr interessant
            werd ich auf alle fälle auch ausprobieren.

            Vielen Dank schon mal Yve

            Comment

            Working...
            X