Java_SCU(Java)能解释一下你程序是什么意思嘛?
这下差不多了:
uses commctrl;function GetNode(ItemId: HTreeItem): TTreeNode;
var
  Item: TTVItem;
begin
  with Item do
  begin
    hItem := ItemId;
    mask := TVIF_PARAM;
  end;
  if TreeView_GetItem(Form1.TreeView1.Handle, Item) then Result := TTreeNode(Item.lParam)
  else Result := nil;
end;function GetLastVisible(): TTreeNode;
var
  hItem, t: HTreeItem;
  prc: TRect;
begin
  hItem:= nil;
  t:= Form1.TreeView1.TopItem.ItemId;
  while true do
  begin
    hItem:= t;
    t:= TreeView_GetNextVisible(Form1.TreeView1.Handle, t);
    if not Bool(TreeView_GetItemRect(Form1.TreeView1.Handle, t, prc, true)) then
      break;
    if prc.Top > Form1.TreeView1.ClientRect.Bottom then
      break;
  end;
  if hItem <> nil then
    Result:= GetNode(hItem)
  else
    Result:= nil;
end;procedure TForm1.Button2Click(Sender: TObject);
var
  Item: TTreeNode;
begin
  Item:= GetLastVisible();
  Label1.Caption:= Item.Text;
end;