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
Seite 2 von 2     12   
CodeX

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

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 11: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.475 Beiträge
 
Delphi 12 Athens
 
#12

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 12: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 Uwe Raabe
Uwe Raabe

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

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 12: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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 12: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
 
#15

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 12: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
 
#16

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 13:45
Im Strafrecht nennt man das "Vorsatz", mindestens aber "Absicht".
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#17

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3

  Alt 7. Feb 2019, 20:37
https://quality.embarcadero.com/browse/RSP-19984
Man kann ja mal was kaputt machen, aber dann würde ich doch erwarten, dass man solche Bugs ab Kenntnisnahme sofort fixt!?
Tja und da kommt der springende Punkt: wenn du deinen TMainMenu Bug nicht in QP einträgst wird er evtl. nie zur Kenntnis genommen, weil er evtl. immer übersehen wird.

Und zu dem Report oben: ja das nervt, bich auch selber schon reingelaufen, bin mir aber recht sicher, dass die das in näherer Zukunft fixen,
ganz einfach schon weil die das auch selber beim Arbeiten nerven wird
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 03:30 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