AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Thema durchsuchen
Ansicht
Themen-Optionen

TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

Ein Thema von Whookie · begonnen am 20. Okt 2013 · letzter Beitrag vom 24. Okt 2013
Antwort Antwort
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
446 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 23. Okt 2013, 20:29
Nach all den Hinweisen hier - und einem leeren VCL Projekt, dass auch keine Probleme gezeigt hat - habe ich das Programm einmal zerlegen und bin nun zu folgendem (mehr oder wenig zufriedenstellendem) Ergebnis gekommen:

Der Bösewicht heißt GetOrdProp() und ausgelöst wird das Ganze durch die Multilizer VCL-Komponenten. Sie übersetzen das gesamte Projekt zur Laufzeit in verschiedene Sprachen und machen das mehr oder weniger automatisch, indem sie alle Objekte rekursiv durchlaufen und über GetOrdProp() feststellen ob ein String vorhanden ist, der übersetzt werden muss.

Dabei gelangen sie auch an die Bitmap-Eigenschaft des Menü-Items und in GetOrdProp wird festgestellt, das eine Klasse mit statischer GetProc vorhanden ist und diese aufgerufen. Das führt dann unweigerlich zum Aufruf von:

Code:
function TMenuItem.GetBitmap: TBitmap;
begin
  if FBitmap = nil then FBitmap := TBitmap.Create;
  FBitmap.Transparent := True;
  Result := FBitmap;
end;
in Vcl.Menus und damit wird jetzt eine TBitmap erzeugt (wohl gemerkt nur die Klasse - Height und Width bleiben 0), was dann in späterer Folge, wegen der Art und Weise wie Delphi zum Neuberechnen der Hotkeys gezwungen wird, zu meinem Problem führt.
Zum Glück kann man das Verhalten durch setzen von MainMenu.AutoHotKey := maManual umgehen.

Für alle die sich das trotzdem gerne einmal ansehen möchten habe ich ein kleines Demoprogramm angehängt, vielleicht gibt es ja eine elegante Methode AutoHotKey auf amAutomatic lassen zu können...

Das Programm muss nur compiliert werden ... "Burn!" alleine richtet keinen Schaden an, "Prepare hell.." auch nicht. Wird "Burn!" jedoch nach "Prepare hell.." angeklickt ist das "datei"-menü gefährlich breit geworden...
Angehängte Dateien
Dateityp: 7z VCL_MenuProblem.7z (2,7 KB, 4x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 23. Okt 2013, 21:39
Habe dein Projekt eben mal kurz mit XE4 geöffnet und gestartet: Keinerlei fehlerhafte Darstellung des Menüs, auch nicht nach Klick auf einen der Buttons.
Angehängte Grafiken
Dateityp: jpg Menu.jpg (60,3 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#3

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 23. Okt 2013, 21:45
Dito, weder mit XE4 noch mit XE5 lässt sich das hier reproduzieren. Testen kann ich im Moment nur unter Windows 8.1.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 23. Okt 2013, 22:56
@jaenicke
Wir – oder zumindest mein derzeitiger Auftragggeber, an dessen PC ich das vorhin getestet hatte – haben ja wohl auch keine "Multilizer VCL-Komponenten" installiert, die oben als mögliche Ursache genannt wurden.

@Whookie
Das von dir bereitgestellte Projekt macht irgendwie keinen Sinn: Wie soll man das Problem reproduzieren, wenn man diese Komponenten gar nicht installiert hat?

Da du ja offenbar diese "Multilizer VCL-Komponenten" verdächtigst, wie du oben schreibst, wäre es da nicht erstens mal Zeit, zu versuchen, den Test ohne diese Komponenten zu versuchen und zweitens, dich an den Hersteller dieser Komponenten zu wenden?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#5

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 24. Okt 2013, 05:29
Wir – oder zumindest mein derzeitiger Auftragggeber, an dessen PC ich das vorhin getestet hatte – haben ja wohl auch keine "Multilizer VCL-Komponenten" installiert, die oben als mögliche Ursache genannt wurden.
Nein, aber er hat doch geschrieben, dass er meint, dass das an dem Aufruf von GetBitmap durch die Property Abfrage liegt. Und den hat er ja im Button simuliert.

Ich hätte auch eine Idee, aber da bei mir der Fehler nicht auftrat, konnte ich sie nicht testen... wenn ich den Quelltext in TMainMenu auf die Schnelle richtig deute, könnte es reichen, wenn man dafür sorgt, dass die TBitmap leer ist. (Denn dort wird nicht nur auf Assigned, sondern auch auf Empty geprüft.)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 24. Okt 2013, 07:30
Der Fehler tritt mit dieser Simulation jedoch nicht auf, egal in welcher Reihenfolge ich die Buttons drücke. Ich kann jetzt zwar nicht mehr mit XE4 kompilieren, weil der Remote-Rechner, an dem ich heute nacht gearbeitet habe, offenbar abgestürzt ist, doch hab ich noch die kompilierte Echse hier, und da passiert gar nix, wie ich eben nochmal überprüft habe. Ergo müßte jemand testen, der die genannten Komponenten installiert hat, die ich nicht kenne.

Mehr kann ich dazu auch nicht sagen.
  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 22:57 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