Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [delphi] Importare una tabella in una String grid

    mia sapreste dire come si potrebbe fare per importare un file txt, delimitato da tabulazione (quindi una vera e prorpia matrice) IN UNA TStringGrid?

    grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Per gestire una lista di stringhe, caricarla e salvare su file di testo, si può usare la classe TStringList.

    La StringGrid, dal canto suo, permette di accedere contemporaneamente al testo contenuto in righe e colonne tramite le proprietà Rows e Col.

    E' possibile ottenere il contenuto della prima riga, ad esempio, dalla proprietà Rows[1]; la proprietà restituisce una lista di stringhe (che in realtà è un'unica stringa separata da ritorni a capo).

    Creando una nuova istanza di TStringList, è possibile memorizzare il testo ottenuto da Rows nella proprietà Text, modificare il carattere delimitatore (ad esempio, "|", il pipe) e salvare il testo su file separando ciascun valore con questo deliminatore, che può eventualmente essere sostituito con il TAB (carattere #9).

    codice:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      SL: TStringList;
    begin
      SL := TStringList.Create;
      try
        SL.Text := StringGrid1.Rows[1].Text;
        SL.Delimiter := '|';
        Memo1.Lines.Text := SL.DelimitedText;
        Memo1.Lines.SaveToFile('export.txt');
      finally
        SL.Free;
      end;
    end;
    Questo codice di esempio mostra come creare un'istanza di TStringList, memorizzare al suo interno il contenuto della prima riga di una griglia, modifica il delimitatore, visualizza le stringhe esportate in un memo e le salva in un file di testo, poi distrugge la StringList.

    Come al solito, la tua domanda è esageratamente vasta e richiederebbe un giorno di lavoro solo per fornire un esempio completamente funzionante...consulta la Guida in linea per conoscere tutte le funzionalità di TStringList e TStringGrid.Rows/Cols e poi valuta come combinarle per ottenere il formato di esportazione che desideri.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    grazie ma la mia domanda è opposta.
    non devo caricare DA griglia, ma devo caricare IN una griglia

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Si trattava solo di un esempio. Se vuoi importare, dovresti cercare di ottenere il processo inverso.

    Le classi, i metodi e le proprietà che puoi utilizzare nel processo di importazione te le ho già indicate...ora sta a te vedere come utilizzarli.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    il fatto è che è una matrice!

  6. #6
    ciao alka, ho trovoato il modo per importarmi un file di testo tabulato in una Tstrring grid.

    mi serve solo una chicca rapidissima:
    la tabella visualizza il contenuto del file SOLO dopo il click su di essa.
    vorrei invece che il contenuto fosse mostrato ISTANTANEAMENTE non appena il pannello che contiene la tabella viene visualizzato.

    On Enter, non funziona...

    grrazie

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Prova a richiamare il metodo Invalidate della StringGrid...magari è solo un problema di rinfresco della visualizzazione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    niente non funziona.
    tieni conto che io ho uato l'evento PannelloENTER...

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    A questo punto, dimmi come hai caricato i dati nella griglia.

    Usando le proprietà della StringGrid -teoricamente- dovrebbe provvedere essa stessa ad autoaggiornarsi per visualizzare il nuovo contenuto delle celle...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    così:

    codice:
    procedure Pannello Enter(Tsender:object)
    var
    Data: TextFile;
    r: integer;
    c: integer;
    f1: string[5];
    f2: integer;
    begin
    AssignFile(Data, 'strGrid.txt');
    Reset(Data);
    r := 0;
    with StringGrid1 do try
     while not EOF(Data) do begin
       inc(r); RowCount := r+1;
       c := 0;
       Cells[0,r] := IntToStr(r);
       while not EOLn(Data) do begin
         if c = 0 then Read(Data, f1)
         else Read(Data, f2);
         inc(c);
         if c+1 > ColCount then ColCount := c+1;
         if c = 1 then Cells[c,r] := f1
         else Cells[c,r] := IntToStr(f2);
       end;
       ReadLn(Data);
     end;
    finally
     CloseFile(Data);
    end;
    la cosa che accade è che se clicco su QUALSIASI componente oltre che alla tabella il contenuto viene visualizzato!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.