![]() |
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 ![]() |
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Du kannst natürlich im Create oder ReSize Part eine prozentuale Breite definieren lassen. (ohne speichern) |
AW: ListView Spaltenbreiten in Datei speichern
Alles verstanden, bis auf das mit dem Umrechnungsfaktor.
@KodeZwerg ich denke du liest zuviel Zwischen den Zeilen. Zitat:
|
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Das heißt, alles müsste mit 1,5 (450/300) multipliziert werden. Das wäre dann der Umrechnungsfaktor. |
AW: ListView Spaltenbreiten in Datei speichern
Verstehe ich noch immer nicht. Auf einem anderen könnte es genau so gut 200, 300 oder 700 sein.
Warum nicht einfach die Pixel in Prozentumrechnen und abspeichern? |
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
|
AW: ListView Spaltenbreiten in Datei speichern
@DieDolly
Dann gib doch mal ein konkretes Beispiel, wie du dir das vorstellst. Gesamte Breite und die Breite der Spalten auf dem Rechner A und wie die Spaltenbreiten auf Rechner B sein sollen, wenn dort die Gesamtbreite = Gesamtbreite auf Rechner A + X ist. @KodeZwerg Zu deinem Code aus deinem ersten Beitrag hier solltest du noch schreiben Zitat:
EDIT: Sehe gerade, der ist ja gottlob schon entfernt worden |
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Zitat:
|
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Dabei hat der TE im ersten Beitrag schon durchblicken lassen, das er genau das kann Zitat:
Anyway, der Code ist ja weg und kann daher niemanden (vor allem Anfänger) verwirren. |
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Zitat:
|
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Ich bin gespannt was passiert wenn auf anderem Pc eine andere Dpi gesetzt ist:stupid: |
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
|
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
gruss |
AW: ListView Spaltenbreiten in Datei speichern
Zitat:
Das ist aber nicht das was ich brauche. Ansonsten würde der Titel anders lauten. Meine Frage wurde beantwortet. Ihr könnt nun aufhören euch die Köpfe einzuschlagen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 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