I think you would want to use a TMemo instead, or TRichEdit. Since neither of these (if memory serves me right) has a TCanvas to draw to, you need to make a temporary one to test the width and height of the text.
Call a similar routine at creation. Be sure to use a fixed size font.
// Create a temporary Canvas
TCanvas *pCanvas = new TCanvas;
// Assign your row and column count
int iColumnCount = 30;
int iRowCount = 30;
// X and Y are for adding a bit more space to the Memo.
// Adjust them as needed after viewing the results.
int X = 10;
int Y = 10;
// Assign the font from the Memo to the Canvas
pCanvas->Font->Assign(Memo1->Font);
// Get width and height of each letter
int iTextWidth = pCanvas->TextWidth("A"

;
int iTextHeight = pCanvas->TextHeight("A"

;
Memo1->Width = iTextWidth*iColumnCount + X;
Memo1->Height = iTextHeight*iRowCount + Y;
I think this will work. You might have to move the X or Y into the multiplicand. ex: (iTextWidth + X)*iColumnCount;
You could run this every time the user types something if you want to use non-fixed sized fonts (but I'm not sure that you can even use non-fixed in a Memo field).
Hope it helps,
Chris