Ir para conteúdo
Fórum Script Brasil
  • 0

Cor Nos Menus - (RESOLVIDO)


Paulo Nobre

Pergunta

Sabemos, que os menus não tem propriedade para mudar de cor, por exemplo ficar da mesma cor que foi escolhida para o form.

Existe alguma maneira não complicada de mudar sua cor sem usar componentes

externos ao DELPHI?

Paulo Nobre

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Tipow, você pode personalizar um menu totalmente utilizando os eventos de desenho dele(onDrawItem e onMeasureItem), se você utilizar esses eventos, cada item do menu pode possuir uma cor diferente, font, estilo e tal...

só não esqueça de checar o evento OwnerDraw pra True...

Assim você faz seu próprio menu, maneiro, né? ^__^

Link para o comentário
Compartilhar em outros sites

  • 0

Qual a diferença entre onDrawItem e onMeasureItem?

Para mudar a cor(do menu principal) bastaria colocar, por exemplo,

menuprincipal.color:= clred, no evento onDrawItem, é isto?

Paulo Nobre

Link para o comentário
Compartilhar em outros sites

  • 0

onMeasureItem - Occurs on owner-draw menu items to determine menu item size before the menu is drawn.

onDrawItem - Occurs when an owner-draw menu needs to be drawn.

ps.: Eu não traduzi por que assim cada um traduz da melhor maneira pra si...

Se liga, vou postar abaixo um exemplo de personalização dos menus que fiz aqui...

primeiro você poe um componente TMainMenu ou um TPopupMenu no form, feito isso, insira 2 menus e ponha no evento onDrawItem e no onMeasureItem deles, codigos parecidos com este aqui:

procedure TForm1.Azul1MeasureItem(Sender: TObject; ACanvas: TCanvas;
  var Width, Height: Integer);
begin
  with ACanvas.Font do
  begin
    Name := 'Times New Roman';
    Color := clBlue;
    Size := 20;
    Style := [fsItalic, fsBold];
  end;

  Width := ACanvas.TextWidth((Sender as TMenuItem).Caption) + 30;
  Height := ACanvas.TextHeight((Sender as TMenuItem).Caption) + 5;
end;

procedure TForm1.Azul1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  with ACanvas.Font do
  begin
    Name := 'Times New Roman';
    Color := clBlue;
    Size := 20;
    Style := [fsItalic, fsBold];
  end;

  ACanvas.TextOut(ARect.Left + 10, ARect.Top + 2, TMenuItem(Sender).Caption);
end;

procedure TForm1.Vermelho1MeasureItem(Sender: TObject; ACanvas: TCanvas;
  var Width, Height: Integer);
begin
  with ACanvas.Font do
  begin
    Name := 'Verdana';
    Color := clRed;
    Size := 10;
    Style := [fsItalic, fsBold];
  end;

  Width := ACanvas.TextWidth((Sender as TMenuItem).Caption) + 30;
  Height := ACanvas.TextHeight((Sender as TMenuItem).Caption) + 5;
end;

procedure TForm1.Vermelho1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  with ACanvas.Font do
  begin
    Name := 'Verdana';
    Color := clRed;
    Size := 10;
    Style := [fsItalic, fsBold];
  end;

  ACanvas.TextOut(ARect.Left + 10, ARect.Top + 2, TMenuItem(Sender).Caption);
end;

Pronto... não vai ficar muito bonito porque eu fiz isso só de exemplo pra te mostrar como funciona o processo de desenho, mas você pode personalizar isso ao máximo, pode até colocar Imagem no Menu se quiser...

falow

Link para o comentário
Compartilhar em outros sites

  • 0
Funcionou, apenas o fundo ficou branco!

Paulo Nobre

Pinta o fundo tambem... com Canvas você tem como pintar tudo, da maneira que quiser, dá até pra você inserir uma imagem no fundo se quiser... o.o''

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...