Paulo Nobre Postado Setembro 27, 2006 Denunciar Share Postado Setembro 27, 2006 Alguém poderia me passar um código para que o menu ficasse da mesma cor do form.O componente menu acompanha a cor padrão do windows.Gostaria, caso meu form usasse clBlue, o menu também ficasse com a mesma cor.Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 27, 2006 Denunciar Share Postado Setembro 27, 2006 Paulo Nobre, caso não apareça nada mais...Se utilizar o D7, talvez você considere fazer um teste com os componentes da paleta Additional: TActionMainMenuBar, TActionManager e TXPColorMapCom eles é possível manipular a cor de menus (TXPColorMap - propriedade Color). Tem um exemplo neste link (precisa se cadastrar para ter acesso)[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Setembro 28, 2006 Autor Denunciar Share Postado Setembro 28, 2006 Micheus,Obrigado pela dica, vou tentar estudá-la.Algum tempo atrás (2 anos) alguém me deu uma dica, aqui mesmo no fórum de como mudar a fonte e a cor da fonte. E disse que usando canvas eu conseguiria mudar a cor. Mas, não tenho muito experiência com canvas e deixei de lado. Acho que vou ter que estudar este objeto.[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Setembro 28, 2006 Autor Denunciar Share Postado Setembro 28, 2006 Micheus,Fui no site que você sugeriu e baixei o projeto.Não pude abri-lo pois aqui no trabalho não tenho o DElphi.Mas, a cópia da unit é a seguinte: unit U_MENUCOLORIDO; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPStyleActnCtrls, ActnList, ActnMan, ToolWin, ActnCtrls, ActnMenus, ActnColorMaps; type TForm1 = class(TForm) ActionMainMenuBar1: TActionMainMenuBar; ActionManager1: TActionManager; XPColorMap1: TXPColorMap; TwilightColorMap1: TTwilightColorMap; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} end. Numa primeira olhada parece que usa os componentes que você falou.No local onde o código foi postado tem dois email de usuários que dizem não conseguir ativar o exemplo click dos menus.Veja um comentário:"Muito bom, só não consegui capturar o evento Click dos ítens de menu. Se alguém puder me ajudar, email-me por favor".Espero não ter este problema.Vou olhar no final de semana. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 28, 2006 Denunciar Share Postado Setembro 28, 2006 Algum tempo atrás (2 anos) alguém me deu uma dica, aqui mesmo no fórum de como mudar a fonte e a cor da fonte. E disse que usando canvas eu conseguiria mudar a cor. Mas, não tenho muito experiência com canvas e deixei de lado. Acho que vou ter que estudar este objeto.Paulo Nobre, deve ser possível, já que existe a propriedade OwnerDraw no compoente TMainMenu e os eventos OnDrawItem e OnAdvancedDrawItem no TMenuItem. É uma questão de explorar as opções.No local onde o código foi postado tem dois email de usuários que dizem não conseguir ativar o exemplo click dos menus.Veja um comentário:"Muito bom, só não consegui capturar o evento Click dos ítens de menu. Se alguém puder me ajudar, email-me por favor".Espero não ter este problema.isto é porque não há qualquer evento para o item do menu, utilizando estes componentes. Eles talvez desconheçam o uso do TActionList. É associando à propriedade ActionClientItem (itens do menu no TActionMainMenuBar) à um Action (item no TActionList) que as coisas acontecem. Este último tem o evento OnExecute, que é onde as coisas acontecem - equivale ao OnClick.Mas, não saia alterando seu projeto. Sugiro que utilize o exemplo explorando estes itens, principalmente se forem novos para você.No exemplo, tem dois componentes para "customização" das cores(ColorMap no ActionMainMenuBar) do menu. Elimine um deles (TwilightColorMap1) para não lhe atrapalhar.você terá que adicionar o tal TActionList (paleta Standard). Dois clicks nele e terá acesso ao editor. Clicando em New Action (teclar INS na lista), você adiciona um item, seleciona ele e altera suas propriedades. Basicamente Caption e Name. Essa propriedade categoria equivale a opção no menu principal.obs: Este componente pode ser utilizado com os items de "menu normais".[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Setembro 28, 2006 Autor Denunciar Share Postado Setembro 28, 2006 Micheus,Muito obrigado por essas super dicas.[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Setembro 29, 2006 Denunciar Share Postado Setembro 29, 2006 Caso você não tenha resolvido ainda, é só você colocar o OwnerDraw do TMainMenu para true e colocar o seguinte evento OnDrawItem nos MenuItem's ->procedure TForm1.Arquivo1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin acanvas.brush.Color:=color; acanvas.FillRect(arect); acanvas.TextOut(arect.Left,arect.Top,(sender as tmenuitem).Caption); end; E no último MenuItem, para que seja pintado até o final do menu, o seguinte evento OnDrawItem -> procedure TForm1.hgjnbvm1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin acanvas.brush.Color:=color; arect.Right:=width-4; acanvas.FillRect(arect); acanvas.TextOut(arect.Left,arect.Top,(sender as tmenuitem).Caption); end; Graças ao Micheus que mencionou essas propriedades e eventos. E lembrando que é possível utilizar outra cor caso o parametro selected seja true. E lembrando que é possível utilizar o evento OnAdvancedDrawItem onde existe o parametro State, aí você pode escolher a cor do menu de acordo com cada um dos seus possíveis estados -> TOwnerDrawState = set of (odSelected, odGrayed, odDisabled, odChecked, odFocused, odDefault, odHotLight, odInactive, odNoAccel, odNoFocusRect, odReserved1, odReserved2, odComboBoxEdit);E lembrando que o caption dos TMenuItems algumas vezes tem o '&' antes do texto. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Setembro 29, 2006 Autor Denunciar Share Postado Setembro 29, 2006 Valeu Thales, por esse complemento.Com essas suas dicas os delphis anteriores ao 7 também entram em ação.Vou testar no final de semana e ver o que é mais simples. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 29, 2006 Denunciar Share Postado Setembro 29, 2006 Somando mais um pouquinho ao que o Thales postou...E lembrando que o caption dos TMenuItems algumas vezes tem o '&' antes do texto.para retornar o string correto na hora de passá-lo ao canvas, utilize a função:function StripHotKey (const Text: string): string; // unit Menué só você colocar o OwnerDraw do TMainMenu para true e colocar o seguinte evento OnDrawItem nos MenuItem's ->só para não ficar dúvida para os iniciantes que por ventura leiam este tópico, basta que apenas o evento de um item seja escrito. Depois é só selecionar este evento para o OnDrawItem dos demais itens - não é repetido o código para cada item.[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Setembro 30, 2006 Autor Denunciar Share Postado Setembro 30, 2006 Micheus e ThalesTestei as duas dicas e funcionaram bem.É claro que usando os componentes do Delphi 7, sugeridos pelo Micheus, você fica com uma gama enormede possibilidades.Fico imaginado porque não criar algo ligado ao menu, diretamente. Tudo bem que o actionList serve para todos os componetes que tem a propriedade action, mas são muitas conexões que você deve fazer para colocar cores no menu.Valeu pessoal. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Outubro 1, 2006 Denunciar Share Postado Outubro 1, 2006 Fico imaginado porque não criar algo ligado ao menu, diretamente. Tudo bem que o actionList serve para todos os componetes que tem a propriedade action, mas são muitas conexões que você deve fazer para colocar cores no menu.Paulo Nobre, a sugestão do uso do TActionMainMenuBar foi apenas uma sugestão imediatista, mas também para mostrar que existem outras opções e com mais recursos (sempre tem alguém que lê o post e ainda não usou outra coisa que não o TMainMenu).Se desenhar o menu já atende as necessides(e acho que é o seu caso), então, com certeza esta é a melhor e talvez mais simples opção.Mas, a título de não desmerecer o componente TActionList, como você disse: o actionList serve para todos os componetes. Podemos realmente tirar proveito dos Actions quando se tem menus e botões acessando as mesmas opções. Por ex. um grid com botões para Inclusão, Alteração e Exclusão e um menu PopUp que tambem acessam estas opções. Quando você associa um Action (Incluir) para o botão e para a respectiva opção do menu, você tem a possibilidade de executar uma operação onde antes executaria duas. Vamos supor que você queira desabilitar ou ocultar uma das opções, com o action, basta que você manipule propriedades como Caption, Enable ou Visible deste para que as respectivas propriedades do item de Menu e Botão assumam o mesmo valor.Neste cenário, quando você trabalha com "controle de acesso", haverá basicamente uma classe a ser manipulada no que diz respeito a opções de menus e botões, o que pode ser vantajoso.É sempre uma questão de avaliar a situação. Quanto mais conhecemos as ferramentas que temos, mas facilmente empregaremos eslas nas situações apropriadas.[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 5, 2006 Autor Denunciar Share Postado Outubro 5, 2006 Micheus ,Concordo plenamente com sua observação.Quando disse: Porque não criar algo diretamente ligado ao menu...Estava me referindo ao próprio Delphi, que poderia ter a opção de cor para o menu.Ok?Obrigado por todas as dicas neste tópico.[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Nobre
Alguém poderia me passar um código para que o menu ficasse da mesma cor do form.
O componente menu acompanha a cor padrão do windows.
Gostaria, caso meu form usasse clBlue, o menu também ficasse com a mesma cor.
Obrigado.
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.