Letra Maiuscula automatica
Seria possível programar um TEdit para que mesmo se digitar texto
em minusculo, automaticamente em tempo de digitação ele
transformasse a primeira letra e todas letras depois do ´espaço´
em maiusculas.
:oops: ? ? ? ?
T+
em minusculo, automaticamente em tempo de digitação ele
transformasse a primeira letra e todas letras depois do ´espaço´
em maiusculas.
:oops: ? ? ? ?
T+
Eniorm
Curtidas 0
Respostas
4_olho
04/09/2003
Como não é comum este tipo de escrita em qualquer língua, portanto não tem esta facilidade. Infelizmente é uma invenção dos analistas. Lembre-se que maiúsuclas só no início de frase e em subtsantivos próprios.
GOSTEI 0
Koplin
04/09/2003
Se a sua idéia é pegar algo como joão de deus da silva e converter para João de Deus da Silva, tente esta função que uso em meus aplicativos.
procedure FormataTxt(sender:TObject);
var s1,s2,s3:string; tam1,i:integer; b:boolean;
begin
If(sender is TEdit)or(sender is TDBEdit)Then With sender as tCustomEdit do Begin
s1:=TCustomEdit(sender).Text;
tam1:=Length(s1);
for i:= 0 to tam1 -1 Do Begin
s2:=Copy(s1,i,1);
If i = 0 Then begin
delete(s1,1,1);
s1:=ansiUpperCase(s2)+s1;
end;
If(s2=´ ´)Then Begin
s3:=Copy(s1,i+1,3);
If(s3=´do ´)or(s3=´da ´)or(s3=´das´)or(s3=´e/o´)or(s3=´dos´)or(s3=´de ´)or(Copy(s3,Length(s3)-1,1)=´ ´) Then B:=True else b:=False;
If b=false Then Begin
s3:=Copy(s1,i+1,1);
delete(s1,i+1,1);
s3:=AnsiUpperCase(s3);
insert(s3,s1,i+1);
end; end;
Para usá-la:
no evento OnExit do componente faça
If TabelaTal.state in[dsinsert,dsedit] then//essa linha se for dbtext
Formatatxt(sender);
TCustomEdit(sender).Text:=s1;
end; end; end;
procedure FormataTxt(sender:TObject);
var s1,s2,s3:string; tam1,i:integer; b:boolean;
begin
If(sender is TEdit)or(sender is TDBEdit)Then With sender as tCustomEdit do Begin
s1:=TCustomEdit(sender).Text;
tam1:=Length(s1);
for i:= 0 to tam1 -1 Do Begin
s2:=Copy(s1,i,1);
If i = 0 Then begin
delete(s1,1,1);
s1:=ansiUpperCase(s2)+s1;
end;
If(s2=´ ´)Then Begin
s3:=Copy(s1,i+1,3);
If(s3=´do ´)or(s3=´da ´)or(s3=´das´)or(s3=´e/o´)or(s3=´dos´)or(s3=´de ´)or(Copy(s3,Length(s3)-1,1)=´ ´) Then B:=True else b:=False;
If b=false Then Begin
s3:=Copy(s1,i+1,1);
delete(s1,i+1,1);
s3:=AnsiUpperCase(s3);
insert(s3,s1,i+1);
end; end;
Para usá-la:
no evento OnExit do componente faça
If TabelaTal.state in[dsinsert,dsedit] then//essa linha se for dbtext
Formatatxt(sender);
TCustomEdit(sender).Text:=s1;
end; end; end;
GOSTEI 0
Bacalhau
04/09/2003
O TEdit tem a propriedade CharCase.
Coloca CharCase := ecUpperCase; :lol:
Coloca CharCase := ecUpperCase; :lol:
GOSTEI 0
Eniorm
04/09/2003
É isso mesmo cara, com uma diferença, ao invés de ser executado no OnExit, isso seria em tempo de digitação.
Exemplo, vc inicia a digitação, como está a 1ª posição,
a letra seria em maiuscula, o resto seria em minuscula
enquando não fosse digitado um espaço e assim por diante.
T+
Exemplo, vc inicia a digitação, como está a 1ª posição,
a letra seria em maiuscula, o resto seria em minuscula
enquando não fosse digitado um espaço e assim por diante.
T+
GOSTEI 0
Koplin
04/09/2003
Eu tenho esta função adaptada para formatar cep, data e telefones.
É só aproveitar esta idéia.
Eu uso no OnExit para não ficar chamando toda hora a função. Mas, do seu jeito tbm funciona.
Fico feliz por ajudar.
Boa sorte.
É só aproveitar esta idéia.
Eu uso no OnExit para não ficar chamando toda hora a função. Mas, do seu jeito tbm funciona.
Fico feliz por ajudar.
Boa sorte.
GOSTEI 0
Eniorm
04/09/2003
Eu tenho esta função adaptada para formatar cep, data e telefones.
É só aproveitar esta idéia.
Eu uso no OnExit para não ficar chamando toda hora a função. Mas, do seu jeito tbm funciona.
Fico feliz por ajudar.
Boa sorte.
Legal cara, posta a func aqui no forum
T+
GOSTEI 0
Carlosrm
04/09/2003
eniomarconcini,
Se depois de ler o texto do 4_olho, ainda não tiver passado a sua vontade, experimente a alternativa abaixo (lembre-se de que se o seu sistema oferecer opções incomuns para o usuário, ele (usuário) levará mais tempo para utilizar com desenvoltura o seu sistema. À primeira vista o seu sistema parecerá menos eficiente.
Coloque um edit no formulário e na propriedade CharCase do edit selecione ecLowerCase (não importa como vc digitar; o edit só vai mostrar em minúsculas).
procedure TForm1.Edt1Exit(Sender: TObject);
var
I : byte;
lin : string;
begin
lin := edt1.text;
For I := 1 to length(lin) do
If (I = 1) or (lin[I - 1] = ´ ´) then
lin[I] := upcase(lin[I]);
edt1.text := lin;
end;
Obs: Depois que sair do edit1, o text ´josé da silva e lima´ ficará ´José Da Silva E Lima´.
Geralmente, dez programadores resolvem o mesmo problema de dez modos diferentes. Melhor para todos nós. Um ajuda o outro, e outro ajuda o um.
Se não ajudou, espero não ter atrapalhado. carlosrm.
Se depois de ler o texto do 4_olho, ainda não tiver passado a sua vontade, experimente a alternativa abaixo (lembre-se de que se o seu sistema oferecer opções incomuns para o usuário, ele (usuário) levará mais tempo para utilizar com desenvoltura o seu sistema. À primeira vista o seu sistema parecerá menos eficiente.
Coloque um edit no formulário e na propriedade CharCase do edit selecione ecLowerCase (não importa como vc digitar; o edit só vai mostrar em minúsculas).
procedure TForm1.Edt1Exit(Sender: TObject);
var
I : byte;
lin : string;
begin
lin := edt1.text;
For I := 1 to length(lin) do
If (I = 1) or (lin[I - 1] = ´ ´) then
lin[I] := upcase(lin[I]);
edt1.text := lin;
end;
Obs: Depois que sair do edit1, o text ´josé da silva e lima´ ficará ´José Da Silva E Lima´.
Geralmente, dez programadores resolvem o mesmo problema de dez modos diferentes. Melhor para todos nós. Um ajuda o outro, e outro ajuda o um.
Se não ajudou, espero não ter atrapalhado. carlosrm.
GOSTEI 0