Announcement

Collapse
No announcement yet.

Eigenschaften dynamisch ändern

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

  • Eigenschaften dynamisch ändern

    Hallo,

    ich habe eine String, der den Namen einer CheckBox enthält.
    Nun möchte ich die checked Eigenschaft dieser Box ändern.
    Wie kann ich das realisieren, da der Name ja nur in dem
    String ist und sich jederzeit ändern kann?

    Vielen Dank, Sven

  • #2
    Hallo Sven<BR>
    Es gibt die Funktion FindComponet(const aName : String) : TComponenet;<BR>
    Mit dieser Funktion kannst du feststellen ob eine Componente vorhanden ist.<BR>
    Wenn ja kannst du auf alle Eigenschaften dieser Componenete zurückgreifen.<BR>
    procedure tform1.findeKomponenete(aName :String);<BR>
    var<BR>
    tc := TComponent;<BR>
    begin<BR>
    tc := nil;<BR>
    tc := FindComponent(aName);
    if tc <> nil then begin<BR>
    if (tc is TEdit) then<BR>
    (tc as TEdit).Text := 'Hallo';<BR>

    end;<BR>
    end;<BR>
    Hoffe es hilf dir weiter<BR>
    Matthias<BR&gt

    Comment


    • #3
      Hallo Sven,<br>
      natürlich kann man den Namen einer Komponente ändern. <br>
      <b><font face="Verdana" size="4" color="#FF0000">!!! Davon rate ich Dir aber DRINGEND ab !!!</font></b><br>
      Ich kann mich nicht daran erinnern, das ich in einem Projekt die Namen von Komponenten zur Laufzeit ändern mußte.<br>
      Wenn Du der Meinung bist, dass Du das machen mußt, dann solltest Du dir das Design noch einmal überlegen.<br>
      Bevor Du Dich innerhalb des Source auf die Komponente beziehst, solltest Du Dir überlegen, wie der Name der Komponente lauten soll.<br>
      (Vorher nachdenken ist immer besser) <br>
      Jens Schumann<br&gt

      Comment


      • #4
        Hallo,

        vielleicht habe ich mich blöd ausgedrückt ...
        Ich will den Namen nicht ändern.
        Ich will eine Funktion schreiben, die aus einer Ini
        Datei Daten ausliest und diese auf die CheckBoxen
        überträgt.
        Da es mehrere Boxen sind, wollte ich den Namen der
        Komponente als String übergeben.
        [stringname].checked := true; --> jeht natürlich nicht!
        Wie mach ichs besser?

        Danke, Sve

        Comment


        • #5
          Hallo Sven,<br>
          wenn das so ist, dann hat Matthias Fichte genau den richtigen Vorschlag gemacht.<br>
          Jens Schumann<br&gt

          Comment


          • #6
            <pre>
            uses TypInfo;<br>

            {$REQUIRES D5}<br>

            function SetProperty(const ComponentName, PropertyName, PropertyValue: String): Boolean;
            var
            C: TComponent;
            begin
            Result := False;
            C := FindComponent(ComponentName);
            if (C <> nil) and (GetPropInfo(C.ClassType, PropertyName) <> nil) then
            try
            SetPropValue(C, PropertyName, Value);
            Result := True;
            except
            end;
            end;<br>

            // Aufruf

            SetProperty('Checkbox1', 'Checked', 'True');<br>

            </pre>

            Hage

            Comment

            Working...
            X