Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Wünsche / Probleme mit TListView: Spaltenformatierung (https://www.delphipraxis.net/193066-wuensche-probleme-mit-tlistview-spaltenformatierung.html)

Laaeris 16. Jun 2017 13:41

Wünsche / Probleme mit TListView: Spaltenformatierung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Community,

trotz Suche an mehreren Stellen finde ich keine Lösung zu ein paar Sachen. Ich hoffe auf kompetente Hilfe...

1. Die ersten beiden Spalten Item und [0] (im Bild: Auge und Name) können zur Laufzeit verändert werden, alle anderen springen nach Veränderung wieder zurück in die ursprüngliche Breite. Im Coding behandele ich diese aber nicht unterschiedlich, die Breite der Spalte "Größe" / Spalte[3]kann ich auch im Coding nicht beeinflussen:

Delphi-Quellcode:
  (*Breite der Spalten ist konstant, mit Ausnahme des Spielernamens (wird gleich variabel "umgebaut")*)
  Form_Hauptuebersicht.ListView_Jugendspieler.column[0].width:=50; // Beobachtet?
  Form_Hauptuebersicht.ListView_Jugendspieler.column[1].width:=15; // Name, wird gleich dynamisiert
  For i:=2 to 4 do
    Form_Hauptuebersicht.ListView_Jugendspieler.column[i].width:=30; // Nation, Alter, Größe
  For i:=5 to 16 do
    Form_Hauptuebersicht.ListView_Jugendspieler.column[i].width:=20; // Skills
  Form_Hauptuebersicht.ListView_Jugendspieler.column[17].width:=100; // Wert in Euro
Nach Dateenfüllung:

Delphi-Quellcode:
  // Spaltenbreite an Länge des längsten Names anpassen
  Form_Hauptuebersicht.ListView_Jugendspieler.column[1].width:=ColumnTextWidth;
Autosize ist bei allen Spalten FALSE.
Width ist bei allen Spalten >0 (nicht -1 und -2).
TListView.OwnerDraw ist FALSE.

2. Die Werte in den Spalten sind nicht mehr zentriert (waren das aber mal). Was muss ich einstellen, damit die Werte zentriert dargestellt werden.

3. Die verwendete TListView (siehe Bild) möchte ich gerne auf die notwendige Größe reduzieren, ohne den schwarzen Rand unten und rechts. Wie kann ich das optimal gross machen.

Viele Grüße

David

EWeiss 16. Jun 2017 15:48

AW: Wünsche / Probleme mit TListView: Spaltenformatierung
 
Rechts!
In dem du der ListView mitteilst das die letzte Column sich automatisch auf die Weite des Header setzen soll

Delphi-Quellcode:
  ListView_SetColumnWidth(hListView, iCol, LVSCW_AUTOSIZE_USEHEADER);


Höhe!
Du weist doch wie viel maximale Einträge du der LsitView hinzufügst/ haben willst
die Maximalen Einträge * ItemHeight ergibt die gesamthöhe der ListView.
Wenn du also 10 Sichtbare Einträge in der ListView haben willst dann das mal die höhe der Items.
So hoch muss dann die ListView sein.

gruss

Laaeris 19. Jul 2017 17:57

AW: Wünsche / Probleme mit TListView: Spaltenformatierung
 
...schade, zu den ersten beiden Fragen scheint es keine Antwort zu geben.

Zu der dritten (Danke!) gibt es eine, die ich leider nicht umsetzen kann. Wie kriege ich ItemHeight denn raus? Die Fontgröße ist 10, aber das macht rechnerisch alles keinen Sinn. Auch die Breite kann ich anhand Deines Codebeispiels nicht ermitteln - da fehlen mir offensichtlich reichlich Kenntnisse. So kann ich es nicht verwenden, und auch das Suchen über Google oder hier im Forum hat mich leider nicht schlauer gemacht.

Hast Du für beides ein einfaches Codebeispiel zur Hand?

Ein verzweifelter

David

Redeemer 19. Jul 2017 21:58

AW: Wünsche / Probleme mit TListView: Spaltenformatierung
 
1. Ich sehe da keine Frage.
2. Das kann man bei den Spalten im OI einstellen.
3.2. Völlig banale Lösung: Neues Element einfügen und y-Position holen.

EWeiss 19. Jul 2017 22:03

AW: Wünsche / Probleme mit TListView: Spaltenformatierung
 
Hmm..
Wie hoch ist denn
Delphi-Quellcode:
ListView_Jugendspieler.column[0].Height
Wenn es Height gibt.. denke aber schon.

gruss

Laaeris 27. Jul 2017 13:34

AW: Wünsche / Probleme mit TListView: Spaltenformatierung
 
Liste der Anhänge anzeigen (Anzahl: 1)
...auch wenn ich oft denke, dass ich der einzig Blöde bin, hier die Lösungen für Andere.

Frage 1: Wieso springen die Spalten nach der Vergrößerung wieder zurück?
Antwort: Ich hatte MinWidth und Maxwidth auf ungleich 0 gestellt, das habe ich irgendwann zufällig beim Analysieren gesehen. Auf 0 stellen (Default), und das irritierende Verhalten endet.

Frage 2: Wieso sind die Werte in den Spalten nicht zentriert, obwohl die Eigenschaft ListView.Column[].Alignment auf taCenter steht?
-> ist noch nicht gelöst.

Frage 3: Habe ich ähnlich wie vorgeschlagen errechnet, danke!
Eine Eigenschaft ListView_Jugendspieler.column[0].Height gibt es allerdings nicht!

Viele Grüße

David


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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