Como desabilitar tecla escolhida no combobox
Olá pessoal, estou há um bom tempo procurando a solução mas não encontro, a minha dúvida é a seguinte: Preciso desabilitar algumas teclas através da escolha do usuário pelo combobox. Sei que posso utilizar o codigo do teclado virtual, mas não estou conseguindo entender como colocar no código, alguém tem ideia de como fazer?
Estava tentando assim:
procedure TForm1.FlatButton1Click(Sender: TObject);
begin
if FlatComboBox1.Items[FlatComboBox1.ItemIndex] = 'Delete' then
ShowMessage('A tecla "Delete" será desabilitada.');
VK_CLEAR = 0; (é aqui que me perco)
end;
end.
Estava tentando assim:
procedure TForm1.FlatButton1Click(Sender: TObject);
begin
if FlatComboBox1.Items[FlatComboBox1.ItemIndex] = 'Delete' then
ShowMessage('A tecla "Delete" será desabilitada.');
VK_CLEAR = 0; (é aqui que me perco)
end;
end.
Keisse Brandao
Curtidas 0
Respostas
Ricardo
01/07/2014
Tem que colocar a instrução no evento OnkeyDown ou OnKeyPress e VK_CLEAR := 0, você colocou VK_CLEAR = 0.
GOSTEI 0
Keisse Brandao
01/07/2014
Mas Ricardo, o usuário não vai pressionar a tecla, ele só vai escolher no combobox... Mesmo fazendo assim como vc falou não dá certo, pois aparece a mensagem de erro, "The left side cannot be assigned to"
GOSTEI 0
Keisse Brandao
01/07/2014
Tenho que adicionar alguma biblioteca?
GOSTEI 0
Thiago Irrazabal
01/07/2014
Boa noite, veja se isso resolve teu problema... primeiramente no teu formulário deixe o KeyPreview como TRUE, depois declare essa váriavel no private do teu formulário
Sem seguida declare essa procedure aqui no private também:
CTRL + SHIFT + C para criar e coloque esse código dentro:
Aqui tu pode fazer outras coisas como mostrar a mensagem quando a tecla for pressionada e dizer que ela está "inativa"...
Agora no OnChange do teu ComboBox tu coloca o seguinte código:
Onde Form1 tu substitui pelo nome do teu formulário, e o case do itemindex tu substitui pelas teclas que tu colocou nos items do combobox, espero que ajude.
Att,
Thiago Irrazabal de Oliveira.
vKey: Word;
Sem seguida declare essa procedure aqui no private também:
procedure KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
CTRL + SHIFT + C para criar e coloque esse código dentro:
if Key = vKey then
Key := 0;
Aqui tu pode fazer outras coisas como mostrar a mensagem quando a tecla for pressionada e dizer que ela está "inativa"...
Agora no OnChange do teu ComboBox tu coloca o seguinte código:
case ComboBox1.ItemIndex of
0: vKey := VK_F1;
1: vKey := VK_F2;
2: vKey := VK_F3;
3: vKey := VK_F4;
4: vKey := VK_F5;
5: vKey := VK_F6;
end;
TForm(Form1).OnKeyDown := KeyDown;
Onde Form1 tu substitui pelo nome do teu formulário, e o case do itemindex tu substitui pelas teclas que tu colocou nos items do combobox, espero que ajude.
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0