Underc0de

Programación General => Delphi => Mensaje iniciado por: ANTRAX en Febrero 24, 2010, 04:52:37 PM

Título: Pegar multiples renglones en un DBGrid
Publicado por: ANTRAX en Febrero 24, 2010, 04:52:37 PM
Necesitamos un TMemo en nuestra aplicación, el cual estará invisible y será para pasar temporalemente el contenido del portapapeles, esto para luego pasar linea a linea este contenido a nuestro DBGrid.

Código (delphi) [Seleccionar]
procedure TfrmPpal.mnPegarClick(Sender: TObject);
var
  i: Integer;
begin
  if Clipboard.HasFormat(CF_TEXT) then  //Verifica si el portapapeles tiene texto (no imagenes)
     begin
       mmClipboard.Clear;  //Limpiamos nuestro TMemo
       mmClipboard.PasteFromClipboard;
       i := mmClipboard.Lines.Count - 1;  //Establecemos i con las líneas que tiene el TMemo, si son 5 lineas, i vale 5
       while i >= 0 do
          begin
            ADOTablaComp.Insert;
//Ahora vamos a pegar el contenido de la línea "i" en el DBGrid
            ADOTablaComp.FieldByName('NombrePC').AsString := mmClipboard.Lines[i]; 
            try
              ADOTablaComp.Post;  //intentamos hacer el post
            except  //este except es por si tienes indice en el campo a pegar y no aceptas duplicados
              ShowMessage('El texto ' + mmClipboard.Lines[i] + ' ya está dado de alta');
              ADOTablaComp.CancelUpdates;  //esto elimina el dato que queremos pegar y está duplicado
            end;//try
          i := i - 1;
          end; //while
     end; //if Clipboard contiene texto
end;