![]() |
TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Liste der Anhänge anzeigen (Anzahl: 2)
Bei Delphi 2007 war die Menüzeile eines Programms in der IDE und zur Laufzeit noch gleich, ab XE2 (und vielleicht schon vorher) habe ich aber zur Laufzeit ein andere (nicht besonders schöne) Darstellung.
Wie unten gezeigt wird die Breite der ImageList als Abstand hinzugefügt, was zu unschönen Abständen zwischen den Einträgen führt. Gibt es eine Methode, diesen Abstand - trotz ImageList - nicht anzuzeigen? |
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Von welcher ImageList ist hier die Rede?
|
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Das sollte nur auftreten wenn du einen ImageIndexwert <> -1 für die Hauptmenüeinträge zugewiesen hast.
|
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
So ist es bei XE4 und XE5 zumindest auch.
|
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Also es handelt sich um eine ganz normale Delphi TImageList die der Eigenschaft MainMenu1.Images zugewiesen wurde.
Alle ItemIndex-Einträge in der Hauptmenüeben sind auf -1 |
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Du kannst ja einmal schauen, ob es noch so ist, wenn du alles andere herauswirfst. Wenn es dann noch so ist, könntest du das fast leere Projekt einfach mal posten. Dann findet bestimmt jemand heraus woran das liegt, wenn es woanders mit dem Projekt auch so ist.
|
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Zitat:
Auch nachdem ich allen Hauptmenü-Köpfen erstmal einen ImageIndex zugewiesen und danach wieder entfernt hatte, waren die Abstände wieder wie gewohnt. Jaenickes Idee, das ballastbefreite Projekt hier anzuhängen, find ich auch interessant: Ich würde es gerne testen, solange ich die nächsten Tage noch einen Zugang zu einer XE4-IDE habe. Auch mit meinem Radstudio2009 konnte ich das nicht nachvollziehen. Da ich vorher noch nie Icons in Menüs eingebaut hatte, wunderte es mich aber ein wenig, daß sich nach Einbinden der ImageListe in TMainMenu.Images die vertikalen Abstände zwischen allen Menüeinträgen entsprechend vergrößerten. Wenn man nur einigen Einträgen ein Icon verpassen will, sieht das ein wenig unschön aus. |
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Liste der Anhänge anzeigen (Anzahl: 1)
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:
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.
function TMenuItem.GetBitmap: TBitmap;
begin if FBitmap = nil then FBitmap := TBitmap.Create; FBitmap.Transparent := True; Result := FBitmap; end; 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... |
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Liste der Anhänge anzeigen (Anzahl: 1)
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.
|
AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich
Dito, weder mit XE4 noch mit XE5 lässt sich das hier reproduzieren. Testen kann ich im Moment nur unter Windows 8.1.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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 by Thomas Breitkreuz