const
Max = 30;
{* @brief GetItemByName
* Localiza texto no treeview
*}
function GetItemByName(Wnd : hWnd; hItem : HTREEITEM; szItemName : LPCTSTR) : HTREEITEM ;
var
szBuffer: array [0..Max+1] of char;
item : TTVItem;
hItemFound, hItemChild : HTREEITEM;
begin
// Se hItem for nil, inicia a busca a partir do primeiro item
if (hItem = nil ) then
hItem := HTREEITEM(SendMessage(Wnd, TVM_GETNEXTITEM, TVGN_ROOT, 0));
while (hItem <> nil ) do
begin
item.hItem := hItem;
item.mask := TVIF_TEXT OR TVIF_CHILDREN;
item.pszText := szBuffer;
item.cchTextMax := MAXTEXTLEN;
SendMessage(Wnd, TVM_GETITEM, 0, longint(@item));
if (lstrcmp(szBuffer, szItemName) = 0) then
begin
Result := hItem;
Exit;
end ;
// Verifica os nós filhos
if (item.cChildren > 0) then
begin
// Recursivo
hItemChild := HTREEITEM(SendMessage(Wnd, TVM_GETNEXTITEM, TVGN_CHILD, longint(hItem)));
hItemFound := GetItemByName(Wnd, hItemChild, szItemName);
if (hItemFound <> nil ) then
begin
Result := hItemFound;
Exit;
end ;
end ;
hItem := HTREEITEM(SendMessage(Wnd, TVM_GETNEXTITEM, TVGN_NEXT, LPARAM(hItem)));
end ;
// Não encontrado
Result := nil ;
end ;
Nenhum comentário:
Postar um comentário