Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
1.913 Beiträge
 
#1

ScrollBox mit dynamisch erzeugten Labeln statt ListView, oder doch was anderes?

  Alt 4. Mär 2021, 20:58
Ich habe eine ListView-Komponente mit ungefähr 30 Einträgen in jeweils zwei Spalten.
Es gibt eine Animation die dieses ListView am Rand des Programmfensters ein- und ausblendet.
Aber blöderweise sieht man bei der Animation ein Flackern in der Komponente selber. Die wird dann ständig weiß, obwohl das Programm-Theme ein dunkles ist.
Das Problem lässt sich auch nicht beheben und kommt von der Komponente selber.

Ich habe mir jetzt überlegt, eine ScrollBox stattdessen zu nehmen und die Label die ich brauche dynamisch zu erzeugen aber das dauert relativ lange wie ich finde.
Begin- und EndUpdate hat eine ScrollBox nicht. Gibt es eine bessere Lösung? Die Infos sollen nur in zwei Spalten angezeigt werden. Es muss keine spezielle Komponente sein und auch nicht editierbar.

Mein erster Versuch
Delphi-Quellcode:
procedure TForm3.Button2Click(Sender: TObject);
var
 i, LastLabelTop: Integer;

 procedure AddItemToScrollBox(const Caption, SubItem: string);
 var
  LabelTitle, LabelSubTitle: TLabel;
 begin
  LabelTitle := TLabel.Create(ScrollBox1);
  LabelTitle.Parent := ScrollBox1;
  LabelTitle.Visible := True;
  LabelTitle.Caption := Caption;
  LabelTitle.Top := LastLabelTop;
  LabelTitle.Left := 5;

  LabelSubTitle := TLabel.Create(ScrollBox1);
  LabelSubTitle.Parent := ScrollBox1;
  LabelSubTitle.Visible := True;
  LabelSubTitle.Caption := SubItem;
  LabelSubTitle.Top := LabelTitle.Top;
  LabelSubTitle.Left := ScrollBox1.Width div 2; // Label 2 wird bei 50% der ScrollBox-Weite gezeichnet

  LastLabelTop := LabelSubTitle.Top + LabelSubTitle.Height + 3;
 end;

begin
 LastLabelTop := 5;

 for i := 0 to 35 do
  AddItemToScrollBox('Test 1111 2222 4444', 'Subtest 1111 2222 4444 5555 6666 7777 8888 9999 0000');
end;

Geändert von DieDolly ( 4. Mär 2021 um 21:01 Uhr)
  Mit Zitat antworten Zitat