Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Farben des TMainMenu ändern???

  Alt 20. Mai 2008, 18:51
Hach, meine alte Routine. Ich habe die nochmal später umgebaut, damit diese nicht immer ein ganzen TBrush "verbraucht".

Delphi-Quellcode:
Procedure TfrmXXX.SetMainMenuBGColor;
Var
  lMenuInfo: TMenuInfo;
  lMenuColor: TColor;
Begin
// if ( Win32Platform = VER_PLATFORM_WIN32_NT ) and
// ( $100*Win32MajorVersion + Win32MinorVersion >= $501 ) then
// lMenuColor := clMenuBar // erst ab XP (und D7) verfügbar
// else
// lMenuColor := clMenu;

  lMenuColor := clRed {gewünschte Farbe};

  DeleteObject(fMenuBrushHandle);
  fMenuBrushHandle := CreateSolidBrush(ColorToRGB(lMenuColor));

  FillChar(lMenuInfo, SizeOf(lMenuInfo), 0);

  lMenuInfo.cbSize := SizeOf(lMenuInfo);
  lMenuInfo.hbrBack := fMenuBrushHandle;
  lMenuInfo.fMask := MIM_BACKGROUND;
  SetMenuInfo(mnu_MainMenu.Handle, lMenuInfo);
End;
Vor allem lief diese Version "stabiler", da das Menu zwischenzeitlich auch mal die Farbe verloren hatte mit einem TBrush. Ich glaube da hat das GDI Handle-sparen von der VCL zugeschlagen gehabt. Mit dem diesem Code tritt der Fehler nicht mehr auf und es läuft stabil. Vllt. mal in die CodeLibrary eintragen?
  Mit Zitat antworten Zitat