Le 13/09/2013 07:48, Richard Mace a écrit :
OK, I now have this code:
with tvMain.Items.AddChildObject(tvMain.Selected,IntToStr(fUserList.Items[I].Id),Pointer(fUserList.Items[I].Id)) do

and this:
procedure TfrmMain.tvMainChange(Sender: TObject; Node: TTreeNode);
begin
  if Assigned(Node.Data) then
ShowMessage('Node ' + IntToStr(PtrInt(Node.Data)));
end;

And I am now getting an exception when my app run?

Richard

Details are missing about your implementation: Lzarus & FPC, OS, etc. I've made a little test on Win32 and Linux_X64, Lazarus 1.0.12
I added some nodes to the TTreeView like this:

var
  SData: Integer=179;

procedure TFrmMain.BtnTestTvClick(Sender: TObject);
var
  wNode: TTreeNode = nil;
  s: String;
begin
  Inc(SData);
  wNode := Ttv.Items.AddChildObject(nil, 'node new', Pointer(SData));
  s := Format('node %s data:%d', [wNode.Text, PtrInt(wNode.Data)]);
  MessageDlg('Titre', s, mtInformation, [mbOK], 0, mbOK);
end;

The I added an event to Ttv.OnChange event like that:
procedure TFrmMain.TtvChange(Sender: TObject; Node: TTreeNode);
var
  wData: Integer;
begin
  if Assigned(Node) then begin
    wData := PtrInt(Node.Data);
MessageDlg('Titre',Format('data for "%s" %d', [Node.Text, wData]), mtInformation, [mbOK], 0, mbOK);
  end;
end;

I get a new node on every BtnTestTvClick and a value starting from 180 on every OnChange event
On both platforms.

Antonio.

--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to