AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TAlignLayout.Top die Reihenfolge stimmt nicht

Ein Thema von Peter-Pascal · begonnen am 4. Aug 2019 · letzter Beitrag vom 5. Aug 2019
Antwort Antwort
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
200 Beiträge
 
Delphi 11 Alexandria
 
#1

TAlignLayout.Top die Reihenfolge stimmt nicht

  Alt 4. Aug 2019, 11:28
Hallo zusammen,

ich erstelle Rectangle und fülle sie mit einem Label. Beides soll in einer Srcollbox am oberen Rand angeordnet werden. Im Label steht nur eine laufende Nummer. Den Rectangle weise ich TAlignLayout.Top zu, aber sie stehen nicht in der Reihenfolge wie sie erstellt wurden (siehe Bild).

Mit folgendem Code erstelle ich die Rectangle und ordne sie der Scrollbox zu:
Delphi-Quellcode:

var
  Anzahl : Integer = 0; //globale Variable für die Nummerierung der Rectangle

procedure TbfDeckblattForm.Button2Click(Sender: TObject);
var
  rec : TRectangle;
  L : TLabel;
begin
  ScrollBox1.BeginUpdate;
  rec := TRectangle.Create(bfDeckblattForm);
  ScrollBox1.AddObject(rec);
  rec.Parent := ScrollBox1;
  rec.Align := TAlignLayout.Top;

  L := TLabel.Create(rec);
  rec.AddObject(L);
  Anzahl := Anzahl + 1;
  l.Text := anzahl.ToString;
  l.Align:= TAlignLayout.Left;
  l.Margins.Left := 5;
  ScrollBox1.EndUpdate;
end;
Die neuen Rectangle werden alle nach dem ersten Rectangle angeordnet, leider nicht nach der zuletzt hinzugefügten.

Ich habe die Version Rio 10.3.2, Ich bin mir nicht sicher, aber bei der Vorgänger-Version Rio 10.3.1 ist mir dieses Verhalten nicht aufgefallen.


Hat jemand eine Idee, was ich falsch mache?

Gruß Pascal
Angehängte Grafiken
Dateityp: jpg Aling Top.jpg (12,3 KB, 24x aufgerufen)
Peter Niemeier
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
902 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TAlignLayout.Top die Reihenfolge stimmt nicht

  Alt 4. Aug 2019, 12:44
Probier mal die Eigenschaft Top passend zu setzen (also unter das zuletzt erstellte), bevor du das Align setzt.

Ich plage mich in der VCL und Panels grade mit was ähnlichem rum, und wenn ich die Position vorher passend setze, erhalte ich das gewünschte Ergebnis.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
200 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TAlignLayout.Top die Reihenfolge stimmt nicht

  Alt 4. Aug 2019, 13:49
Danke für Deine Antwort,

leider verstehe ich nicht, was Du mit Top passend setzen meinst.
Peter Niemeier
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
711 Beiträge
 
Delphi 12 Athens
 
#4

AW: TAlignLayout.Top die Reihenfolge stimmt nicht

  Alt 4. Aug 2019, 13:58
Danke für Deine Antwort,

leider verstehe ich nicht, was Du mit Top passend setzen meinst.
Na, ein Control hat nach dem Erzeugen einen Default-Wert für die Top-Property, und zwar 0. Das Align auf top zu setzen bestimmt den neuen Top Wert indem es zuerst mal alle Controls auf dem gleichen Parent und mit Align alTop nach ihrem momentanen Wert für Top sortiert und dann für alle die Top-Werte neu setzt. Dein neues Control landet also in dieser sortierten Liste ganz am Anfang. Um es ans Ende zu bekommen setze sein Top auf einen gr0ßen Wert, z.B. MaxWord bevor Du sein ALign auf alTop setzt.
Peter Below
  Mit Zitat antworten Zitat
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
200 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TAlignLayout.Top die Reihenfolge stimmt nicht

  Alt 4. Aug 2019, 16:16
jetzt habe ich es verstanden, glaube ich jedenfalls, ich habe folgendes gemacht:

Delphi-Quellcode:
procedure TbfDeckblattForm.Button2Click(Sender: TObject);
var
  rec : TRectangle;
  L : TLabel;
begin
  ScrollBox1.BeginUpdate;
  rec := TRectangle.Create(bfDeckblattForm);
  ScrollBox1.AddObject(rec);
  rec.Parent := ScrollBox1;
[B]// rec.Align := TAlignLayout.Bottom;
  rec.Align := TAlignLayout.None;[/B]
  rec.Align := TAlignLayout.Top;
Zwei Zeilen habe ich eingezogen, aber mit dem gleichen Ergebnis. Wenn ich alle drei zusammen setze, also erst auf Bottom, dann auf None und zum Schluss auf Top, dann verweigert der Compiler offensichtlich seinen Dienst.
Warum werden die markierten Zeilen nicht fett gedruckt?
Peter Niemeier
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
902 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TAlignLayout.Top die Reihenfolge stimmt nicht

  Alt 4. Aug 2019, 19:36
Äh, nein. Eher so:

Delphi-Quellcode:
  ScrollBox1.BeginUpdate;
  rec := TRectangle.Create(bfDeckblattForm);
  ScrollBox1.AddObject(rec);
  rec.Parent := ScrollBox1;
  // ---------
  rec.Top := 42; // oder was sehr, sehr hohes,
                  // oder besser direkt der Wert, an dem es erscheinen sollte
  // -----------
  rec.Align := TAlignLayout.Top;
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:49 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-2025 by Thomas Breitkreuz