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