Announcement

Collapse
No announcement yet.

Speedbutton zur laufzeit positionieren

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

  • Speedbutton zur laufzeit positionieren

    Hallo,

    ich habe einen panel auf welchem speedbuttons sind und ein pagecontrol. je nachdem welche seite vom pagecontrol aktiviert ist, werden speedbutton sichtbar und/oder unsichtbar gemacht!
    das unsichtbar machen der speedbuttons hinterläßt "lücken", sieht für den anwender nicht gut aus!
    wie schaffe ich es, dass diese lücken nicht da sind, sprich, die speedbuttons immer so angeordenet werden, dass es "gut" aussieht?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Im zweifelsfall eine liste anlegen (TList) dort alle Speedbuttons reinwerfen, die lückenlos geschlossen werden sollen. Anschliessend mit einer schleife durch die Liste laufen, nachschauen, ob das Objekt sichtbar ist, und dann Positionieren.
    Wenn du zwei reihen Speedbuttons hast brachst du auch zwei listen, etc..

    Comment


    • #3
      danke!

      habe bißchen rumprobiert und es so gelöst:
      <pre>

      Beispielaufruf:
      SichtbareSpeedbuttonsAnordnen(Pnltoolbar,'btnSchli essen',1);

      procedure SichtbareSpeedbuttonsAnordnen(Container:TWincontro l;NameStartbutton:String;
      Abstand:integer);

      var
      i,startleft,startwidth,buttonnr : integer;
      begin
      buttonnr := 0;
      for i := 0 to Container.ControlCount-1 do
      if Container.Controls[I] is TSpeedbutton then
      if (Container.Controls[I] as TSpeedbutton).name = NameStartbutton then
      begin
      startleft := (Container.Controls[I] as TSpeedbutton).left;
      startwidth := (Container.Controls[I] as TSpeedbutton).Width;
      continue;
      end else
      if Container.Controls[I] is TSpeedbutton then
      if ((Container.Controls[I] as TSpeedbutton).name <> NameStartbutton)
      and ((Container.Controls[I] as TSpeedbutton).Visible = true) then
      begin
      inc(buttonnr);
      (Container.Controls[I] as TSpeedbutton).Left := startleft+buttonnr*startwidth+Abstand;
      end;

      end;
      </pre>

      Gruß

      Marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment

      Working...
      X