Delphi-PRAXiS
Seite 1 von 2  1 2      

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 TMenuItem: Checked wird nicht dargestellt (https://www.delphipraxis.net/133188-tmenuitem-checked-wird-nicht-dargestellt.html)

blauweiss 27. Apr 2009 16:19


TMenuItem: Checked wird nicht dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo liebe Leute,

ich bin vor einigen Tagen testweise umgestiegen von Delphi5 auf BDS2006.
Neben einigen (gelösten) Phänomenen habe jetzt ich diesen Unterschied in meinem Programm:

In meinem TMainMenu verwende ich eine ImageList.
Ein MenuItem (mit vergebenem ImageIndex), das ich zur Laufzeit in Delphi5 auf Checked := true setze, sieht "eingedrückt" aus. Kein Häkchen oder Bommel !! So will ich es auch haben.
In BDS2006 wird dieses MenuItem aber nicht mehr "eingedrückt" dargestellt ! Es ist aber Checked=true, wie im Debugger zu sehen.

GroupIndex ist gesetzt auf eine Zahl, RadioItem ist true.


hat jemand einen Tip ? 8)

blauweiss


hab mal 2 Bilder angehängt

Mithrandir 27. Apr 2009 16:27

Re: TMenuItem: Checked wird nicht dargestellt
 
Hast du vielleicht mal n Bild, damit man sich das vorstellen kann? Wie hast du diese "eingedrückte" Ansicht hinbekommen? Kein Häkchen ist übrigens schonmal nicht Windows-Standard und somit schonmal per se nicht gern gesehen, wenn ich dich richtig verstanden habe... ;)

Andreas L. 27. Apr 2009 16:47

Re: TMenuItem: Checked wird nicht dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Daniel G
Hast du vielleicht mal n Bild, damit man sich das vorstellen kann? Wie hast du diese "eingedrückte" Ansicht hinbekommen? Kein Häkchen ist übrigens schonmal nicht Windows-Standard und somit schonmal per se nicht gern gesehen, wenn ich dich richtig verstanden habe... ;)

Wo willst du denn den Haken platzieren wenn an der üblichen Position ein Bild ist? Ne, das passt schon so, ist Standard-Windows-Stil. Unter Delphi 2006 funktioniert das aber tatsächlich nicht. Ich verwende in meinen Anwendungen Toolbar 2000 + TBX, da gehts wunderbar.

blauweiss 27. Apr 2009 17:02

Re: TMenuItem: Checked wird nicht dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

danke für eure Antworten !
Schade, dann ist das wohl mit BDS2006 nicht mehr einfach möglich.

@DanielG: hab die "eingedrückte" Ansicht ganz einfach hinbekommen, indem ich in Delphi5 Checked := true gesetzt hatte. Auch wenn's nicht Windows-Standard ist, ich mag gern Menuepunkte mit Bildern, und die "eingedrückte Ansicht" hat mir gut gefallen.

Ok, dann bleibt mir wohl nix anderes übrig, als keine Images (siehe Bild). Dann gibt's nur Häkchen zu sehen.

Oder ich hole mir die Toolbar2000 / TBX Komponente vom Andreas, danke für den Tip !

blauweiss

Mithrandir 27. Apr 2009 17:22

Re: TMenuItem: Checked wird nicht dargestellt
 
Ach solche Bilder... :oops: Hatte irgendwie was anderes vor Augen... :stupid:

Und wenn du den Menüpunkt komplett selbst zeichnest? Hab jetzt gerade kein BDS am Start. OnDrawXYZ o.ä.?

blauweiss 27. Apr 2009 17:36

Re: TMenuItem: Checked wird nicht dargestellt
 
Hi Daniel G,

kann den Menuepunkt auch selber zeichnen, hatte halt gehofft daß es mit irgendeiner Property vom TMainMenu oder TMenuItem noch einfacher hinzubekommen ist, daß es wieder so aussieht wie mit Delphi5...

Wenn ich nix finde, dann beisse ich lieber in den sauren Apfel und laß die Images ganz weg. Dann gibt's wenigstens Häkchen zum anschauen. Find's aber etwas schwach vom BDS2006, daß es da einen kleinen Rückschritt zum alten Delphi5 zu geben scheint.


blauweiss

Andreas L. 27. Apr 2009 17:55

Re: TMenuItem: Checked wird nicht dargestellt
 
Zitat:

Zitat von blauweiss
Find's aber etwas schwach vom BDS2006, daß es da einen kleinen Rückschritt zum alten Delphi5 zu geben scheint.

Denke mal eher das es sich um einen Bug handelt. Kannst ja mal in der Quality Central suchen, hat bestimmt schon jemand anderes bemerkt.
http://qc.embarcadero.com/wc/qcmain.aspx

Garfield 28. Apr 2009 07:34

Re: TMenuItem: Checked wird nicht dargestellt
 
Zitat:

Zitat von blauweiss
kann den Menuepunkt auch selber zeichnen, hatte halt gehofft daß es mit irgendeiner Property vom TMainMenu oder TMenuItem noch einfacher hinzubekommen ist, daß es wieder so aussieht wie mit Delphi5...

Der Haken wird nur angezeigt, wenn dem TMenuItem kein Bild zugeordnet ist. Wenn man das TMainMenu über Images mit einer TImageList verbindet, kann man bei den TMenuItem mit ImageIndex ein Bild aus der TImageList zuweisen. Den ImageIndex kann man auch zur Laufzeit ändern. Ob man bei TMenuItem über Bitmap mehrere Bilder zuweisen kann, die dann eigenschaftenabhängig angezeigt werden, habe ich noch nicht ausprobiert.

blauweiss 28. Apr 2009 08:53

Re: TMenuItem: Checked wird nicht dargestellt
 
Hi Garfield,

danke für deinen Beitrag ! Hab mal deine Idee probiert mit ImageIndex auf -1 und direktem Bitmap. Darin 2 Bilder nebeneinander, die rechte Hälfte "eingedrückt" gezeichnet in der vagen Hoffnung, daß das rechte dann eigenschaftenabhängig angezeigt wird, wenn Checked = true. Leider ohne Erfolg, da fehlt auch die Property NumGlyphs wie bei z.B. BitButtons. Ist verständlich, woher soll das TMenuItem auch wissen, wieviele Einzelbilder im Bitmap drin sind...

Ok, zusammenfassend kann man sagen:


MenuItem.Checked := true bewirkt:

in Delphi5:
a) ImageIndex = -1 -> Häkchen
b) ImageIndex = Index in ImageList -> Bild wird "eingedrückt" gezeichnet

in BDS 2006:
a) ImageIndex = -1 -> Häkchen
b) ImageIndex = Index in ImageList -> es passiert gar nix, schaut aus wie ungecheckt


Ich denke auch Bug 8)

blauweiss

Garfield 28. Apr 2009 09:54

Re: TMenuItem: Checked wird nicht dargestellt
 
Zitat:

Zitat von blauweiss
Ist verständlich, woher soll das TMenuItem auch wissen, wieviele Einzelbilder im Bitmap drin sind...

Aus der Prüfung von Bedingungen. TSpeedButton geht beispielsweise von quadratischen Bildchen aus. Ergibt sich bei der Division von Breite durch Höhe kein Rest, ist das Ergebnis gleich NumGlyphs, solange es nicht mehr als vier sind. Sonst ist NumGlyphs immer eins und müsste angegeben werden.

Zitat:

Zitat von blauweiss
Ich denke auch Bug 8)

Kann, muss aber nicht sein. Wenn ja, ist er schon länger drin, denn in D7PE ist es genauso wie in TD. Du kannst Dir auch die beiden Versionen der Unit Menus.pas nehmen, sie vergleichen und die neue entsprechend erweitern bzw gegen die alte austauschen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Seite 1 von 2  1 2      

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