ho risolto 
creo le textbox assegnando alla prop. Name il nome del campo dde
codice:
for i:=1 to 10 do
begin
TextBox[i]:=TEdit.Create(Self);
with TextBox[i] do
begin
Parent:=Self;
Name:=Campi[i];
Height:=21;
Left:=48;
Width:=161;
Top:=32 + 24*i;
Visible:=True;
Enabled:=True;
end;
end;
creo gli oggeti TDdeClientItem
codice:
for i:=1 to 10 do
begin
DdeField[i]:=TDdeClientItem.Create(Self);
DdeField[i].DdeConv:=DdeClientConv1;
DdeField[i].DdeItem:=Campi[i];
TextBox[i].Text:=DdeField[i].Text;
DdeField[i].OnChange:=myTextBoxOnChange;
end;
a questo punto nella funzione assegnata all'evento OnChange recupero il nome del campo legato al Sender (.DdeItem) e con questo mi trovo la textbox corrispondente (tramite la proprietà .Name)
codice:
procedure TForm1.myTextBoxOnChange(Sender: TObject);
var
tmp_dde: TDdeClientItem;
tmp_edt: TEdit;
begin
if Sender is TDdeClientItem then
begin
tmp_dde := Sender as TDdeClientItem;
tmp_edt:=(FindComponent((Sender as TDdeClientItem).DdeItem) as TEdit);
tmp_edt.Text:=tmp_dde.Text;
end;
end;
secondo voi, è metodo troppo macchinoso o può andare bene? :master: