Añadir conmutacion Insertar <-> Reemplazar en tus TEdits/TMemos  

Enviado Por: Arturo Ortí
Web : N.D.
Email: arturo98@santandersupernet.com
Fecha: 21/08/99

Truco accedido 131 veces

 


Los Richedits tienen su propio tratamiento de la tecla insertar/reemplazar, pero los TEdits y los TMemos no. Este codigo les proporciona control de insertar/sobreescribir a los TEdits y TMemos de tu form:

  • Declara estas dos procedures en tu form (en el private o en el public):


         procedure pKeyDown(Sender: TObject; var Key: Word;
           Shift: TShiftState);
         procedure pKeyPress(Sender: TObject; var Key: Char);
    



  • Y claro, pon las procedures siguientes en la implementation de la form:


     procedure TForm1.pKeyDown(Sender: TObject; var Key: Word;
       Shift: TShiftState);
     begin
       if key = VK_INSERT then bInsert := not bInsert;
     end;
    
     procedure TForm1.pKeyPress(Sender: TObject; var Key: Char);
     begin
       if bInsert then
          if (sender as TCustomEdit).SelLength = 0 then
             (sender as TCustomEdit).SelLength := 1;
     end;
    



  • Declara esta variable global a tu form (ponla en el var de la form):


     var
       bInsert: boolean = False;
    



  • Pon este codigo en el OnCreate de tu form:


     procedure TForm1.FormCreate(Sender: TObject);
     var i:integer;
     begin
       for i := ComponentCount-1 downto 0 do
       begin
          if (Components[i] is TEdit) then
          begin
            (Components[i] as TEdit).OnKeyDown := pKeyDown;
            (Components[i] as TEdit).OnKeyPress := pKeyPress;
          end;
          if (Components[i] is TMemo) then
          begin
            (Components[i] as TMemo).OnKeyDown := pKeyDown;
            (Components[i] as TMemo).OnKeyPress := pKeyPress;
          end;
       end;
     end;