AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi ListView Spaltenbreite an Text automatisch anpassen

ListView Spaltenbreite an Text automatisch anpassen

Ein Thema von Sven Janssen · begonnen am 22. Jun 2004 · letzter Beitrag vom 23. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#1

ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 15:13
Morgen Leute.

wie bekomme ich es hin, das ich die Spaltenbreite automatisch an die Textbreite des Inhaltes anpassen kann? Angeblich mit property AutoSize: Boolean; aber das will nicht so ganz wie ich es möchte.

Wir kann ich den Doppelklick auf die Spaltentrenner programmatisch aufrufen?
Weil genau das wäre wohl die Idealste Lösung. Erst alles füllen und dann den Klick auf die Spaltentrenner simulieren.

Gruß
Sven
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 15:41
Hallo,

das autosize boolean, hat damit nicht's zu tun, bei autosize wird nur angegeben, wenn die breite deines Listvies verändert wird, wird der Breite des Spalte dessen autosize auf true steht, automatisch die verbeitet, damit du nicht eine (leere) Spalte zu viel hast.

Wie man die einzelnen Spaltenbreiten an den Inhalt anpasst, bzw. so anpasst damit man keine horizontale Scrollbar erhält, sobal die vertikale Scrollbar sichtbar wird, rätsel ich ebenfalls schon ne ganze Weile rum.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#3

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 16:12
Ich hab mir überlegt das man das Zeichen selber übernimmt und damit per canvas.textwidth die Breite des Textes heraus bekommt und danach die Spaltenbreite auf die größte gefundene Breite setzt.
Aber das ist sehr umständlich.

Sven
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 16:14
Zitat von Sven Janssen:
Ich hab mir überlegt das man das Zeichen selber übernimmt und damit per canvas.textwidth ....
Du brauchst doch nicht selber zu Zeichnen um über den von dir beschriebenen Weg die Textbreite zu ermitteln und die Spaltenbreite entsprechend zu setzen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#5

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 16:38
Stimmt.
Ich habs auch nun.

Font des canvas der ListView = Font der ListView.
Dann ne menge Abfragerrei, die Breiten in einem Array merken und dann mit einer for Schleife über den Array laufen und die Breiten setzen.

Ich musste aber ca 20 Pixel zu dem berechneten Wert hinzuaddieren, sonst hat es nicht ganz gepasst.

Sven
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 16:41
Zitat von Sven Janssen:
...Dann ne menge Abfragerrei, die Breiten in einem Array merken und dann mit einer for Schleife über den Array laufen und die Breiten setzen....
Ist es nicht möglich/einfacher beim Eintragen eines Textes in die "Zelle" die notwendige Breite zu berechnen, diese mit der aktuellen Breite zu vergelichen und gegebenenfalls diese anzupassen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#7

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 17:18
Sven Janssen, könntest du mal deinen source posten, vielleicht lässt sich der ja noch optimieren.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#8

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 17:37
Delphi-Quellcode:
var spalte,col:integer;
    colw : array [0..10] of integer;
begin
    lv2.canvas.font:=lv2.font;
    for i:=low(colw) to high(colw) do colw[i]:=100;
    lv2.Columns.clear;
    q.first;
    while not q.eof do begin
    .
    . // Hier wird durch eine Tabelle gelaufen für n Elemente
    .
        nitem.subitems.add(q.fieldbyname(telArray[was]).asstring); telefoncol:=0;
        col:=lv2.canvas.textwidth(q.fieldbyname(telArray[was]).asstring);
        inc(spalte);
        if col > colw[spalte] then colw[spalte]:=col;

        nitem.subitems.add(q.fieldbyname(faxArray[was]).asstring); faxcol:=1;
        col:=lv2.canvas.textwidth(q.fieldbyname(faxArray[was]).asstring);
        inc(spalte);
        if col > colw[spalte] then colw[spalte]:=col;

        nitem.subitems.add(q.fieldbyname(emailArray[was]).asstring); emailcol:=2;
        col:=lv2.canvas.textwidth(q.fieldbyname(emailArray[was]).asstring);
        inc(spalte);
        if col > colw[spalte] then colw[spalte]:=col;
        q.next;
    end;
    .
    . // usw usw. _spalte_ deshalb da die Einträge variable sind.
    .

    for i:=0 to lv2.Columns.count -1 do lv2.Columns[i].width:=colw[i]+20;

end;
Wirklich viel zum optimieren sehe ich dort nicht.
Oben ein Löschen, pro Eintrag 3 Zeilen für die Abfrage und unten eine Schleife für das setzen der Breite.

Sven - nun Feierabend macht ... bis morgen
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 18:55
Zitat von Sven Janssen:
Morgen Leute.

wie bekomme ich es hin, das ich die Spaltenbreite automatisch an die Textbreite des Inhaltes anpassen kann? Angeblich mit property AutoSize: Boolean; aber das will nicht so ganz wie ich es möchte.
Hallo

man braucht eigentlich keinen extra code, probiers doch einfach mal mit
listview1.column[x].width := ColumnTextWidth    oder ColumnHeaderWidth. Columntextwidth : die spalte ist so groß wie der text und bei der andern wird die spaltegrößn anhand des Headers ermittelt.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: ListView Spaltenbreite an Text automatisch anpassen

  Alt 22. Jun 2004, 21:09
setze doch einfach die column-width auf -1, das ist einfach!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 16:48 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