WMKey
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??
Alguem pode me ajudar??
Rudá
Curtidas 0
Respostas
Massuda
05/06/2006
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);
GOSTEI 0
Rudá
05/06/2006
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!
GOSTEI 0
Massuda
05/06/2006
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;
GOSTEI 0
Rudá
05/06/2006
Fiz isso mas quando aperto alguma seta ele muda de componente e não executa nenhuma ação no componente!
GOSTEI 0
Massuda
05/06/2006
Qual é a classe pai do seu componente?
GOSTEI 0
Rudá
05/06/2006
TCustomControl
GOSTEI 0
Rudá
05/06/2006
Alguem?
GOSTEI 0
Massuda
05/06/2006
Como está o KeyPreview do seu form? Você tem algum tratamento especial de teclas no seu form?
GOSTEI 0
Rudá
05/06/2006
O KeyPreview está false
Não tem nenhum tratamento!
Não tem nenhum tratamento!
GOSTEI 0
Massuda
05/06/2006
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.
GOSTEI 0
Rudá
05/06/2006
Criei um novo projeto e coloque dois botoes depois rode se vc apertar qualquer tecla ele vai mudar o foco entre os botoes!
GOSTEI 0