![]() |
Problem mit TShellListView Komponente
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 |
Re: Problem mit TShellListView Komponente
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.
|
Re: Problem mit TShellListView Komponente
Leider nein. Im Windows Explorer sind meine Spalten viel breiter. Die von TShellListView sind unabhängig vom Windows Explorer.
rantanplan99 |
Re: Problem mit TShellListView Komponente
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? |
Re: Problem mit TShellListView Komponente
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 |
Re: Problem mit TShellListView Komponente
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 |
Re: Problem mit TShellListView Komponente
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 |
Re: Problem mit TShellListView Komponente
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
Delphi-Quellcode:
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*
ColWidth[ColumnCaption] := ColumnWidth;
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:43 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