Поскольку P запомнил адрес памяти Ob1, то к этой области можно обращаться. Я немного переделал (чтобы работало):
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
P: Ob1;
begin
P := Ob1(ListBox1.Items.Objects[1]);
Listbox1.Items.Delete(1);
ShowMessage(IntToStr(P.Param1)); // старое значение
P.Param1:= -100;
ShowMessage(IntToStr(P.Param1)); // новое значение
P.Free;
end;
Надо ещё помнить, что локальные переменные уничтожаются при выходе из процедуры. (var P:Ob1 можно сделать глобальной или полем формы).