
08.02.2012, 02:02
|
 |
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Попробуй такой код:
Код:
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 в.д.
|