AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Falsche Darstellung einer ListView im PageControl
Thema durchsuchen
Ansicht
Themen-Optionen

Falsche Darstellung einer ListView im PageControl

Ein Thema von Mike_on_Tour · begonnen am 6. Jul 2017 · letzter Beitrag vom 26. Jul 2017
Antwort Antwort
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Falsche Darstellung einer ListView im PageControl

  Alt 6. Jul 2017, 15:09
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
Miniaturansicht angehängter Grafiken
testlauf1.jpg   testlauf2.jpg   testlauf3.jpg  
Angehängte Dateien
Dateityp: zip TabSheetsProblem.zip (84,0 KB, 11x aufgerufen)
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.

Geändert von Mike_on_Tour ( 6. Jul 2017 um 15:53 Uhr)
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Falsche Darstellung einer ListView im PageControl

  Alt 7. Jul 2017, 08:11
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.
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
312 Beiträge
 
Delphi 12 Athens
 
#3

AW: Falsche Darstellung einer ListView im PageControl

  Alt 7. Jul 2017, 09:55
Hast du das schon probiert?

http://www.delphipraxis.net/189426-d...ontrol+scaleby
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#4

AW: Falsche Darstellung einer ListView im PageControl

  Alt 7. Jul 2017, 10:31
Hallöle...
Zu erst einmal, das Projekt im Anhang schaut jetzt auch mit 125 so aus wie du es willst.
Schau dir im Projekt meine Änderungen an. (Properties der Controls). Warum die Listviev nicht den Font übernimmt kann ich nicht sagen.

[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. 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" Wenn möglich Denglisch vermeiden.
Delphi-Quellcode:
Label_Telefon.Caption := '12345';
// besser...
lblPhone.Caption := '12345';
Miniaturansicht angehängter Grafiken
100_1.png   125_1.png   125_2.png  
Angehängte Dateien
Dateityp: zip Projekt.zip (55,1 KB, 3x aufgerufen)

Geändert von haentschman ( 7. Jul 2017 um 10:36 Uhr)
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Falsche Darstellung einer ListView im PageControl

  Alt 21. Jul 2017, 20:49
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
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#6

AW: Falsche Darstellung einer ListView im PageControl

  Alt 21. Jul 2017, 20:53
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.
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Falsche Darstellung einer ListView im PageControl

  Alt 21. Jul 2017, 22:47
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
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#8

AW: Falsche Darstellung einer ListView im PageControl

  Alt 22. Jul 2017, 15:34
Hallo Mike_on_Tour...

Was ist an Tipps nicht zu verstehen? Das bedeutet doch, das es kein Muß ist. 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.

Ich bin dann mal raus...

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
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Falsche Darstellung einer ListView im PageControl

  Alt 26. Jul 2017, 21:18
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
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  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 06:27 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