Тема: AHK: выпадающий список в ListView
Необходимо сделать одно из полей ListView выпадающим списком. Другими словами встроить в существующий список DropDownList.
Например как в Exel:![]()
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Необходимо сделать одно из полей ListView выпадающим списком. Другими словами встроить в существующий список DropDownList.
Например как в Exel:![]()
"Сделать" одно из полей ListView выпадающим списком невозможно, ListView не поддерживает такой функции. Просто сделайте своё GUI со списком поверх него.
teadrinker
Вы не могли бы показать, как извлечь положение и размеры нужной ячейки в ListView?
Необходимо сделать одно из полей ListView выпадающим списком. Другими словами встроить в существующий список DropDownList.
То есть ListView принадлежит окну сторонней программы?
teadrinker
Вы не могли бы показать, как извлечь положение и размеры нужной ячейки в ListView?
Своего приложения или чужого?
Своего.
Gui, Add, ListView, hwndhListView, ColumnTitle1|ColumnTitle2
LV_Add("", "Item1", "Item2"), LV_Add("", "Item1", "Item2")
Gui, Show, y200
oCoords := GetListViewItemCoords(2, 1, hListView, 1) ; второй ряд первая колонка
MsgBox, % "Абсолютные координаты:`n`nleft = " . oCoords.left . "`ntop = " . oCoords.top
. "`nright = " . oCoords.right . "`nbottom = " . oCoords.bottom
oCoords := GetListViewItemCoords(2, 1, hListView)
MsgBox, % "Координаты относительно верхнего левого угла контрола ListView:`n"
. "`nleft = " . oCoords.left . "`ntop = " . oCoords.top
. "`nright = " . oCoords.right . "`nbottom = " . oCoords.bottom
ExitApp
GetListViewItemCoords(row, col, hListView, abs = "") ; если abs = true, координаты относительно экрана,
{ ; если false — относительно контрола ListView
VarSetCapacity(Rect, 16, 0)
NumPut(col = 1 ? 1 : col - 1, Rect, 4, "UInt")
SendMessage, LVM_GETSUBITEMRECT := 0x1038, row - 1, &Rect,, ahk_id %hListView%
l := NumGet(Rect, "UInt"), t := NumGet(Rect, 4, "UInt")
r := NumGet(Rect, 8, "UInt"), b := NumGet(Rect, 12, "UInt")
(col = 1) ? (lprev := l, l := 0, r := lprev)
if abs
{
WinGetPos, X, Y,,, ahk_id %hListView%
l += X, r += X, t += Y, b += Y
}
Return {left: l, top: t, right: r, bottom: b}
}teadrinker
Спасибо за ответ!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться