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/)
-   -   Delphi ListView: Erste Spalte rechtsbündig (https://www.delphipraxis.net/148128-listview-erste-spalte-rechtsbuendig.html)

LokutusvB 23. Feb 2010 09:50


ListView: Erste Spalte rechtsbündig
 
Hallo,

ich möchte gern bei einer ListView die Einträge der ersten Spalte rechtsbündig darstellen. Bei allen anderen Spalten geht das einfach über die Eigenschaft Alignment. Leider geht das aber nicht bei der ersten Spalte. Gibt es eine Möglichkeit, wie ich den Inhalt der ersten Spalte rechtsbündig darstellen kann?

DeddyH 23. Feb 2010 09:57

Re: ListView: Erste Spalte rechtsbündig
 
Füg doch einfach als erstes eine Dummy-Spalte mit Breite 0 ein.

LokutusvB 23. Feb 2010 10:07

Re: ListView: Erste Spalte rechtsbündig
 
Das war auch mein erster Gedanke. Allerdings erweitert mein Delphi diese Spalte dann autmatisch auf einen Wert von 80. Da dachte ich an ein Dummy von 1, allerdings sieht das in der Tabelle nicht gerade schön aus.

DeddyH 23. Feb 2010 10:17

Re: ListView: Erste Spalte rechtsbündig
 
Und wenn Du MinWidth der Spalte erst auf 0 setzt? Zumindest in D2007 funktioniert das.

LokutusvB 23. Feb 2010 10:18

Re: ListView: Erste Spalte rechtsbündig
 
Ja, den Gedanken hatte ich auch so eben und wollte hier niederschreiben, das es so funktioniert, zumindest so ähnlich. Ich habe zur Laufzeit einfach die Width-Eigenschaft auf 0 gesetzt. :)

Allerdings finde ich das nicht als "saubere Lösung". Gibt es noch einen anderen Weg?

Luckie 23. Feb 2010 10:21

Re: ListView: Erste Spalte rechtsbündig
 
Zitat:

Zitat von LokutusvB
ich möchte gern bei einer ListView die Einträge der ersten Spalte rechtsbündig darstellen. Bei allen anderen Spalten geht das einfach über die Eigenschaft Alignment. Leider geht das aber nicht bei der ersten Spalte.

Warum geht es nicht? Gibt es die Eigenschaft nicht oder zeigt sie keine Wirkung?

DeddyH 23. Feb 2010 10:26

Re: ListView: Erste Spalte rechtsbündig
 
Im Source steht bei TListColumn.SetAlignment eine Abfrage auf Index <> 0, deshalb hat diese Einstellung bei der ersten Spalte keine Auswirkung.

LokutusvB 23. Feb 2010 10:34

Re: ListView: Erste Spalte rechtsbündig
 
Ach so ist das mit der 0, obwohl MinWidth auf 0 steht.

An Luckie:
Die Eigenschaftsänderung der ersten Spalte zeigt einfach keine Wirkung. In Deplhi lässt sie sich nicht ändern. Ändere ich sie zur Laufzeit, zeigt die Änderung keine Wirkung, die Einträge sind weiterhin linksbündig.

Sharky 23. Feb 2010 10:41

Re: ListView: Erste Spalte rechtsbündig
 
Ich würde das ganze dadurch lösen das ich das zeichnen (Delphi-Referenz durchsuchenOwnerDraw) selber übernehme.
Dann kann ich den Text dort ausgeben wo ich es möchte.

LokutusvB 23. Feb 2010 10:46

Re: ListView: Erste Spalte rechtsbündig
 
Das habe ich eben probiert, mit OnCustomDraw. Mit jeder Spalte funktioniert es, nur nicht mit der ersten Spalte. Diese bleibt weiterhin linksbündig.

Sharky 23. Feb 2010 10:47

Re: ListView: Erste Spalte rechtsbündig
 
Zitat:

Zitat von LokutusvB
Das habe ich eben probiert, mit OnCustomDraw. Mit jeder Spalte funktioniert es, nur nicht mit der ersten Spalte. Diese bleibt weiterhin linksbündig.

Wie sieht den dein OwnerDraw aus?

LokutusvB 23. Feb 2010 10:54

Re: ListView: Erste Spalte rechtsbündig
 
Bisher noch leer, ich dachte die Eigenschaft auf True setzen reicht aus. Allerdings lese ich mir gerade deine verlinkte Seite durch, wie das mit dem OwnerDraw genau funktioniert. Ist denn OnCustomDraw nicht eigentlich das gleiche?

Sharky 23. Feb 2010 11:15

Re: ListView: Erste Spalte rechtsbündig
 
Damit sagst Du nur das Du selber zeichnen möchtest. Dafür muss dann aber auch etwas in OnOwnerDraw stehen.

LokutusvB 23. Feb 2010 12:24

Re: ListView: Erste Spalte rechtsbündig
 
Das wird mir dann für so eine kleine optische Sache doch zu umständlich. Ich dachte, ich könnte einfach mit OnCustomDrawSubItem den Text rechtsbündig gestalten, keine Chance. Selbst auf den Delphi-Seiten von about.com oder auch delphiDabbler findet man alle möglichen Spielereien, aber nichts, wie man die erste Spalte rechtsbündig gestalten kann. Dann werde ich doch einfach die erste Spalte als Dummy setzen. Leider spuckt auch Google nicht wirklich eine Lösung aus.

martinf16 6. Mär 2010 17:59

Re: ListView: Erste Spalte rechtsbündig
 
Ich habe gerade dasselbe Problem und habe dazu folgendes gefunden:

http://connect.microsoft.com/VisualS...e-first-column

Das kann doch nicht sein?! Da muss es doch eine Lösung für geben, die Spalte rechtsbündig hinzubekommen? Was macht man zum Beispiel in Sprachen, die generell rechtsbündig geschrieben werden?

daywalker9 6. Mär 2010 18:26

Re: ListView: Erste Spalte rechtsbündig
 
Probier mal dies hier:

Delphi-Quellcode:
column:=ListView1.Columns.Add;
column.Alignment := taRightJustify;
Das müsste funktionierten.

martinf16 6. Mär 2010 19:04

Re: ListView: Erste Spalte rechtsbündig
 
Zitat:

Zitat von daywalker9
Probier mal dies hier:

Delphi-Quellcode:
column:=ListView1.Columns.Add;
column.Alignment := taRightJustify;
Das müsste funktionierten.

Geht leider nicht. Es geht ja um die erste Spalte, bei den anderen Spalten geht es immer. Aber nicht bei der ersten Spalte... Vielleicht muss man da irgendeine Eigenschaft überschreiben, die die eigenen Einstellungen zurücksetzt oder so?!

DeddyH 6. Mär 2010 19:09

Re: ListView: Erste Spalte rechtsbündig
 
Vielleicht ist das in #7 nicht ganz klar formuliert gewesen:
Zitat:

Delphi-Quellcode:
procedure TListColumn.SetAlignment(Value: TAlignment);
begin
  if (Alignment <> Value) and (Index <> 0) then
  begin
    FAlignment := Value;
    ...
  end;
end;

Wenn der Index 0 ist, wird der Alignment-Setter von TListColumn gar nicht erst ausgeführt. Da bleiben wie bereits gesagt nur eine "Blindspalte" oder selbst zeichnen.

martinf16 7. Mär 2010 00:12

Re: ListView: Erste Spalte rechtsbündig
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
 and (Index <> 0)

Ich habe die Stelle auch schon probeweise rausgenommen, aber es funktioniert trotzdem nicht.

DeddyH 7. Mär 2010 13:09

Re: ListView: Erste Spalte rechtsbündig
 
Dann müsstest Du ja das entsprechende VCL-Package neu kompilieren.

Sir Rufo 7. Mär 2010 13:13

Re: ListView: Erste Spalte rechtsbündig
 
Zitat:

Zitat von DeddyH
Dann müsstest Du ja das entsprechende VCL-Package neu kompilieren.

Wenn hiermit aber einfach nur die Windows-ListView angesteuert wird, dann wird das auch keinen Effekt bringen.

Doch, einen Effekt hat es:

Man kann dann dann für die erste Spalte das Alignment einstellen und der Wert wird übernommen ...
aber es hat keine Auswirkungen :mrgreen:

martinf16 8. Mär 2010 03:56

Re: ListView: Erste Spalte rechtsbündig
 
Zitat:

Zitat von Sir Rufo
Wenn hiermit aber einfach nur die Windows-ListView angesteuert wird, dann wird das auch keinen Effekt bringen.

Weiß denn jemand ob damit nur die Windows ListView angesteuert wird?!


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