Como deixar o menu na mesma cor do form?

14/05/2008

1

Olá pessoal, gostaria de saber como posso deixar o Menu na mesma cor do Form, no meu caso seria na cor clBtnFace?? Desde já agradeço!!!
Vlw!!

[color=green:f6d4e317ae]Título editado. Não poste tudo em maiúsculas.[/color:f6d4e317ae]


Responder

Posts

10/06/2008

Fabianosales

Osnir, para conseguir isto, você deve configurar a propriedade OwnerDraw do componente TMainMenu para True e implementar suas rotinas de desenho no evento OnAdvancedDrawItem de cada item do menu.

Isto pode ser um pouco trabalhoso porque os menus podem assumir diversos estados e para cada um destes, o menu deve ser desenhado de maneira a refletir seu estado atual (inativo, selecionado, highlited, etc..).

Os menus podem assumir os seguintes estados:
TOwnerDrawState = set of (odSelected, odGrayed, odDisabled, odChecked,
    odFocused, odDefault, odHotLight, odInactive, odNoAccel, odNoFocusRect,
    odReserved1, odReserved2, odComboBoxEdit);

Segue um exemplo (note que somente alguns poucos estados foram tratados)
procedure TForm2.Arquivo1AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; State: TOwnerDrawState);
begin
  if odSelected in State then
    begin
      ACanvas.Brush.Color := clBtnShadow;
      ACanvas.Font.Color := clWhite;
    end
  else
  if odHotLight in State then
    begin
      ACanvas.Brush.Color := clHighlight;
      ACanvas.Font.Color := clHighlightText;
    end
  else
    begin
      ACanvas.Brush.Color := clBtnFace;
      ACanvas.Font.Color := clBtnText;
    end;
  ACanvas.FillRect(ARect);
  ACanvas.TextOut(ARect.Left+3, Arect.Top+2, StringReplace((Sender as TMenuItem).Caption, ´&´, ´´, []));
end;



Responder