Dúvida CategoryButtons
Olá Pessoal.
Tenho um aplicativo funcionando com CategoryButtons.
Estou tentando setar um ButtonItem do ButtonCategory como selectedItem
e alterar sua cor através do botão direito do Mouse.
Só que por default o método MouseDown da classe TCategoryButtons trabalha somente
com TMouseButton = mbLeft.
Estou tentando fazer um esquema no evento MouseDown, mas não está funcionando.
Se alguém puder me ajudar eu agradeço muito.
Ai vai o código:
Tenho um aplicativo funcionando com CategoryButtons.
Estou tentando setar um ButtonItem do ButtonCategory como selectedItem
e alterar sua cor através do botão direito do Mouse.
Só que por default o método MouseDown da classe TCategoryButtons trabalha somente
com TMouseButton = mbLeft.
Estou tentando fazer um esquema no evento MouseDown, mas não está funcionando.
Se alguém puder me ajudar eu agradeço muito.
Ai vai o código:
procedure TfrmGIPClient.ctTasksMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
DownCategory : TButtonCategory;
DownButton : TButtonItem;
begin
DownCategory := TCategoryButtons(Sender).GetCategoryAt(X,Y);
DownButton := TCategoryButtons(Sender).GetButtonAt(X,Y,DownCategory);
if Button = mbRight then
begin
if DownButton <> nil then
begin
if (not Focused) and CanFocus then
Winapi.Windows.SetFocus(Handle);
if (DownButton is TButtonItem) then
begin
ShowMessage(DownButton.Caption);
TCategoryButtons(Sender).SelectedButtonColor := $00FFD5AA;
TCategoryButtons(Sender).UpdateButton(DownButton);
end;
end;
end;
end;
Casa Brasileira
Curtidas 0
Respostas
Joel Rodrigues
04/07/2012
Qual erro está ocorrendo?
Talvez o sender não seja TCategoryButtons e sim TButtonItem.
Talvez o sender não seja TCategoryButtons e sim TButtonItem.
GOSTEI 0
Casa Brasileira
04/07/2012
Olá Joel.
Não acontece nada.
Até troquei o sender pelo catagoryButton corrente, mas mesmo assim continua
sem selecionar o buttonItem onde cliquei com o botão direito do mouse.
Mesmo assim obrigado pela resposta.
O código ficou assim:
Até +.
James Martins.
Não acontece nada.
Até troquei o sender pelo catagoryButton corrente, mas mesmo assim continua
sem selecionar o buttonItem onde cliquei com o botão direito do mouse.
Mesmo assim obrigado pela resposta.
O código ficou assim:
DownCategory := TCategoryButtons(Sender).GetCategoryAt(X,Y);
DownButton := TCategoryButtons(Sender).GetButtonAt(X,Y,DownCategory);
if Button = mbRight then
begin
if DownButton <> nil then
begin
if (not Focused) and CanFocus then
Winapi.Windows.SetFocus(Handle);
if (DownButton is TButtonItem) then
begin
TCategoryButtons(ctTasks).SelectedButtonColor := $00FFD5AA;
TCategoryButtons(ctTasks).UpdateButton(DownButton);
end;
end;
end;
Até +.
James Martins.
GOSTEI 0
Casa Brasileira
04/07/2012
Pessoal.
Só quero falar que a versão do Delphi é XE2 e
que ainda continuo com a dúvida.
Mas estudando a classe TCategoryButton acho interessante ressaltar
que de alguma forma o método DrawButton faz alguma coisa
em relação ao estado selected do ButtonItem alterando
a cor do Button Item com a cor setada na propriedade
SelectedButtonColor.
Vejam o código abaixo:
Flw..até + pessoal.
James Martins.
Só quero falar que a versão do Delphi é XE2 e
que ainda continuo com a dúvida.
Mas estudando a classe TCategoryButton acho interessante ressaltar
que de alguma forma o método DrawButton faz alguma coisa
em relação ao estado selected do ButtonItem alterando
a cor do Button Item com a cor setada na propriedade
SelectedButtonColor.
Vejam o código abaixo:
...
else if bdsSelected in State then
begin
FillColor := FSelectedButtonColor;
EdgeColor := GetShadowColor(FillColor);
if LStyle.Enabled then
begin
LDetails := LStyle.GetElementDetails(tcbButtonSelected);
if LStyle.GetElementColor(LDetails, ecTextColor, LColor) and (LColor <> clNone) then
FontColor := LColor;
if LStyle.GetElementColor(LDetails, ecBorderColor, LColor) and (LColor <> clNone) then
EdgeColor := LColor;
end;
end
...
Flw..até + pessoal.
James Martins.
GOSTEI 0