Der Fehler ist in folgender Zeile:
ED.Text:=FieldByName(Spalte).AsString;
Das kann nicht gehen, da Du keine TTable oder TQuery verwendest und daher auch keine TFields hast, die Du mit FieldbyName direkt ansprechen kannst.
Du musst vielmehr den Umweg über das Stringgrid nehmen und das gewünschte Feld auswählen, dann kannst Du den Text als normalen String an das Edit-Feld übergeben...
Schau auch mal in den Beitrag #262 von DeddyH, dort wird das Prinzip eigentlich schon sehr gut erklärt, da wird in ein Memo geschrieben, muss man eigentlich nur auf TEdit umstellen...