Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Falsche Darstellung einer ListView im PageControl (https://www.delphipraxis.net/193223-falsche-darstellung-einer-listview-im-pagecontrol.html)

Mike_on_Tour 6. Jul 2017 15:09


Falsche Darstellung einer ListView im PageControl
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hallo zusammen,

Im anhängenden Beispielprogramm geht es um einen bisher nicht erklärbaren Effekt bei der Anzeige von TListView-Komponenten innerhalb von verschiedenen TabSheets einer PageControl.

Als Entwicklungssystem werden Delphi XE2 und/oder Delphi 10.2 eingesetzt. Als Betriebssystem wird Windows7-Pro64 mit einer Standard-Bildschirmauflösung (1680 x 1050) und kleiner Textdarstellung (100 Prozent) verwendet.

Je nach Bildschirmauflösung und Textdarstellung werden ListView-Komponenten nicht korrekt dargestellt. Es wird keine Skalierung "angewendet" und die Anzeige erfolgt mit den Vorgabewerten aus der IDE. Dazu folgende Testläufe:

1. Testlauf (Standard-Einstellung)
Die Konstante BSCALED (Form2, Zeile 83) wird auf "FALSE" gesetzt.
Die Konstante BPAGED (Form2, Zeile 84) wird auf "FALSE" gesetzt.
Die Auswahl eines TabSheets auf dem 'PageControl1' in der Form2 hat keine Bedeutung.
Das Programm wird gestartet.
Beide ListView-Anzeigen werden korrekt dargestellt.
Alles OK.

2. Testlauf (Simulation einer Skalierung, Textdarstellung 125 Prozent)
Die Konstante BSCALED (Form2, Zeile 83) wird auf "TRUE" gesetzt.
Die Konstante BPAGED (Form2, Zeile 84) wird auf "FALSE" gesetzt.
In der IDE wird in 'Form2' auf dem 'PageControl1' der 'TabSheet1' ausgewählt.
Die ListView-Anzeige auf dem 'TabSheet1' wird korrekt dargestellt.
Die ListView-Anzeige auf dem 'TabSheet2' wird nicht korrekt dargestellt.

3. Testlauf (Simulation einer Skalierung, Textdarstellung 125 Prozent)
Die Konstante BSCALED (Form2, Zeile 83) wird auf "TRUE" gesetzt.
Die Konstante BPAGED (Form2, Zeile 84) wird auf "FALSE" gesetzt.
In der IDE wird in 'Form2' auf dem 'PageControl1' der 'TabSheet2' ausgewählt.
Die ListView-Anzeige auf dem 'TabSheet1' wird nicht korrekt dargestellt.
Die ListView-Anzeige auf dem 'TabSheet2' wird korrekt dargestellt.

4. Testlauf (Simulation einer Skalierung, Textdarstellung 125 Prozent)
Die Konstante BSCALED (Form2, Zeile 83) wird auf "TRUE" gesetzt.
Die Konstante BPAGED (Form2, Zeile 84) wird auf "TRUE" gesetzt.
In der IDE wird in 'Form2' auf dem 'PageControl1' der 'TabSheet1' ausgewählt.
Die ListView-Anzeige auf dem 'TabSheet1' wird korrekt dargestellt.
Die ListView-Anzeige auf dem 'TabSheet2' wird korrekt dargestellt.

5. Testlauf (Simulation einer Skalierung, Textdarstellung 125 Prozent)
Die Konstante BSCALED (Form2, Zeile 83) wird auf "TRUE" gesetzt.
Die Konstante BPAGED (Form2, Zeile 84) wird auf "TRUE" gesetzt.
In der IDE wird in 'Form2' auf dem 'PageControl1' der 'TabSheet2' ausgewählt.
Die ListView-Anzeige auf dem 'TabSheet1' wird nicht korrekt dargestellt.
Die ListView-Anzeige auf dem 'TabSheet2' wird korrekt dargestellt.

Wie ist das Verhalten der ListView's zu erklären und wo liegt der Fehler ?

Mit besten Grüßen
Mike

WiPhi 7. Jul 2017 08:11

AW: Falsche Darstellung einer ListView im PageControl
 
Hallo Mike,

ich habe mir dein kleines Testprogramm im Delphi 10.2 (Starter und Pro) angesehn. Den Effekt konnte ich reproduzieren, also vermute ich das es sich hierbei um ein VCL Skalierungsproblem seitens Delphi handelt.

Vielleicht wäre das einen Eintrag im QC wert?

Viele Grüße.

Papaschlumpf73 7. Jul 2017 09:55

AW: Falsche Darstellung einer ListView im PageControl
 
Hast du das schon probiert?

http://www.delphipraxis.net/189426-d...ontrol+scaleby

haentschman 7. Jul 2017 10:31

AW: Falsche Darstellung einer ListView im PageControl
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hallöle...:P
Zu erst einmal, das Projekt im Anhang schaut jetzt auch mit 125 so aus wie du es willst. 8-)
Schau dir im Projekt meine Änderungen an. (Properties der Controls). Warum die Listviev nicht den Font übernimmt kann ich nicht sagen. :roll:

[meine Meinung]
Das ScaleBy funktioniert nicht wirklich. Ich würde Windows das Skalieren überlassen. Dafür mußt aber alle Controls "anheften".
[/meine Meinung]

Ein paar Tipps:
1. Ancors, Margins und Align sind dein Freund. :wink: Erst Recht wenn du auf mobilen Platformen arbeitest oder willst.
2. Versuche die Anzahl der verschieden Controls zu minimieren. Die Eigenschaften des ValueListEditors lassen sich auch mit Sicherheit auch in einer Listview darstellen. Der Vorteil die Optik paßt. Wie du sehen kannst ist der ValueListEditor in 125 unterschiedlich zur Listview hoch. Auch die Header passen optisch nicht. Wenn man auch solche Kleinigkeiten achtet, stört dich es irgendwann oder du hast viel Arbeit mit der Anpassung.
3. Die Controls auf Panels plazieren. Erleichtert die Positionierung. (pnl1 = Hilfspanel)
4. Bezeichnung der Controls. Unterstriche sind nicht mehr "erlaubt" :zwinker: Wenn möglich Denglisch vermeiden. :zwinker:
Delphi-Quellcode:
Label_Telefon.Caption := '12345';
// besser...
lblPhone.Caption := '12345';
:thumb:

Mike_on_Tour 21. Jul 2017 20:49

AW: Falsche Darstellung einer ListView im PageControl
 
Hallo zusammen,

vielen Dank erst mal für die Antworten. Ich war zwischenzeitlich erst mal mit anderen wichtigen Aufgaben "unterwegs" und habe das Thema verdrängt.
Aus meiner Sicht ist mein "Testlauf Nr. 4" aktuell die beste Lösung als "Workaround".

@ WiPhi
Zitat:

ich habe mir dein kleines Testprogramm im Delphi 10.2 (Starter und Pro) angesehn. Den Effekt konnte ich reproduzieren, also vermute ich das es sich hierbei um ein VCL Skalierungsproblem seitens Delphi handelt.
Vielleicht wäre das einen Eintrag im QC wert?
Danke für Deine Antwort. Ich dachte schon, ich kann nicht programmieren.
Ich bin mir nicht ganz sicher, aber bei meiner Suche nach einer Lösung hatte ich im QC schon etwas ähnliches gefunden. "Inchmurrin" und ich gehen im QC noch mal auf die Suche.

@Papaschlumpf73
Zitat:

Hast du das schon probiert?
Delphi Berlin 10.1 ScaleBy TPageControl
http://www.delphipraxis.net/189426-d...ontrol+scaleby
Danke für den Hinweis. Nach einer längeren Suche hatte ich das auch noch gefunden.
Im Ernstfall müsste ich aber mehrere Programmier-Arbeitsplätze "manipulieren". Das gefällt mir nicht wirklich.

@haentschman
Vielen Dank für die Unterstützung. Ich hatte keine Lust, das komplette Projekt hier zur diskutieren. Ich habe also nur ein Beispiel-Programm "geliefert", um das Problem etwas besser darzustellen.
Zitat:

Das ScaleBy funktioniert nicht wirklich. Ich würde Windows das Skalieren überlassen.
Mit der "ScaleBy"-Funktion wollte ich nur eine Änderung der Bildschirm-Auflösung "simulieren". Im "echten" Leben darf das selbstverständlich Windows machen.

Ich liebe Tipps, aber ...
1.
Es wird definitiv keine Anwendung für mobile Plattformen geben. Alle Positionen werden generell von oben links nach unten rechts definiert.
2.
Die Verwendung eines ValueListEditors und einer Listview (im echten Programm) wird schon seine Gründe haben. Eine Diskussion darüber ist also nicht notwendig.
3.
Die Verwendung eines zusätzlichen Panels ist auch nichts anderes als ein "Workaround". Den gleichen Effekt erreiche ich mit einem absichtlichen Tabsheet-Wechsel im "FormActivate" oder "FormShow" (siehe Testlauf 4).
4.1
Warum sind Unterstriche nicht mehr erlaubt ?
4.2
Seit wann sind Unterstriche nicht mehr erlaubt ?
4.3
Wo steht das, dass Unterstriche nicht mehr erlaubt sind ? (Fakten Fakten Fakten)
4.4
Warum akzeptiert Delphi dann noch Unterstriche, wenn es nicht mehr erlaubt ist ?
4.5
Warum soll ich englische Bezeichnungen bei einer rein deutschen Softwareentwicklung vorziehen ?
Wo steht das ?
Seit wann gilt das ?
5.
Ich habe bewusst nur ein Beispiel-Programm zur Darstellung des Problems bereit gestellt. Dabei sind ein paar Bezeichner von Variablen einfach nur kopiert worden. Da jetzt gleich mit einer großen "Belehrung" zu antworten, war nicht wirklich hilfreich.

Zwei von drei Lesern haben das auch als Beispiel-Programm so erkannt.

Danke noch mal für alle Antworten.
slàinte mhath

Mike

Glados 21. Jul 2017 20:53

AW: Falsche Darstellung einer ListView im PageControl
 
Zitat:

Warum sind Unterstriche nicht mehr erlaubt ?
Ich glaube er wollte damit nur sagen:
"Wenn du nicht der einzige bist der an dem Quellcode arbeitet, halte einen Gewissen Standard XYZ ein, damit jeder sofort weiß was Sache ist wenn jemand deinen Code sieht".

Wenn du aber der einzige an dem Projekt bist und den Code auch nicht veröffentlichen möchtest, dann schreibe Code so, wie du es am besten findest.

Mike_on_Tour 21. Jul 2017 22:47

AW: Falsche Darstellung einer ListView im PageControl
 
Hallo Glados,

Danke für die Info.
Prinzipiell kann ich "haentschman" schon verstehen. Aber bei einem Beispiel-Programm sind diese Hinweise nicht wirklich notwendig. Und manche verstehen unter "Standard" das, was vor 20 Jahren vielleicht mal aktuell war. Mein Stil entspricht sicher nicht mehr dem Standard aus alter Zeit, dafür habe ich zu viel Erfahrung sammeln müssen und können. Vielleicht sollten manche auch mal mit der Zeit gehen und sich nicht nur ans Lehrbuch klammern.

Viele Grüße,
Mike

haentschman 22. Jul 2017 15:34

AW: Falsche Darstellung einer ListView im PageControl
 
Hallo Mike_on_Tour... :roll:

Was ist an Tipps nicht zu verstehen? Das bedeutet doch, das es kein Muß ist. :roll: Erst Recht kann ich nicht verstehen, daß du so pikiert reagierst, da ich die Worte "versuche", "möglich", "vermeiden" benutzt habe.
Manchmal denke ich, warum ich meine Zeit, um dir zu helfen, investiert habe, um mich dann wegen meiner Meinung rechtfertigen zu müssen. :roll:

Ich bin dann mal raus...:roll:

Nur zu deiner Frage noch eines:
Zitat:

Wo steht das, dass Unterstriche nicht mehr erlaubt sind ? (Fakten Fakten Fakten)
In der Bibel: Im ObjectPascal Styleguide welcher schon seit D1, und immer noch, aktuell ist.
https://edn.embarcadero.com/article/10280
Zitat:

Naming Conventions
...
GOOD type names:
AddressForm, ArrayIndexOutOfBoundsException

BAD type names:
ManageLayout // verb phrase
delphi_is_new_to_me // underscores

Mike_on_Tour 26. Jul 2017 21:18

AW: Falsche Darstellung einer ListView im PageControl
 
Hallo haentschman,

auch wenn Du "raus" bist, will ich trotzdem noch mal antworten.

Ich bin grundsätzlich dankbar für Tipps, also auch für Deine Tipps.

Ich hatte aber ein Problem mit einer Skalierung und diverser VCL-Komponenten geschildert. Deine Antwort dazu:
Zitat:

Warum die Listviev nicht den Font übernimmt kann ich nicht sagen.
Das ist OK.

Danach führst Du Deine Tipps auf, die im Umfang deutlich mehr hergeben, als zum eigentlichen Sachverhalt.

Das ist auch OK. Aber für mich las sich das eher als Suche nach dem berühmten Haar in der Suppe.

Für mich darf ein Beispielprogramm auch mal "zusammengewürfelt" sein, solange ich noch den Code verstehen kann. Auch wenn das mal zwei Minuten länger dauert und ich innerlich Schimpfworte sage.

Auf meine Frage "Wo steht das ?" hast Du mit einem Verweis auf die "Bibel" geantwortet.
Zitat:

In der Bibel: Im ObjectPascal Styleguide welcher schon seit D1, und immer noch, aktuell ist.
https://edn.embarcadero.com/article/10280
Ich habe das durchgelesen, konnte aber nur "eindringliche" Empfehlungen finden. Ich kann mir vorstellen, dass sich seit Delphi 1 (1995) da einige Anpassungen und Konventionen geändert haben. Es steht auch geschrieben, dass "jeder" seinen Stil verwenden kann. Bei einer Zusammenarbeit oder einem Austausch unter Programmierern ist aber eine Angleichung des Quellcodes sehr sinnvoll.

Ach ja, Du hast in Deinen Tipps u.a. geschrieben:
Zitat:

2. Versuche die Anzahl der verschieden Controls zu minimieren. Die Eigenschaften des ValueListEditors lassen sich auch mit Sicherheit auch in einer Listview darstellen ...
Du schlägst eine Listview als Ersatz für den ValueListEditor vor, obwohl genau diese Listview die Skalierung nicht "übernimmt". Ja ... warum nicht.
Zitat:

4. Bezeichnung der Controls. Unterstriche sind nicht mehr "erlaubt"
"Nicht erlaubt" klingt fast wie "verboten". Und das ist lt. "Bibel" nicht der Fall. Es wird nicht empfohlen, aber erlaubt ist es.

Manchmal ist aber eine Abweichung von sogenannten Standards auch sehr sinnvoll, wenn die Arbeit mit dem Quellcode einfach leichter und schneller geht. Beispiele dazu spare ich mir hier, da es nicht zum Sachverhalt gehört.

Ich hoffe trotzdem, dass Du bei meinem nächsten Post wieder dabei bist.

So, und nun kann der Moderator dieses Thema schließen.

Mit besten Grüßen,
Mike


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 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