Aqui les mando el codigo:
///////////////////////////////////////////////////////////////
Código Delphi
[-]
procedure TForm1.ControlMouseMoveEdit(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
iCaracteres, iLineaPos, iCaracterPos : Integer;
begin
iCaracteres := (Sender as TEdit).Tag;
iLineaPos := SendMessage((Sender as TEdit).Handle,EM_LINEFROMCHAR,(Sender as TEdit).SelStart,0);
iCaracterPos := SendMessage((Sender as TEdit).Handle,EM_LINEINDEX,iLineaPos,0);
iCaracterPos := (Sender as TEdit).SelStart-iCaracterPos;
if iCaracterPos < iCaracteres then begin
(Sender as TEdit).SelStart := iCaracteres;
end;
end;
//////////////////////////////////////////////
//////////////////////////////////////////////
Código Delphi
[-]
procedure TForm1.ControlEdit(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
iCaracteres, Lpos, Cpos : Integer;
begin
iCaracteres := (Sender as TEdit).Tag;
Lpos := SendMessage((Sender as TEdit).Handle,EM_LINEFROMCHAR,(Sender as TEdit).SelStart,0);
Cpos := SendMessage((Sender as TEdit).Handle,EM_LINEINDEX,Lpos,0);
CPos := (Sender as TEdit).SelStart-CPos;
Label2.Caption:=IntToStr(Cpos); if (key = VK_BACK) or (key = VK_DELETE) then begin
if Cpos < iCaracteres then begin
(Sender as TEdit).Undo;
(Sender as TEdit).SelStart := iCaracteres;
end;
end;
if (key = VK_HOME) then begin
(Sender as TEdit).SelStart := (Sender as TEdit).Tag;
end;
if (key = VK_LEFT) or (key = VK_UP) then begin
if Cpos < iCaracteres then
(Sender as TEdit).SelStart := iCaracteres;
end;
if(Key >= 30) and (Key <= 122) and (Key <> 35) and (Key <> 36) and not ((Key >= 37) and (Key <= 40)) then begin
if( Length((Sender as TEdit).Text) = (Sender as TEdit).MaxLength) then
SelectNext(Sender as TWincontrol, true, true);
end;
if (key = VK_DOWN) then begin
SelectNext(Sender as TWincontrol, true, true);
end;
end;
/////////////////////////////////////////////
/////////////////////////////////////////////
Código Delphi
[-]
procedure TForm1.ControlMouseMoveEdit(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
iCaracteres, iLineaPos, iCaracterPos : Integer;
begin
iCaracteres := (Sender as TEdit).Tag;
iLineaPos := SendMessage((Sender as TEdit).Handle,EM_LINEFROMCHAR,(Sender as TEdit).SelStart,0);
iCaracterPos := SendMessage((Sender as TEdit).Handle,EM_LINEINDEX,iLineaPos,0);
iCaracterPos := (Sender as TEdit).SelStart-iCaracterPos;
if iCaracterPos < iCaracteres then begin
(Sender as TEdit).SelStart := iCaracteres;
end;
end;
////////////////////////////////////////////