Fórum WMKey #322812

05/06/2006

0

Estou fazendo um componente lista o problema que to tentando resolver é que quando o componente tiver em foco e quando apertar as setas mover dentro do componente entre os registro da lista??

Alguem pode me ajudar??


Rudá

Rudá

Responder

Posts

05/06/2006

Massuda

Imagino que ´lista´ seja um listbox... para trocar dois itens de posição dentro do listbox, faça...
// troca as posições dos dois primeiros itens do listbox
SeuListBox.Items.Exchange(0, 1);



Responder

Gostei + 0

05/06/2006

Rudá

Descupe acho que não expliquei direito, estou criando um componente tipo um listbox, só que eu to fazendo um personalizado para o que eu quero só que eu to tentando resolver esse problema de usar as setas para mudar de registro, quero saber como detectar elas!


Responder

Gostei + 0

05/06/2006

Massuda

No seu componente, sobreescreva o método protegido DoKeyDown...
type
  TSeuListBox = class...
  ...
  protected
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  ...


procedure TSeuListBox.KeyDown(var Key: Word; Shift: TShiftState);
begin
  // talvez tenha que verificar o valor de Shift!

  // exemplo de como tratar seta para cima/para baixo
  if Key = VK_UP then begin
    ... trata seta para cima...
    Key := #0; // descarta
  end
  else if Key = VK_DOWN then begin
    ... trata seta para baixo...
    Key := 0; // descarta
  end;

  inherited KeyDown(Key, Shift);
end;



Responder

Gostei + 0

05/06/2006

Rudá

Fiz isso mas quando aperto alguma seta ele muda de componente e não executa nenhuma ação no componente!


Responder

Gostei + 0

05/06/2006

Massuda

Qual é a classe pai do seu componente?


Responder

Gostei + 0

05/06/2006

Rudá

TCustomControl


Responder

Gostei + 0

07/06/2006

Rudá

Alguem?


Responder

Gostei + 0

08/06/2006

Massuda

Como está o KeyPreview do seu form? Você tem algum tratamento especial de teclas no seu form?


Responder

Gostei + 0

08/06/2006

Rudá

O KeyPreview está false

Não tem nenhum tratamento!


Responder

Gostei + 0

08/06/2006

Massuda

O comportamento que você descreveu (seta para cima/para baixo muda de componente) só é possível se tiver algo no form interceptando e tratando as teclas antes dos componentes.


Responder

Gostei + 0

08/06/2006

Rudá

Criei um novo projeto e coloque dois botoes depois rode se vc apertar qualquer tecla ele vai mudar o foco entre os botoes!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar