AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit TShellListView Komponente

Ein Thema von rantanplan99 · begonnen am 2. Jul 2004 · letzter Beitrag vom 10. Jul 2004
Antwort Antwort
rantanplan99
(Gast)

n/a Beiträge
 
#1

Problem mit TShellListView Komponente

  Alt 2. Jul 2004, 20:52
Hallo,

ich habe ein Problem mit der TShellListView Komponente. Und zwar sobald ich ein Verzeichnis wechsel, oder .Refresh aufrufe, wird die Spaltenbreite wieder zurückgesetzt. Ich würde aber gerne die Spalte breiter ziehen damit Dateinamen vollständig angezeigt werden, so dass die Spaltenbreite beibehalten bleibt wenn ich das Verzeichnis wechsel, oder Refresh aufrufe. Ich habe auch die ShellShock VCL Komponenten ausprobiert, aber da ist es das selbe

Het jemand einen Tipp wie ich das Problem beseitigen könnte, oder eine alternative VCL Komponente die dieses Problem nicht hat? Wäre klasse falls da jemand eine Idee hätte.

rantanplan99
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Problem mit TShellListView Komponente

  Alt 2. Jul 2004, 21:44
Wenn die Komponenten direkt auf dem Windows-Control aufsetzen (was anzunehmen ist), dann musst Du wahrscheinlich erst die Optionen im Windows Explorer ändern damit es sich wie gewünscht verhält.
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#3

Re: Problem mit TShellListView Komponente

  Alt 2. Jul 2004, 21:49
Leider nein. Im Windows Explorer sind meine Spalten viel breiter. Die von TShellListView sind unabhängig vom Windows Explorer.

rantanplan99
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit TShellListView Komponente

  Alt 2. Jul 2004, 22:22
Moin Rantanplan,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Der ShellListView hat ja die Eigenschaft Column, die wiederum die Eigenschaft Width haben.
Hast Du schon mal versucht die einfach auf den gewünschten Wert zu setzen?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#5

Re: Problem mit TShellListView Komponente

  Alt 2. Jul 2004, 22:44
Hallo Christian,

ja, das habe ich probiert, nur beim nächsten Verzeichniswechsel/Refresh wird es dennoch wieder zurückgesetzt. Zum anderen soll der Anwender ja auch die Spalten selbst verändern können.

Ich habe auch versucht bei jedem Verzeichnis wechsel, und vor meinen Refresh aufrufen, die Column[].Widths zu sichern, und nach dem Refresh wieder zu setzen, dabei flackert das aber, sprich man sieht dass die Spalten erst kleiner werden und dann wieder grösser. Keine schöne Lösung

rantanplan
  Mit Zitat antworten Zitat
Frank2004

Registriert seit: 2. Jul 2004
Ort: Deutschland
4 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Problem mit TShellListView Komponente

  Alt 2. Jul 2004, 23:12
Hallo rantanplan99,

tShellListView arbeit hier mit den Colums und auch mit der Property Autosize. Ist diese True, werden die Spalten automatisch angepasst.
Wichtig um eine Spalte zu regulieren wäre also ein Zurücksetzen der
Property Autosize auf False. Dann sollte es funktionieren.

Jedoch wird es hier ein kleines Problem mit der Grössenbestimmung der Spalten geben:
Die ShellList bezieht die Columns via ShellApi und initialisiert beim erstellen der Columns diese auch mit der Width aus dem Detail des Folders. Hier geht der Explorer jedoch einen anderen Weg, als Delphi dieses tut. Jedenfalls greift hier nicht GetDialogBaseUnits, tmAveCharWidth o.Ä.

Wenn Du hier selber eingreifen willst solltest Du Dich in der MSDN schlau lesen oder wirklich auf eine fertige Lösung zurückgreifen.

Grüsse
Frank2004
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#7

Re: Problem mit TShellListView Komponente

  Alt 2. Jul 2004, 23:37
Hallo Frank2004,

also bei mir hat TShellView kein property AutoSize und dir Column[].AutoSize Werte auf False setzen bringt nicht, das wird wohl ignoriert. (Auf True setzen bringt aber auch nichts)

Wenn du eine fertige Lösung kennst bei der das funktioniert wäre ich dir dankbar wenn du sie mir verrätst. Wie gesagt die ShellListView aus der ShellShock Libary hat dasselbe Problem.

rantanplan
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#8

Re: Problem mit TShellListView Komponente

  Alt 10. Jul 2004, 18:38
Hab mir den Source von den ShellList/TreeView angeschaut, und die ColumnWidth ist dort 'hardcoded' festgelegt (mit Konstanten). Ich hab das ganze jetzt umgeschrieben das jedesmal wenn die Columns gelöscht werden, er vorher deren Breite in ein assoziatives Array (Hash) schreibt in der Art ColWidth[ColumnCaption] := ColumnWidth; und wenn er wieder die Columns erzeugt, nehm ich die Fixwerte, oder falls ein Eintrag für diese Spalte existiert, den ColWidth[ColumnCaption] Wert. Und jetzt funktioniert das ganze so wie ich es will *g*

Ok, für die 8 oder 9 möglichen Spalten ein Hash zu nehmen ist evtl. ein bischen mit Kanonen auf Spatzen geschossen, aber es funktioniert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:28 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