AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi MenuItem neu zeichnen, wenn ImageIndex sich ändert?
Thema durchsuchen
Ansicht
Themen-Optionen

MenuItem neu zeichnen, wenn ImageIndex sich ändert?

Ein Thema von SearchBot · begonnen am 11. Sep 2017 · letzter Beitrag vom 14. Sep 2017
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.349 Beiträge
 
Delphi 12 Athens
 
#7

AW: MenuItem neu zeichnen, wenn ImageIndex sich ändert?

  Alt 12. Sep 2017, 14:33
Haben die da was geändert?

Im XE sieht es so aus:
Delphi-Quellcode:
procedure TMenuItem.SetImageIndex(Value: TImageIndex);
begin
  if Value <> FImageIndex then
  begin
    FImageIndex := Value;
    MenuChanged(True);
  end;
end;

procedure TMenuItem.MenuChanged(Rebuild: Boolean);
var
  Source: TMenuItem;
begin
  if (Parent = nil) and (Owner is TMenu) then
    Source := nil else
    Source := Self;
  if Assigned(FOnChange) then FOnChange(Self, Source, Rebuild);
end;
Demnach bekommt niemand mit, wenn sich der ImageIndex ändert.

Der Teil wird hierbei leider nicht ausgeführt.
Delphi-Quellcode:
procedure TMainMenu.MenuChanged(Sender: TObject; Source: TMenuItem; Rebuild: Boolean);
var
  NeedUpdate: Boolean;
begin
  if (FWindowHandle <> 0) then
  begin
    NeedUpdate := UpdateImage; // check for changes before CM_MENUCHANGED does
    if Source = nil then
      SendMessage(FWindowHandle, CM_MENUCHANGED, 0, 0);
    if NeedUpdate then
      DrawMenuBar(FWindowHandle);
  end;
  inherited MenuChanged(Sender, Source, Rebuild);
end;
Nach der Änderung manuell das Protected MenuChanged aufrufen oder direkt
Delphi-Quellcode:
//MainMenu.UpdateImage; // ist Private, aber geht vielleicht auch ohne
SendMessage(MainMenu.WindowHandle, CM_MENUCHANGED, 0, 0);
DrawMenuBar(MainMenu.WindowHandle);
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Sep 2017 um 14:35 Uhr)
  Mit Zitat antworten Zitat
 

 

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 13:47 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