AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls ScrollBox mit dynamisch erzeugten Labeln statt ListView, oder doch was anderes?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von DieDolly · begonnen am 4. Mär 2021 · letzter Beitrag vom 4. Mär 2021
 
DieDolly

Registriert seit: 22. Jun 2018
2.175 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
 


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 15:11 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