procedure TForm1.ODSelectionChange(Sender: TObject);
var
wnd, lv : HWND;
I : Integer;
ClassName : array[0..MAX_PATH + 1] of Char;
function IndexOf : Integer;
var
Info : TLVFindInfo;
begin
with Info do
begin
flags := LVFI_STRING or LVFI_PARTIAL;
psz := PChar(ChangeFileExt(ExtractFileName(OD.FileName), ''));
end;
Result := ListView_FindItem(lv, -1, Info);
end;
begin
if (OD.FileName <> '') and (ExtractFileName(OD.FileName) <> '') then
begin
wnd := GetWindow(GetParent(OD.Handle), GW_CHILD);
while wnd > 0 do
begin
GetClassName(wnd, ClassName, MAX_PATH);
if ClassName = 'SHELLDLL_DefView' then
Break;
wnd := GetWindow(wnd, GW_HWNDNEXT);
end;
lv := GetWindow(wnd, GW_CHILD);
I := IndexOf;
if (lv <> 0) and (I >= 0) then
begin
ListView_EnsureVisible(lv, I, True);
ListView_SetItemState(lv, I, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(lv, I, LVIS_FOCUSED, LVIS_FOCUSED);
Windows.SetFocus(lv);
end;
end;
end;
где OD - TOpenDialog.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.