Announcement

Collapse
No announcement yet.

reihenfolge der Controls

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

  • reihenfolge der Controls

    Hallo,

    wenn ich so:

    <pre>
    for i := 0 to Container.ControlCount-1 do
    if Container.Controls[I] is TSpeedbutton then
    if (Container.Controls[I] as TSpeedbutton).name =
    NameStartbutton then
    </pre>

    alle Controls durchlaufe, wovon hängt es ab, in welcher reihenfolge er sie durchläuft?

    Hintergrund der frage:
    ich habe speedbuttons die ein einer gewissen reihenfolge positioniert werden sollen und er schnappt sich den, der als drittes kommen soll, vor dem der als zweites kommen soll!
    woran kann das liegen?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    die Reihenfolge entspricht der Erstellungs-Reihenfolge, d.h. der Button, den du als erstes eingefügt hast, ist als erster in der Liste.

    Gruß
    Richar

    Comment


    • #3
      hi richard,

      wenn ich nun alle buttons mit strg+x ausschneide und dann in der richtigen reihenfolge einfüge, dann tut es oder?

      Gruß

      Marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Formdesigner > rechte Maus > Erstellungsfolge<BR>
        Besser .Tag benutzen und danach sortieren

        Comment


        • #5
          @sigbert
          in der erstellungsfolge sind sie nicht drin!

          das sortieren klingt gut, aber ich habe keine idee wie man es in der praxis umsetzt!

          lösungsweg bzw./und codebeispiel wäre hilfreich!

          Gruß

          Marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Ich würde mich hierbei nicht auf Delphi verlassen, sondern auf einen eindeutigen Namen mit einer fortlaufenden Nummer setzen, z.B. sbML001, sbML002, ...
            Das hätte den Vorteil, dass Du Eigenschaften in einem Rutsch bearbeiten könntest.
            <code>
            for i := 1 to 8 do TSpeedButton(FindComponent('sbML00' + IntToStr(i))).Enabled := False;
            </code&gt

            Comment


            • #7
              mhm... der programmcode ist aber dann nach einem halben jahr, wo man nicht mehr so drin ist, schwer zu lesen, wenn sich die buttonnamen nur durch nummern unterscheiden
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Was man dann machen könnte wäre in "TAG" die Sortierung zu speichern dann erstellst du eine TList

                SpeedList:=TList.create;

                und Kopierst alle Speedbuttons rein.

                for i := 0 to Container.ControlCount-1 do
                if Container.Controls[i] is TSpeedbutton then
                SpeedList.add(Container.Controls[i]);

                Anschliessend schreibst du dir eine Sortier routine

                function SortByTag(...
                begin
                result:=TSpeedButton(item1).tag-TSpeedButton(item2).tag;
                end;

                Hasb nicht exakt im kopf, evtl. mußt su item1 und item2 vertauschen, wenn die liste Falsch rum sortiert ist.

                Dann sortieren mit

                SpeedList.sort(@SortByTag);

                und schon hast du die Objekte in der Richtigen Reihenfolge in deiner Liste stehen

                Comment


                • #9
                  stimmt! hört sich gut an, danke
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment

                  Working...
                  X