AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Anordnen von zur Laufzeit erzeugten Komponenten (hier Button)
Thema durchsuchen
Ansicht
Themen-Optionen

Anordnen von zur Laufzeit erzeugten Komponenten (hier Button)

Ein Thema von Blitzschutz1 · begonnen am 7. Apr 2022 · letzter Beitrag vom 8. Apr 2022
 
Blitzschutz1

Registriert seit: 2. Dez 2011
Ort: Vogtland (über Bayern)
26 Beiträge
 
Delphi 10.4 Sydney
 
#1

Anordnen von zur Laufzeit erzeugten Komponenten (hier Button)

  Alt 7. Apr 2022, 20:03
Ich stehe gerade mächtig auf dem Schlauch...
Es werden 10 Button in einer schleife erzeugt, die in 5 Spalten und zwei Zeilen angeodnet werden sollen (es können aber auch 15 Button in 5 Spalten und drei Zeilen usw. sein). Das Button-Array ist als dynamisch deklariert. CONST_SOUNDBUTTONS ist derzeit 10.

Code sieht wie folgt aus:
Delphi-Quellcode:
var i, zeile, spalte: Integer;
    AbstandX, OffsetX: Integer;
    AbstandY, OffsetY: Integer;
begin

  SetLength(MyBtns, 0);

  AbstandX := 10; // Abstand der einzelnen Spalten
  OffsetX := 25; // Abstand der ersten Spalte von links

  AbstandY := 20; // Abstand der einzelnen Zeilen
  OffsetY := 100; // Abstand der ersten Zeile von oben

  zeile := 0;
  spalte := 0;

  for i := 0 to CONST_SOUNDBUTTONS - 1 do
  begin
    SetLength(MyBtns, Length(MyBtns) + 1);

    MyBtns[Length(MyBtns)-1] := TButton.Create(NIL);
    MyBtns[Length(MyBtns)-1].Parent := TabSheet2;
    MyBtns[Length(MyBtns)-1].Name := 'btnSound' + IntToStr(i);
    //MyBtns[Length(MyBtns)-1].Caption := 'Sound ' + IntToStr(i+1);

    // nur zum Ansehen der aktuellen Spalten- und Zeilenwerte
    MyBtns[Length(MyBtns)-1].Caption := IntToStr(spalte) + '|' +
                                        IntToStr(zeile);


    MyBtns[Length(MyBtns)-1].Height := 25;
    MyBtns[Length(MyBtns)-1].Width := 75;


    MyBtns[Length(MyBtns)-1].Left :=
      spalte * (AbstandX + MyBtns[Length(MyBtns)-1].Width) + OffsetX;

    MyBtns[Length(MyBtns)-1].Top :=
      zeile * (AbstandY + MyBtns[Length(MyBtns)-1].Height) + OffsetY;


    if ((i MOD 4 = 0) AND (i > 0)) then
    begin
      spalte := 0;
    end
    else
    begin
      Inc(spalte);
    end;

    if i MOD 5 = 0 then
    begin
      Inc(zeile);
    end;

  end;
end;
Meine Frage: Was mache ich falsch. Wo ist mein Denkfehler. Rauskommen tut derzeit siehe Bild...
Angehängte Grafiken
Dateityp: png Button-Anordnung.png (2,2 KB, 33x aufgerufen)
Wenn die Klugen nachgeben geschieht das was die Dummen wollen!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz