![]() |
ListView Spaltenbreiten in Datei speichern
Wie würdet ihr am einfachsten und effektivsten Spaltenbreiten einer ListView in einer Datei speichern?
Ich möchte die gerne speichern und auch wieder laden können. Mein aktueller Ansatz ist, alle Spalten durchzugehen, die Breite in Prozent (100% = ListView-Breite - 5 für Scrollbar) umzurechnen und zu speichern. |
AW: ListView Spaltenbreiten in Datei speichern
Beitrag war falsch da TE was anderes machen will als ich Vorschlug.
|
AW: ListView Spaltenbreiten in Datei speichern
Mir ist vollkommen klar, wie ich Spaltenwerte abfrage.
Mir geht es nur dadrum zu wissen, wie man die Werte am effizientesten speichert und lädt. |
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
|
AW: ListView Spaltenbreiten in Datei speichern
Gut lesbarer und vielleicht wiederverwendbarer Code (verschiedene Monitore, verschiedene Auflösungen), Prüfungen damit nichts Falsches gespeichert oder geladen wird und sowas.
|
AW: ListView Spaltenbreiten in Datei speichern
Kannst Du das etwas genauer ausführen?
Im allgemeinen läuft ein Programm auf einem Rechner mit einem Monitor und einer Auflösung. Zum Abspeichern der notwendigen Angaben sollte ein Record reichen. Lesbarer sind z.B csv, xml oder Json.Es kommtim wesentlichen auf Deine Ansprüche und Möglichkeiten an. Gruß K-H |
AW: ListView Spaltenbreiten in Datei speichern
Ich möchte gerne die Spaltenbreiten mit wenig Code so abspeichern können, dass die Breiten auf anderen Computern gleich aussehen. Natürlich in einer Ini-Datei. Kein Json, csv oder xml.
Deswegen dachte ich an prozentuale Werte die ausgerechnet und gespeichert werden. Ist es eine Überlegung wert, wenn ich die Daten (komma-separierter String mit Zahlen) aus einer Ini in ein Record lade und dann beim ändern der Spaltenbreiten immer das Record aktualisiere? So könnte ich beim Programmende auf das Record zugreifen und die Spaltenbreiten speichern. |
AW: ListView Spaltenbreiten in Datei speichern
Wenn du dir im Record auch noch merkst, ob überhaupt etwas geändert wurde, kannst du auch noch steuern, ob du überhaupt speichern musst.
Ich würde alle Spalten speichern, bis auf die letzte. Dazu die Breite des ListView. Dann kannst du alle Spalten berechnen und die letzte Spalte bekommt den übrig gebliebenen Platz. Das hat den Vorteil, dass Rundungsfehler durch die prozentuale Berechnung ziemlich egal sind. |
AW: ListView Spaltenbreiten in Datei speichern
Könntest du dazu ein kleines Beispiel bereitstellen?
|
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Wie man eine INI-Datei verwendet, sollte dir klar sein. Das Record könnte so aussehen:
Delphi-Quellcode:
Die Breite der letzten Spalte musst du dir nicht merken.
MyRecord = Record
Changed : Boolean; TotalWidth : Integer; WidthCol1 : Integer; WidthCol2 : Integer; WidthCol3 : Integer; ... end; //EDIT: //Einfacher dürfte es werden, wenn die Spaltenbreiten als Array verwaltet werden. Changed muss nach dem Einlesen aus der Ini-Datei mit False vorbelegt werden. Bei Veränderung der Spaltenbreite setzt du Changed auf True und belegst die Spaltenbreiten mit den neuen Werten. Wenn du die Daten in der Anwendung neu einliest, musst du die TotalWidth mit dem Wert des ListView vergleichen und daraus einen Umrechnungs-Faktor ermitteln. Mit diesem multiplizierst du dann die eingelesenen Werte der Spalten. Das ist aber nur ein Beispiel-Ansatz. Du kannst natürlich auch einfach ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 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