AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

Ein Thema von CodeX · begonnen am 6. Feb 2019 · letzter Beitrag vom 7. Feb 2019
Antwort Antwort
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#1

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 10:46
Meinst Du, das bringt etwas?
Meinst du, der Fehler wird gefixt, wenn er nicht im QP steht?
Ich sag's mal so: Ich spiele auch kein Lotto, obwohl ich weiß, dass ich dann definitiv nichts gewinnen kann.

Eines vorweg: Ich schreibe regelmäßig Bug-Reports und Verbesserungsvorschläge bei diversen (aktiven) Open-Source-Projekten. Teilweise liefere ich dort auch Lösungsvorschläge mit. Ich nehme mir die Zeit, weil ich weiß, dass es zu einem Ergebnis führt.

Das hier ist nur ein Problem von vielen. Ich habe gerade grob überschlagen: Ich bräuchte definitiv mehr als einen Arbeitstag, um alle bis dato aufgetretenen Probleme sauber im QP einzupflegen. Zusätzlich kommt die Zeit für die weitere Kommunikation hinzu. Wenn ich wüsste, das sich den Problemen jemand annimmt, würde ich die Zeit gerne investieren. Realistisch betrachtet wird sich in absehbarer Zeit niemand darum kümmern, d.h. ich muss so oder so einen Weg finden, damit umzugehen. Bei IDE-Bugs muss ich Workarounds suchen und bestimmte Aktionen unterlassen. Bei Bugs in Komponenten bzw. im Quellcode muss ich eben selbst bzw. mit Hilfe von DP oder SO sofortige Lösungen finden.

Hier habe diesen Thread aufgemacht, weil ich einfach erstmal wissen wollte, ob das Problem nur bei mir auftritt oder ob es andere auch haben. Ich brauche eine Lösung jetzt, nicht irgendwann vielleicht. Im Gegensatz zu Emba möchte ich meine Software nicht mit bekannten Bugs veröffentlichen.

@Pfaffe
Danke, musste herzlich lachen!
(eigentlich traurig, weil viel zu wahr)
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 10:49
Ich habe die Ursache jetzt selbst analysiert (10.2 mit 10.3 verglichen) und gefixt. Falls es Deine (@Uwe Raabe) Änderungen sind, kannst Du den Fix gerne übernehmen. Ansonsten hilft das vielleicht noch anderen, die darauf stoßen. Ansonsten wird man künftig eben alle neuen Delphi-Anwendungen unter Windows 7 sehr leicht an den Menüs erkennen.

Vcl.Menus.pas

Der eigentliche Fehler liegt hier, weil eine Positionskorrektur fälschlicherweise auch für Separators durchgeführt wird:
Delphi-Quellcode:
1444:
// if LCheckRect.Bottom > ARect.Bottom then
if (LCheckRect.Bottom > ARect.Bottom) and (Caption <> cLineCaption) then
Unabhängig von der senkrechten Linie, die dadurch kaputt geht (was man unter Win10 aber nicht mitbekommt), verschiebt ich die waagerechte Linie nach links. Dem wurde dann in Zeile 1635 wohl versucht gegenzusteuern. Warum man bei einem Separator aber Abmessungen von Checkboxen oder Images berücksichtigen sollte statt den Fehler bei vorangehenden Änderungen zu suchen, erschließt sich mir nicht. Ich habe den Teil daher durch die vorherige 10.2er Version ersetzt:
Delphi-Quellcode:
1635:
// LDetails := LStyle.GetElementDetails(tmPopupCheckNormal);
// LStyle.GetElementSize(ACanvas.Handle, LDetails, esActual, LSize, LPPI);
// if Assigned(ImageList) and (ImageList.Width > LSize.cx) then
// LSize.cx := ImageList.Width;
// if LStyle.GetElementMargins(ACanvas.Handle, LDetails, emContent, LCheckMargins, LPPI) then
// Dec(LSize.cx, LCheckMargins.cxLeftWidth);
// if not RightToLeft then
// Inc(ARect.Left, LSize.cx)
// else
// Dec(ARect.Right, LSize.cx);
      if not RightToLeft then
        ARect.Left := LGutterRect.Right + 1
      else
        ARect.Right := LGutterRect.Left - 1;
Damit ist das Problem behoben.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 11:00
Damit ist das Problem behoben.
Gilt das auch für High-DPI Anwendungen unter einem aktuellen Win10 oder nur für Windows 7.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 11:04
In den letzten 360 Tagen gab es 2000 Ticktes im Emba-Jira geschlossen.
Hier zu sagen das nix gemacht wird ist schon sehr gewagt
Verglichen mit den Jahren zur qc-Zeit wird m.E. sehr viel mehr Fehler auch zeitnah behoben.
Die Qualität der letzten Delphi-Versionen ist gegenüber früher (D6 bis vor 3 Jahren und bis vor 6 Monaten XE6) ist (jedenfalls für mich) viel besser geworden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 11:58
Damit ist das Problem behoben.
Gilt das auch für High-DPI Anwendungen unter einem aktuellen Win10 oder nur für Windows 7.
Ich habe es aktuell mit Win7 sowie Win10 mit 150% getestet. Bevor ich meine Software später dann veröffentliche, wird das zusätzlich noch in mehreren VMs mit unterschiedlichen Betriebssystem-Konstellationen getestet werden.

Die Lösung ist übrigens auch ohne groß zu testen logisch: Die X-Position für den Separator ist ja schon vorher korrekt. Wenn man sie nicht anfasst, stimmt alles. Mit Zeile 1444 wird diese dann "fehlkorrigiert" und in Zeile 1635 wird dann wieder recht umständlich versucht, die korrekte X-Position zu berechnen, die dann aber nur noch für die waagerechte aber nicht senkrechte Linie Relevanz hat.

Ich sag's mal so: Ich spiele auch kein Lotto, obwohl ich weiß, dass ich dann definitiv nichts gewinnen kann.
Ich pflanze aber auch einen Baum, obwohl ich weiß, dass ich vielleicht selbst niemals ernten oder in seinem Schatten sitzen kann.
Nur, dass Du im QP keinen Baum pflanzt, sondern einen Brief an die Regierung schreibst, weil Du gerne einen Baum an Deiner Straße hättest (um in Allegorien zu bleiben.). Kann man machen...

In den letzten 360 Tagen gab es 2000 Ticktes im Emba-Jira geschlossen.
Hier zu sagen das nix gemacht wird ist schon sehr gewagt
Na, dann filter aber bitte nochmal neu. Bei den meisten davon war die "Lösung": Duplicate, Won't Fix, Cannot Reproduce, Works As Expected
Von dem verbliebenen Rest ist nur ein Bruchteil davon für die Entwicklung von Windows-Anwendungen relevant. Und davon wiederum sind die meisten erst in 10.2 dazugekommen, also Bugs an Stellen, die vorher funktioniert haben.

Neue Features werden bewusst mit Fehlern veröffentlicht, um sie später dann fixen zu können: Erklärt mir doch mal bitte einer, warum die groß angekündigten und von vielen heiß erwarteten Inline-Variablen als Quelltext-Fehler markiert werden? Das kann man nicht übersehen haben. Wie kann man sowas überhaupt veröffentlichen?
Oder um das vorherige Beispiel nochmals aufzugreifen: Warum wird ein offensichtlicher und nerviger IDE-Bug, bei dem man bestimmte Komponenten nicht gleichzeitig auswählen kann, auch nach einem Jahr nicht behoben?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#6

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 12:45
Im Strafrecht nennt man das "Vorsatz", mindestens aber "Absicht".
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 11:02
Ich sag's mal so: Ich spiele auch kein Lotto, obwohl ich weiß, dass ich dann definitiv nichts gewinnen kann.
Ich pflanze aber auch einen Baum, obwohl ich weiß, dass ich vielleicht selbst niemals ernten oder in seinem Schatten sitzen kann.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 14:45 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