Ver Mensaje Individual
  #5  
Antiguo 15-11-2006
Avatar de Behemot
Behemot Behemot is offline
Miembro
 
Registrado: oct 2005
Posts: 15
Reputación: 0
Behemot Va por buen camino
Aqui les mando el codigo:
///////////////////////////////////////////////////////////////
Código Delphi [-]
 
procedure TForm1.ControlMouseMoveEdit(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
iCaracteres, iLineaPos, iCaracterPos : Integer;
begin
  // ControlMouseMoveEdit() se activa en : OnMouseMove
  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
    // ControlEdit() se activa en : OnKeyDown y OnKeyUp del Edit
    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);  //Columna
    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
  // ControlMouseMoveEdit() se activa en : OnMouseMove
  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;
////////////////////////////////////////////
Responder Con Cita