AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

Ein Thema von TiGü · begonnen am 12. Dez 2016 · letzter Beitrag vom 14. Dez 2016
Antwort Antwort
Seite 1 von 2  1 2      
Brainshock

Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
 
Delphi 7 Professional
 
#1

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 14:01
Was passiert, wenn du das einstellst?

Code:
ATreeView.Header.Options:= ATreeView.Header.Options + [hoAutoResize];
ATreeView.Header.Options:= ATreeView.Header.Options + [hoColumnResize];
ATreeView.Header.AutoSizeIndex := 0;

Ach, und zu madas -> wtf?
Matthias
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
456 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 14:17
Hab das mal schnell ausprobiert und das sollte eigentlich ganz einfach funktionieren....
Angehängte Dateien
Dateityp: 7z TreeView.7z (4,7 KB, 9x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.081 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 14:30
Was passiert, wenn du das einstellst?

Code:
ATreeView.Header.Options:= ATreeView.Header.Options + [hoAutoResize];
ATreeView.Header.Options:= ATreeView.Header.Options + [hoColumnResize];
ATreeView.Header.AutoSizeIndex := 0;
Ja, das ist schon besser. Spalte eins nimmt die gesamte sichtbare Breite der Treeview ein.
Falls jedoch mehr Spalten vorhanden sind, werden die in den nicht sichtbaren Bereich geschoben und bleiben schmal.
Gab es denn keine Möglichkeit, dass sich die Treeview selber an den Breiten der Itemtexte (nebst Checkbox etc.) orientiert?

@Whookie:

Was?
Das hat ja nicht einmal sichtbare Spalten mit Header?!?
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
456 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 15:02
Beim mir schon:
Angehängte Grafiken
Dateityp: jpg virtualtree.JPG (16,3 KB, 38x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 15:15
Beim mir schon:
Also ich seh da keinen Header und keine Spalten.

@TE: Versuch doch mal folgendes: vst.Header.AutoFitColumns; .

Eventuell noch mit den diversen Parametern rumspielen. Das ist auch die Funktion die aufgerufen wird wenn du zwischen 2 Columns einen Doppelklick ausführst und dann bei dem Event OnColumnWidthDblClickResize() den Paramter Allowed auf True stellst.

Hoffe dir geholfen zu haben.
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
456 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 15:32
Also ich seh da keinen Header und keine Spalten.
Gibts ja auch Keine, so ist die Komponente ein einfacher Tree. Aber auch mit Column geht das (hoAutoResize muss gesetzt sein).
Angehängte Dateien
Dateityp: 7z TreeView_v2.7z (4,8 KB, 9x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 16:56
Hmm...
Ist es nicht eigentlich so das der Anwender die Max breite festlegt?
Und diese dann beim beenden gespeichert wird?

Das Virtual TreeView hat meines Erachtens schon immer Probleme beim Doppelklick zwischen zwei Einträgen im Header.
Hatte da mal einen SkinEditor geschrieben hat da nie funktioniert, habe es dann sein gelassen.


gruss

Geändert von EWeiss (11. Jul 2019 um 15:45 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 12. Dez 2016, 17:42
Das Virtual TreeView hat meines Erachtens schon immer Probleme beim Doppelklick zwischen zwei Einträgen im Header.
Dann hast du es falsch gemacht.

Bei mir funktioniert das problemlos. Schau mal in den SourceCode des VST was dort alle abgefragt wird. Du musst die Column Options entsprechend des gewünschten Ergebnisses setzen und auch noch mindestens das Event das ich in #9 genannt habe nutzen.

Wenn du das alles korrekt machst, dann funktioniert auch das automatische Resizen der Column.

Vorteil ist eben, dass der Tree z.B. die Breite des Textes automatisch entsprechend seines Canvas ermittelt und dann die größte Breite als ColumnWidth setzt.
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#9

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 13. Dez 2016, 07:41
Das Virtual TreeView hat meines Erachtens schon immer Probleme beim Doppelklick zwischen zwei Einträgen im Header.
Deshalb verwenden wir diese Variante: #4

Kommentar in unseren Quellen: // selber machen, weil BUG im VST die falsche Spalte verwendet - (12.01.2010)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen

  Alt 13. Dez 2016, 07:48
Code:
ATreeView.Header.Options:= ATreeView.Header.Options + [hoAutoResize];
ATreeView.Header.Options:= ATreeView.Header.Options + [hoColumnResize];
Das ist doch ein Set, also lieber so:
ATreeView.Header.Options := ATreeView.Header.Options + [hoAutoResize, hoColumnResize];
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:42 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