Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Escribir mayuscula minuscula (https://www.clubdelphi.com/foros/showthread.php?t=67467)

sizne 19-04-2010 03:25:48

Escribir mayuscula minuscula
 
Hola!
Como puedo hacer para escribir en un DBEdit o TEdit, ejemplo;

"Club Delphi Es Lo Mejor"

Sin importar que el BloqMayùs este activado o desactivado?

Gracias

ecfisa 19-04-2010 05:34:29

Hola sisne.

El TDBEdit hereda de TCustomEdit la propiedad CharCase de tipo TEditCharCase, esta puede tomar los siguientes valores:ecNormal, ecUpperCase, ecLowerCase.

ecNormal: Se respeta el texto tal como se ingresa.
ecUpperCase: Todo el texto es pasado a mayúsculas.
ecLowerCase: Todo el texto es pasado a minúsculas.

Podés elegir dicha propiedad desde el Object Inspector, espero que sea eso lo que preguntas.


Saludos.

ecfisa 19-04-2010 07:10:10

Perdón sisne, me confundí al interpretar tu mensaje (no sé donde tengo la cabeza...:o)

Para que lo que escriban quede tál como lo ingresan, Bloq Mayus tiene que estar desactivada.
Para detectar si esta o no desactivada y cambiar el estado podes usar este codigo:
Código:

procedure TForm1.FormCreate(Sender: TObject);
var
  KeybEstat: TKeyboardState;
begin
  GetKeyboardState(KeybEstat); // Tomar estado teclado
  if KeybEstat[VK_CAPITAL] = 1 then  // Bloq Mayus presionado (0= no)
    CambiarCapital;    // Cambiar
end;
 
{ Cambia estado Bloq Mayus }
procedure CambiarCapital;
begin
  //Presionar Bloq Mayús
  keybd_event(VK_CAPITAL,0,KEYEVENTF_EXTENDEDKEY,0);
  //Soltar Bloq Mayús
  keybd_event(VK_CAPITAL,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;

En este ejemplo hice que, si Bloq Mayus esta activada se desactive al entrar al Form, pero podrías Activar/Desactivar, al entrar o salir de un componente con sólo llamar a CambiarCapital nuevamente.

Saludos.

rgstuamigo 19-04-2010 21:30:45

Y que tal si se pone el siguiente código en el evento OnKeyPress del Edit en cuestión.;)
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
   begin
      with Sender as TEdit do
         if (Text = '')
         or (Text[SelStart] = ' ')
         or (SelLength = Length(Text)) then
            if Key in ['a'..'z'] then  Key := UpCase(Key);
   end;
.
Saludos...:)

LuisAlf:: 19-04-2010 21:34:13

Hola...

Espero que no sea demasiado tarde en responder pero yo alguna vez trabaje con algo parecido....

Mira una manera de hacerlo es con el evento onkeypress del componente...

No te paso el codigo....mejor te doy la idea...

Bueno lo que puedes hacer es almacenar en una variable global de tipo char la tecla presionada es decir la que pasa como parametro tal evento (Key: char)...
Para que siempre puedas tener la letra anteriormente escrita...

Por ejemplo si (if) hay un ' ' (espacio) anterior pues aplicas que la key ya presionada(letra) se convierta a mayuscula automaticamente:

Key := AnsiUpperCase(Key)[1];

Ha y tambien tienes que evaluar en el if si es la primera letra pulsada, lo puedes hacer si la variable global char=''(que indica que no ha almacenado nada)....

Y ademas creo que es necesario evaluar el salto de linea tambien...es decir si
la variable global char=#13.....

Estas tres condiciones las evaluas en un if con un or y ya está.....

PD: La variable global que almacena el key debe ser la última instrucción dentro del evento keypress.....

LuisAlf:: 19-04-2010 21:43:00

Bueno...

Parece que ya me ganaron......

Muy buen codigo...

ecfisa 20-04-2010 01:47:46

Hola a todos.

Todas las propuestas están acertadas, pero veo que hemos tomado diferentes criterios sobre lo que pide sisne.

Cita:

Como puedo hacer para escribir en un DBEdit o TEdit, ejemplo;
"Club Delphi Es Lo Mejor"
Sin importar que el BloqMayùs este activado o desactivado?
Veo que rgstuamigo y LuisAlf, interpretaron que quiere las primeras letras de las palabras en mayúsculas, tál como figura en el segundo renglón del post.
Pero si BloqMayus esta activa no obtendrá ese resultado...

Yo por mi parte hice incapié en el tercer renglón, pensando que quería poder escribir mayúsculas y minúsculas independientemente de que hubieran presionado BloqMayús.
Pero no obtendrá la primer letra de la palabra en mayúsculas...

Creo que combinando los códigos, sisne podrá cubrir sus espectativas.;)

Saludos.

sizne 20-04-2010 04:41:16

Hoola!

ecfisa exacto sin importar si esta o no el Bloq Mayús activado, la cuestión es que en el Tedit me permita escribir cada comienzo de una nueva letra o palabra después del espacio en mayúscula.


Muchas Gracias A Todos Eh!!

Saludos.


La franja horaria es GMT +2. Ahora son las 04:22:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi