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
Seite 1 von 2  1 2      
Whookie

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

TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 20. Okt 2013, 22:36
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?
Miniaturansicht angehängter Grafiken
menu_ide.png   menu_run.png  
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 20. Okt 2013, 23:04
Von welcher ImageList ist hier die Rede?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 20. Okt 2013, 23:26
Das sollte nur auftreten wenn du einen ImageIndexwert <> -1 für die Hauptmenüeinträge zugewiesen hast.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 21. Okt 2013, 06:44
So ist es bei XE4 und XE5 zumindest auch.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Whookie

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

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 21. Okt 2013, 22:13
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
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 22. Okt 2013, 05:38
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 22. Okt 2013, 07:11
Wie unten gezeigt wird die Breite der ImageList als Abstand hinzugefügt, was zu unschönen Abständen zwischen den Einträgen führt.
Ich hatte seit dem Lesen dieses Posting inzwischen die Gelegenheit, an einer XE2- und an einer XE4-Installation zu versuchen, diesen Effekt zu reproduzieren. Es ist mir beim besten Willen nicht gelungen. Die Grafiken in der ImageList waren Bitmaps 40x40, 24bit, rgb.

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.

Geändert von Perlsau (22. Okt 2013 um 07:40 Uhr)
  Mit Zitat antworten Zitat
Whookie

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

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 23. Okt 2013, 21: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
 
#9

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 23. Okt 2013, 22: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.
Miniaturansicht angehängter Grafiken
menu.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: TMainMenu Darstellung in IDE und zur Laufzeit unterschiedlich

  Alt 23. Okt 2013, 22: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
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:40 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