Newsgroup: it.comp.lang.delphi
Titolo: StringGrid

Salve,
per inserire un file di testo (che contiene una tabella) in un memo scrivo:
GetTextFromFile('fileditesto.txt', s);
Memo1.text := s;      //assign the text to a Label
ma come faccio a scrivere in una StringGrid?
(oppure esiste un componente più adatto per costruire una tabella?)
Nel fileditesto.txt ho tre colonne (nome, cognome, età) e vorrei che
restassero tali anche nella grid, ovviamente!
Grazie

 Grazie
-- 
Ciao, Anto', [37, 143, AQ] 
MB C SC 220 CDI Magma Rot
"Di sempre cio' che senti e fai cio' che pensi."
    G.G. Màrquez

Ciao a tutti,
Scusatemi ma sono un principiante.
Come si fa a colorare una singola cella (o una serie predefinita) in una
stringGrid?
Grazie.

Grazie.
Buon lavoro
	Ciao
	MassimoB
 

che dovrebbero rispondere appieno ai tuoi dubbi
Grazie dell'attenzione!
Ho trovato questa procedura, ma non riesco a farla funzionare, qualche
aiutino.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  dx: Integer;
begin
  with (Sender as TStringGrid) do
  begin
    // Don't change color for first Column, first row
    if (ACol = 0) or (ARow = 0) then
      Canvas.Brush.Color := clBtnFace
    else
    begin
      case ACol of
        1: Canvas.Font.Color := clBlack;
        2: Canvas.Font.Color := clBlue;
      end;
      // Draw the Band
      if ARow mod 2 = 0 then
        Canvas.Brush.Color := $00E1FFF9
      else
        Canvas.Brush.Color := $00FFEBDF;
      Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
      Canvas.FrameRect(Rect);
    end;
  end;
end;

aiutino.
[...]
purtroppo al momento non ho tempo di controllare la procedura che usi tu.
Ti posto, dopo i saluti, del codice demo che ho scritto in passato,
funzionante al 100% che tu potrai studiare ed adeguare alle tue richieste.
Chiedo scusa al NG per la lunghezza del post, ma ho ritenuto opportuno 
postare tutto il codice per non far incorrere Fabio in errori di creazione, ed
impostazione del form, poi tra l'altro è del codice che fa una cosa utile 
e carina ;). 
	Ciao
	MassimoB
 
----------------------------------Unit del form--------------------------------
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
    FCurrentCol,
    FCurrentRow: Integer;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
Var
  OldCurrentCol, OldCurrentRow: Integer;
begin
  //Memorizza la riga e la cella che sono puntate da mouse
  OldCurrentCol := FCurrentCol;
  OldCurrentRow := FCurrentRow;
  StringGrid1.MouseToCell(X,
                               Y,
                               FCurrentCol,
                               FCurrentRow);
  //Se la riga e la cella sono valide ridisegna la stringGrid
  If ((OldCurrentCol<>FCurrentCol) Or (OldCurrentRow<>FCurrentRow))
      And ((FCurrentCol>=0) And (OldCurrentRow>=0)) Then
    StringGrid1.Invalidate;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  inherited;
  With StringGrid1 Do
    If (ARow>0) And (ACol>0) Then
    Begin
      //Cambia il colore per la riga di MouseOver
      If (ARow = FCurrentRow) And (Cells[ACol,ARow]='') Then
        Canvas.Brush.Color := clInfoBk;
      //Cambia il colore per la colonna di MouseOver
      If (ACol = FCurrentCol) And (Cells[ACol,ARow]='') Then
        Canvas.Brush.Color := clInfoBk;
      //Disegna il rettangolo Rect
      Canvas.FillRect(Rect);
      //Scrive il testo allineato in basso a sinistra con margine di 2 pxls
      Canvas.TextOut(Rect.Left+2,
                     Rect.Bottom-Canvas.TextHeight(Cells[ACol,ARow]),
                     Cells[ACol,ARow]);
    End;
end;
end.
----------------------------------------------DFM-----------------------------------------
object Form1: TForm1
  Left = 192
  Top = 114
  Width = 696
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object StringGrid1: TStringGrid
    Left = 0
    Top = 0
    Width = 688
    Height = 446
    Align = alClient
    TabOrder = 0
    OnDrawCell = StringGrid1DrawCell
    OnMouseMove = StringGrid1MouseMove
  end
end