É muito comum as pessoas digitarem um texto, e só após algum tempo notarem que estão com a Caps Lock acionada.
Para não ter que apagar e escrever tudo novamente, estou tentando fazer com que isto possa ser feito de forma automática, apenas pressionando a tecla F9, por exemplo.
Para testar, fiz uma rotina bem simples, que necessito de ajuda para completar.
Neste caso, tenho 4 Edits, e preciso fazer a verificação de qual Edit está no foco para então alterá-lo.
A minha dúvida, é como fazer isto de forma automática, ou seja, o programa verifica qual Edit ou DBEdit está no foco, e retorna a String alterada para este campo, em qualquer lugar do programa, sem que eu necessite efetuar manualmente a verificação de qual Edit está no foco.
Pergunta
José Luiz
É muito comum as pessoas digitarem um texto, e só após algum tempo notarem que estão com a Caps Lock acionada.
Para não ter que apagar e escrever tudo novamente, estou tentando fazer com que isto possa ser feito de forma automática, apenas pressionando a tecla F9, por exemplo.
Para testar, fiz uma rotina bem simples, que necessito de ajuda para completar.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Function Inverte_CX ( TEXTO : string ): string ;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WMHotKey ( var Msg: TWMHotKey ); message WM_HOTKEY ;
end;
var
Form1: TForm1;
HKeySet9 : Integer;
implementation
{$R *.dfm}
procedure TForm1.WMHotKey ( var Msg: TWMHotKey );
begin
if ( Msg.HotKey = HKeySet9 ) then begin
if Edit1.Focused = True then Edit1.Text := Inverte_CX ( Edit1.Text ) ;
if Edit2.Focused = True then Edit2.Text := Inverte_CX ( Edit2.Text ) ;
if Edit3.Focused = True then Edit3.Text := Inverte_CX ( Edit3.Text ) ;
if Edit4.Focused = True then Edit4.Text := Inverte_CX ( Edit4.Text ) ;
end ;
end;
Function TForm1.Inverte_CX ( TEXTO : string ): string ;
var
mVAR_I : String ;
mVAR_F : String ;
mVAR_R : String ;
mPOS : Integer ;
i : Integer ;
begin
mVAR_I := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÇÃÕçãõÁÉÍÓÚáéíóú' ;
mVAR_F := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZçãõÇÃÕáéíóúÁÉÍÓÚ' ;
mVAR_R := '' ;
for i := 1 to length ( Texto ) do begin
mPOS := Pos ( Texto, mVAR_I ) ;
if mPOS > 0 then
mVAR_R := mVAR_R + Copy ( mVAR_F, mPOS, 1 )
else
mVAR_R := mVAR_R + Texto ;
end ;
result := mVAR_R ;
end ;
procedure TForm1.FormCreate(Sender: TObject);
begin
HKeySet9 := GlobalAddAtom ( 'Hotkey9' );
RegisterHotKey ( Handle, HKeySet9, 0, vk_F9 );
end;
end.
Neste caso, tenho 4 Edits, e preciso fazer a verificação de qual Edit está no foco para então alterá-lo.
A minha dúvida, é como fazer isto de forma automática, ou seja, o programa verifica qual Edit ou DBEdit está no foco, e retorna a String alterada para este campo, em qualquer lugar do programa, sem que eu necessite efetuar manualmente a verificação de qual Edit está no foco.
Antecipadamente, agradeço,
José Luiz.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.