Ver Mensaje Individual
  #9  
Antiguo 04-01-2008
Avatar de elcolo83
elcolo83 elcolo83 is offline
Miembro
 
Registrado: feb 2007
Ubicación: Argentina
Posts: 65
Reputación: 18
elcolo83 Va por buen camino
añadiendo al codigo de jjfgg...
Código Delphi [-]
uses
  StrUtils;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  S: string;
  ss: Integer;
begin
  if (Edit1.SelStart = 0)   // primera posición
    or (Edit1.Text[ Edit1.SelStart ] in WordDelimiters) then // posición anterior es un separador de palabras
    Key := UpCase(Key);

  if ((Length(Edit1.Text)>Edit1.SelStart) // revisa si se inserta
      and (Key in WordDelimiters)) then // un delimitador de palabras
  begin
    S := Edit1.Text; // copia el contenido del edit para modificarlo
    S[ Edit1.SelStart + 1] := UpCase(S[ Edit1.SelStart + 1 ]); // convierte el siguiente caracter en mayuscula
    ss := Edit1.SelStart; // Guarda la posición del cursor
    Edit1.Text := S;  // Cambia el texto
    Edit1.SelStart := ss // Coloca el cursor de regreso en su posición
                         // esto es porque al sustituir la cadena
                         // el cursor se mueve a la primera posición
  end
end;

POdriamos agregarle un if en caso que un caracter sea borrado corrija el texto, entonces agregamos este codigo en el evento OnKeyUp

Código Delphi [-]

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var ss: integer;
    k: char;
begin
if ((key = 8) or (key = 46)) then    //Si preciona la tecla back o sup
    begin
      edit1.SelLength:= 1;
      ss := Edit1.SelStart;
      caption:= edit1.SelText;
      edit1.SelText:= Lowercase(edit1.SelText);
      edit1.SelLength:= 1;
      edit1.SelStart:= ss;

      k:= char(key);
      if (Edit1.Text[ Edit1.SelStart ] = ' ') then
        begin
          k:= #0;
          Edit1KeyPress(Sender, K);
        end;
    end;
end;
Responder Con Cita