TPanel Não Dispara o Help do Programa?
Numa aplicação qualquer tenho um Tbutton e um Tpanel. Ambos tem a propriedade helpContext = 10
A propriedade borderStyle do form é bsSizeable e a propriedade BorderIcons é [biSystemMenu,biHelp].
Na aplicação só tem essas duas rotinas:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHelp := AppHelp;
end;
function TForm1.AppHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
begin
ShowMessage(screen.ActiveControl.Name);
end;
A dúvida: ao rodar o programa, se eu clicar no ícone de help (o sinal de ?) do form e depois clicar no botão, o sistema apresenta a mensagem ´button1´, mas, se eu fizer o mesmo no panel1, nada acontece, ou seja, apesar do componente tpanel ter a propriedade helpContext, numa chamada do help do programa, ele (o panel) não dispara o evento.
Isso tem solução ou outra forma de remediar?
Obviamente o ´showMessage´ foi só para deixar a explicação do exemplo mais sintética, mas a idéia é que quando o usuário clicar no ´?´ do form e depois clicar no panel, seja acionado o help do sistema.
Obrigado.
A propriedade borderStyle do form é bsSizeable e a propriedade BorderIcons é [biSystemMenu,biHelp].
Na aplicação só tem essas duas rotinas:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHelp := AppHelp;
end;
function TForm1.AppHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
begin
ShowMessage(screen.ActiveControl.Name);
end;
A dúvida: ao rodar o programa, se eu clicar no ícone de help (o sinal de ?) do form e depois clicar no botão, o sistema apresenta a mensagem ´button1´, mas, se eu fizer o mesmo no panel1, nada acontece, ou seja, apesar do componente tpanel ter a propriedade helpContext, numa chamada do help do programa, ele (o panel) não dispara o evento.
Isso tem solução ou outra forma de remediar?
Obviamente o ´showMessage´ foi só para deixar a explicação do exemplo mais sintética, mas a idéia é que quando o usuário clicar no ´?´ do form e depois clicar no panel, seja acionado o help do sistema.
Obrigado.
Armindo
Curtidas 0
Respostas
Massuda
06/05/2008
O TPanel é apenas um container para outros componentes (edits, buttons, etc) de modo que o usuário não interage diretamente com ele. Por isso ele não gera o evento de ajuda contextual. Isso acontece com qualquer componente que não receba foco de entrada.
GOSTEI 0
Armindo
06/05/2008
O TPanel é apenas um container para outros componentes (edits, buttons, etc) de modo que o usuário não interage diretamente com ele. Por isso ele não gera o evento de ajuda contextual.
Obrigado Massuda,
É isso que eu também sei desse componente. É que como percebi que ele tem 3 propriedades - helpContext, helpKeyword e helpType (que no caso, não servem para absolutamente nada), imaginei que alguém soubesse de alguma forma de remediar essa questão.
Por gentileza, me responde uma outra dúvida que surgiu: numa aplicaçãoo que tiver apenas panels e labels, não será possível utilizar essa rotina que descrevi no tópico de abertura (o usuário usar o ´?´ do form para acionar o help) ?
Apesar de tanto o form, o label e o panel terem as três propriedades relacionadas ao help, elas praticamente não tem utilidade nesse meu caso?
Obrigado
GOSTEI 0
Massuda
06/05/2008
...numa aplicaçãoo que tiver apenas panels e labels, não será possível utilizar essa rotina que descrevi no tópico de abertura (o usuário usar o ´?´ do form para acionar o help) ?
Exato. O Windows (não o Delphi) assume que isso só interessa no caso de componentes que recebem foco de entrada.GOSTEI 0