Ver Mensaje Individual
  #2  
Antiguo 17-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola daragor.

Eso de maestro ... Digamos que apenas si llego a aprendiz avanzado...

El problema que veo con usar DBGrid1.Columns.Count, es que se podrían crear menos columnas que las que existen en la tabla...

Modifiqué un poco el código que mencionas, lo probé en Lazarus y creo que funciona como se espera.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  BM: TBookMarkStr;
  i: Integer;
  s: string;
  ArchTexto: TextFile;
begin
  // Asociar un nombre de archivo a una variable de tipo File
  AssignFile(ArchTexto,'C:\A_LA_DERECHA.TXT');
  // Crear un archivo, abrirlo
  Rewrite(ArchTexto);
  // Guardar posición actual del DataSet
  BM:= DBGrid1.DataSource.DataSet.Bookmark;
  // Desactivar el mostrado en los controles data-aware asociados al DataSet
  DBGrid1.DataSource.DataSet.DisableControls;
  // Posicionarnos en el primer registro del DataSet
  DBGrid1.DataSource.DataSet.First;
  // Mientras el DataSet tenga registros...
  while not DBGrid1.DataSource.DataSet.Eof do
  begin
    s:= ''; // Inicializar cadena a vacío
    for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do  // desde el 1er al último campo
    begin
      // Concatenar en 's' cada campo con tantos espacios a la izquierda
      // como le falten al largo actual del campo para llegar al largo declarado
      s:= s + StringOfChar(' ', DBGrid1.DataSource.DataSet.Fields[i].DisplayWidth -
                           Length(DBGrid1.DataSource.DataSet.Fields[i].AsString)) +
                           DBGrid1.DataSource.DataSet.Fields[i].AsString;
    end;
    // Guardar el campo ajustado en el archivo de texto
    Writeln(ArchTexto, s);
    // Desplazarnos al próximo registro del DataSet
    DBGrid1.DataSource.DataSet.Next;
  end;
  // Cerrar archivo.
  CloseFile(ArchTexto);
  // Volver a posición previamente guardada del DataSet
  DBGrid1.DataSource.DataSet.Bookmark:= BM;
  // Activar el mostrado en los controles data-aware asociados al DataSet
  DBGrid1.DataSource.DataSet.EnableControls;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita