Aplicativo clx
Ola amigos
estou escrevendo um aplicativo em clx, pois minha ideia é migrar todos os sistemas da minha empresa para linux, e estou com uma duvida de como usar as setas para cima e para baixo e o enter para mudar o foco do cursor.
Devo usar diretamente o codigo ASCII direto
uso assim com vcl
If (Key = VK_RETURN) or (Key = VK_DOWN) then
begin
Perform(WM_NEXTDLGCTL,0,0);
Key := 0;
end
else
If Key = VK_UP then
begin
Perform(WM_NEXTDLGCTL,1,0);
end;
estou escrevendo um aplicativo em clx, pois minha ideia é migrar todos os sistemas da minha empresa para linux, e estou com uma duvida de como usar as setas para cima e para baixo e o enter para mudar o foco do cursor.
Devo usar diretamente o codigo ASCII direto
uso assim com vcl
If (Key = VK_RETURN) or (Key = VK_DOWN) then
begin
Perform(WM_NEXTDLGCTL,0,0);
Key := 0;
end
else
If Key = VK_UP then
begin
Perform(WM_NEXTDLGCTL,1,0);
end;
Uiliangurjon
Curtidas 0
Respostas
Dopi
12/01/2005
Os códigos de Key na CLX são bem diferentes...
Abra o arquivo Qt.pas do diretorio ($Delphi)\Source\clx e procure por key_
Esqueça o uso do Perform... não é possivel postar msg Windows na CLX...
para fazer o Enter se comportar como TAB insira o código abaixo no KeyPress do Edit
No projeto ACBr criei o componente TACBrEnterTabCLX... basta inseri-lo em algum Form e ajustar a propriedade EnterAsTab para true, que todos os componentes se comportarão assim...
Abra o arquivo Qt.pas do diretorio ($Delphi)\Source\clx e procure por key_
const
Key_Escape = 4096 { $1000 };
Key_Tab = 4097 { $1001 };
Key_Backtab = 4098 { $1002 };
Key_Backspace = 4099 { $1003 };
Key_Return = 4100 { $1004 };
Key_Enter = 4101 { $1005 };
Key_Insert = 4102 { $1006 };
Key_Delete = 4103 { $1007 };
....
....
Esqueça o uso do Perform... não é possivel postar msg Windows na CLX...
para fazer o Enter se comportar como TAB insira o código abaixo no KeyPress do Edit
if Key = #13 then begin SelectNext( TWidgetControl( Sender ),true,true) ; Key := 0 ; end ;
No projeto ACBr criei o componente TACBrEnterTabCLX... basta inseri-lo em algum Form e ajustar a propriedade EnterAsTab para true, que todos os componentes se comportarão assim...
GOSTEI 0
Uiliangurjon
12/01/2005
eu fiz como vc me falou mas ainda não da certo, sempre que teclo enter volta para o primeiro dbedit, mas quando aperto tab vai para a sequencia normal!!!
Valeu!!!
Valeu!!!
GOSTEI 0
Dopi
12/01/2005
Estranho... deveria funcionar....
Você aplicou os Patchs NAO oficiais para a CLX ?
http://unvclx.sourceforge.net/
Sem eles a CLX é impraticavel de tantos Bugs...
Baixe eles aqui:
http://sourceforge.net/project/showfiles.php?group_id=106820&package_id=116130
arquivo: d7clxpatch.zip
Você aplicou os Patchs NAO oficiais para a CLX ?
http://unvclx.sourceforge.net/
Sem eles a CLX é impraticavel de tantos Bugs...
Baixe eles aqui:
http://sourceforge.net/project/showfiles.php?group_id=106820&package_id=116130
arquivo: d7clxpatch.zip
GOSTEI 0
Gilbertoscruz
12/01/2005
Você poderia usar o seguinte comando para avançar de campo usando CLX !
As teclas de atalho para CLX começam com KEY_ + tecla !
Não esqueça de adicionar na USES a unit QT para ativar os controle de tecla !
Exemplo:
no onkeydown do form coloque
case Key of
KEY_ENTER, KEY_RETURN: SelectNext(ActiveControl, True, True);
end;
KEY_ENTER, KEY_RETURN = ENTER
KEY_ESCAPE = ESQ
E assim vai !
Espero ter ajudado ! qualquer duvida me envia um e-mail !
falow
As teclas de atalho para CLX começam com KEY_ + tecla !
Não esqueça de adicionar na USES a unit QT para ativar os controle de tecla !
Exemplo:
no onkeydown do form coloque
case Key of
KEY_ENTER, KEY_RETURN: SelectNext(ActiveControl, True, True);
end;
KEY_ENTER, KEY_RETURN = ENTER
KEY_ESCAPE = ESQ
E assim vai !
Espero ter ajudado ! qualquer duvida me envia um e-mail !
falow
GOSTEI 0
Uiliangurjon
12/01/2005
Valeu
obrigado!!!!
obrigado!!!!
GOSTEI 0
Uiliangurjon
12/01/2005
como faço para mudar a cor de um listview
usava o seguinte codigo na vcl
procedure TfrmPesquisa.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Odd(Item.Index) then
Listview1.Canvas.Brush.Color := clSilver
else
ListView1.Canvas.Brush.Color := clWhite;
end;
procedure TfrmPesquisa.ListView1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
if Odd(Item.Index) then
Listview1.Canvas.Brush.Color := clSilver
else
ListView1.Canvas.Brush.Color := clWhite;
end;
usava o seguinte codigo na vcl
procedure TfrmPesquisa.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Odd(Item.Index) then
Listview1.Canvas.Brush.Color := clSilver
else
ListView1.Canvas.Brush.Color := clWhite;
end;
procedure TfrmPesquisa.ListView1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
if Odd(Item.Index) then
Listview1.Canvas.Brush.Color := clSilver
else
ListView1.Canvas.Brush.Color := clWhite;
end;
GOSTEI 0