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 Fehlerhafte Darstellung von TMenuItem Seperator in 10.3 (https://www.delphipraxis.net/199628-fehlerhafte-darstellung-von-tmenuitem-seperator-10-3-a.html)

CodeX 6. Feb 2019 22:44

Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Liste der Anhänge anzeigen (Anzahl: 1)
Seit dem Update auf 10.3 wird bei mir die linke Seite eines TMenuItem-Separators falsch dargestellt, wenn dem Menü eine TImageList zugewiesen wurde.

Hat dies noch jemand oder ist bei mir irgendetwas kaputt?

Linker Screenshot ohne Images, rechter Screenshot+Vergrößerung mit zugewiesener TImageList (egal, ob Bilder enthalten und angezeigt werden oder nicht).

https://www.delphipraxis.net/attachm...1&d=1549492854

Uwe Raabe 6. Feb 2019 23:06

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Welche Windows Version? Unter Win10 gibt es den senkrechten hier Trenner gar nicht.

Ist der Effekt abhängig von der Imagegröße?

CodeX 6. Feb 2019 23:11

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Liste der Anhänge anzeigen (Anzahl: 1)
Windows 7 (x64)
Die Bildgröße im Eingangsscreenshot ist 16x16
So sieht es aus bei 32x32:
https://www.delphipraxis.net/attachm...1&d=1549494620

Zuvor hatte ich XE und 10.2 eingesetzt, wo das Problem nicht bestand.

Uwe Raabe 6. Feb 2019 23:15

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Mach doch bitte einen Bugreport in QP dafür. Knackpunkt scheint hier die Windows-Version zu sein.

CodeX 7. Feb 2019 00:42

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Meinst Du, das bringt etwas?
Ich bin seit dem Umstieg von XE bereits auf so viele IDE-Bugs gestoßen und hatte so viele IDE-Abstürze, dass die Entwicklung damit immer weniger Spaß macht. Einige der Bugs habe ich im QP gefunden, die dort teilweise schon seit langer Zeit fristen.
Nur ein Beispiel, wo ich regelmäßig (z.B. gerade eben zum Reproduzieren des anderen Bugs) hineinlaufe, was offenbar schon vor einem Jahr kaputt gemacht und trotz neuer Releases nicht wieder gefixt wurde:
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!?

Die IDE-Bugs sind schon frustrierend genug, aber wenn das hier jetzt auch noch ein Bug ist, der beim Endanwender ankommt, dann ärgert mich das umso mehr. Ja, ich kann den Bug im QP posten, aber ich bezweifle, dass ich da irgendjemand in absehbarer Zeit darum kümmern wird. Am besten dann noch mehrmals die Subscription verlängern und jedes Mal hoffen, dass der Bug behoben wurde...

Falls jemand eine Idee für einen Workaround oder Fix hat, würde ich mich sehr freuen!

Sherlock 7. Feb 2019 07:30

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Klar bringt das was. Und wenn Du den QP Eintrag hier postest, gibt das sogar noch etwas mehr, weil wir upvoten können.

(Auch wenn Win7 Unterstützung wirklich geringe Priorität haben dürfte)

Sherlock

Pfaffe 7. Feb 2019 08:37

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Delphi-Quellcode:
{$Satire ON}
while not Fehlerfrei do begin
  Abo bezahlen;
  Wir warten auf Fix, Update
  if Firma then begin
    Diskussion/Meetings (teurer als das Update) "Ist Delphi das Richtige";
    if not then exit; // else Bei_Delphi_bleiben weitere Diskussion/Meetings(Welche Version Wann Wer Testumgebung; Schulungen zu teuer)
  end;
  Updateprozess mit machen (Neue Features als Begründung, Endlich "Inline")
  Ärgern, dass bekannte Probleme nicht beseitigt worden sind Do_DelphiPraxis_Checken
  Ärgern, dass neue Fehler auftauchen (Neue Features, Diskussion/Meetings "Inline verbot")
  repeat // Auslagern in Thread
     Do_DelphiPraxis_Checken
  until (Hoffen auf technische Hilfe) or (Mir gibt jemand Recht, dass das Nix taugt ich aber weitermache) or (Bekomme als erster mit das es ein Update/Fix gibt)
  // Bugreport in QP
end;
Vorzeitig_in_Rente_gehen(Selbst Kaffe rösten; Pralinen herstellen, Buch schreiben(Programmieren-So gehts nicht) etc.);

Wenn genügend Abokunden dann Delphi mit Gewinn an andere Firma weiterverkaufen;

Oder:
Alles Funktioniert, keiner regt sich auf, alles Langweilig, keiner benötigt Updates, Softwarehersteller verdient nichts, investiert nicht, keine Innovationen, verschwindet vom Markt - Aus - Delphi-Praxis verstaubt:(

// PS: Ist in anderen Branchen auch so

Es kommen Warnungen/Hinweise/Error .. Debugger geht auch nicht. Was habe ich falsch gemacht:oops: Habs selbst gemerkt, das Semikolon fehlte (Hoffentlich geht das im nächsten Update automatisch)
{$Satire OFF}

Uwe Raabe 7. Feb 2019 08:38

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Zitat:

Zitat von CodeX (Beitrag 1424921)
Meinst Du, das bringt etwas?

Meinst du, der Fehler wird gefixt, wenn er nicht im QP steht?

Es handelt sich sehr wahrscheinlich um einen Regression-Bug im Zuge der High-DPI Fixes in Rio. Ich will gar nicht mal ausschließen, daß dies eine Folge meiner eigenen Code-Änderungen zu diesem Thema ist, die ich Embarcadero zur Verfügung gestellt hatte (habe aber auch noch nicht näher geschaut). High-DPI und Windows 7 passen einfach nicht zusammen, deswegen habe ich diesbezügliche Tests auch nie in Erwägung gezogen.

Nochmal generell: Die Chancen auf einen Fix für einen Bug in QP sind vielleicht nicht hoch, aber immer noch deutlich höher als für Bugs die dort nicht drin stehen.

Der schöne Günther 7. Feb 2019 09:02

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Zitat:

Zitat von Pfaffe (Beitrag 1424931)
Delphi-Quellcode:
Do_DelphiPraxis_Checken

Ich glaube das ist der wichtigste Punkt, in jedem Kontext, in jeder Lebenslage 😎

CodeX 7. Feb 2019 10:46

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1424932)
Zitat:

Zitat von CodeX (Beitrag 1424921)
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! :D
(eigentlich traurig, weil viel zu wahr)

CodeX 7. Feb 2019 10:49

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
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.

Uwe Raabe 7. Feb 2019 11:00

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Zitat:

Zitat von CodeX (Beitrag 1424952)
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 7. Feb 2019 11:02

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Zitat:

Zitat von CodeX (Beitrag 1424951)
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.

Bernhard Geyer 7. Feb 2019 11:04

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
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.

CodeX 7. Feb 2019 11:58

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1424957)
Zitat:

Zitat von CodeX (Beitrag 1424952)
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.

Zitat:

Zitat von Uwe Raabe (Beitrag 1424958)
Zitat:

Zitat von CodeX (Beitrag 1424951)
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...

Zitat:

Zitat von Bernhard Geyer (Beitrag 1424959)
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?

Pfaffe 7. Feb 2019 12:45

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Im Strafrecht nennt man das "Vorsatz", mindestens aber "Absicht".

TurboMagic 7. Feb 2019 19:37

AW: Fehlerhafte Darstellung von TMenuItem Seperator in 10.3
 
Zitat:

Zitat von CodeX (Beitrag 1424921)
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 ;-)


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