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?

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
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.173 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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 4. Mär 2021, 21:08
DoubleBuffered bei dieser Komponente aktivieren?


TCategoryPanelGroup

TGridPanel
TFlowPanel
TStackPanel
...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#3

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

  Alt 4. Mär 2021, 21:08
Es ist alles bei "Standard". Die ListView muss unbedingt weg.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 4. Mär 2021, 21:16
.. dauert bei mir ca. 100ms (80 - 125)

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#5

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

  Alt 4. Mär 2021, 21:21
Zitat:
.. dauert bei mir ca. 100ms (80 - 125)
Kann ich nicht nachvollziehen. Mach das mal mit Debugger dann sieht das anders aus.

Zitat:
TCategoryPanelGroup

TGridPanel
TFlowPanel
TStackPanel
Ohne Beispiele kann ich damit leider nix anfangen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 4. Mär 2021, 21:23
Zeiten im Debugger sind irrelevant ... für den Kunden / Benutzer des Programms.
Und natürlich ist dort alles "etwas" langsamer.

Ohne Beispiele kann ich damit leider nix anfangen.
F1?

Oder siehe eine der Werbungen des Herstellers. https://edn.embarcadero.com/article/33421
Und Google findet sogar Videos und Bildergalerien.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#7

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

  Alt 4. Mär 2021, 21:25
Die installiere ich nicht mit. StackPanel sieht vernünftig aus, aber nur eine Spalte und hat keinen Scrollbalken.

Bei mir dauert das mit der ScollBox auch ohne Debugger 600ms.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 4. Mär 2021, 21:37
Suche einfach im Forum
https://www.delphipraxis.net/dp_reference.php
Dort ist ein Index einer OnlineVersion der Hilfe drin.

Oder direkt beim Hersteller.
http://docwiki.embarcadero.com/RADSt...Hilfe:_DocWiki

Oder ganz einfach Google oder Dergleichen. (notfalls "docwiki" mit die Suchbegriffe, oder "embarcadero" oder "delphi" oder ...)
Und z.B. bei Klassennamen ein Anführungszeichen um den "Begriff" drumrum. (damit die Suche nicht den Begriff zerlegt)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Mär 2021 um 21:39 Uhr)
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#9

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

  Alt 4. Mär 2021, 21:51
Zitat:
Begin- und EndUpdate hat eine ScrollBox nicht.
Versuch mal DisableAlign und EnableAlign, wirkt bei mir Wunder.
Renate
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#10

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

  Alt 4. Mär 2021, 23:02
Ein VirtualTreeView hat das Problem erledigt. Das hat den Vorteil, dass ich eine vorhandene Datenstruktur weiter verwenden kann.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz