Announcement

Collapse
No announcement yet.

Komponenten e.r. Form auflisten u. Eig.setzen

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

  • Komponenten e.r. Form auflisten u. Eig.setzen

    Komponenten e.r. Form auflisten u. Eigenschaft(z.B. Caption)setzen:
    in Vis.Basic weiß ich, wie das geht : For k in Form.... k="hkjhk"
    wie geht das in Delphi (5 Enterprise) ?
    Menutext umsetzen : genauso ?

    siehe auch Thema Mehrsprachigkeit..

    Gruß
    Wolf

  • #2
    also, durchlaufen und name anzeigen klappt jetzt schon,
    aber wie übernehme ich das Objekt und setze z.B. Caption ?

    var bezeichnung : String;
    Temp: TComponent;
    i , maxcomp : Integer;
    t_bitbtn : TObject;
    begin
    maxcomp := frmStart.ComponentCount - 1;
    ListBox1.Items.Clear;
    for i := 0 To maxcomp do
    begin
    Temp := frmStart.Components[i];
    bezeichnung := 'K : ' + IntToStr(i) +
    ' Name : ' + Temp.Name;
    ListBox1.Items.Add(bezeichnung);

    if (Temp is TBitBtn) then
    begin
    t_bitbtn := frmStart.Components[i].Components[0].NewInstance;
    //- klappt nicht ?!
    //?? t_bitbtn.caption := bezeichnung; ???
    end;

    end;
    end;

    ???????????????????????

    Comment


    • #3
      Hallo Wolf,

      if (Temp is TBitBtn) then TBitBtn(Temp).Caption := bezeichnung;

      Tschüß

      Torste

      Comment


      • #4
        hat geklappt !
        Danke Torsten !
        aber ehrlich, auf diese Form wär ich so schnell n i c h t gekommen..
        Wieso geht das so und nicht anders ? Ist das ein Cast ?

        MfG
        Wol

        Comment


        • #5
          Hallo Wolf,

          das geht sicher auch anders, aber warum kompliziert wenn es auch einfach ("brutal") geht. Bei dieser harten Typumwandlung überprüft Delphi nicht ob das umzuwandelnde Objekt und der neue ObjektTyp zusammenpassen. Deswegen sollte diese harte Typumwandlung nur mit Bedacht eingesetzt werden. Wenn nämlich alter Typ und neuer Typ nicht zusammenpassen (z.B. wenn in Deinem Beispiel Temp auf ein Canvas-Objekt zeigt und im Quellcode TMemo(Component).Text := 'blabla' steht, dann kracht es gewaltig - als Konsequenz sollte vorher immer geprüft werden ob Temp vom "richtigen" Typ ist ... if (temp is TMemo) then ... ) hat man ganz schnell eine allgemeine Schutzverletzung.

          Tschüß

          Torste

          Comment


          • #6
            mit der möglichen Typverletzung ist das richtig, mache ich sowieso,
            weil ja nicht alle Komponenten die gleichen Eigenschaften haben werden...

            Erst mal recht schönen Dank an alle Helfer;
            dieses Forum ist schon echt gut !

            Der schaffende Wol

            Comment

            Working...
            X