Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Вниз

Помогите с EnumChildWindows ...   Найти похожие ветки 

 
cosinus ©   (2007-06-22 16:01) [0]

На чужой форме есть некоторая панель на которой находятся 3 CheckBox-а, которые в свою очередь должны быть включены.
Делаю так...
function TForm1.enumSetCheck(hWindow: HWND): Bool;
begin
   SendMessage(hWindow, BM_SETCHECK, Integer(true), 0);
   result:=true;
end;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
var
 wnd0,wnd1,wnd2,wnd3,wnd4:HWND;
begin
 if Msg.HotKey = id1 then
 begin
 wnd1:=findwindow("TfrmStructObject","Caption text");//main
 wnd2:=findwindowex(wnd1,0,"TPageControl",nil);//Page
 wnd3:=findwindowex(wnd2,0,"TTabSheet",nil); // Tab
 wnd4:=findwindowex(wnd3,0,"TPanel",nil);//Panel
 EnumChildWindows(wnd4,@TForm1.enumSetCheck,LongInt(Self));
 end;
end;

Не фурычит. Не подскажите, где не так?
Может не в EnumChildWindows дело, а в SendMessage?


 
Инс   (2007-06-22 16:37) [1]

Очень странный код. Компилятор его пропускает?

//1. Не метод класса TForm1
//2. Забыли параметр Param
//3. Забыли stdcall
function enumSetCheck(hWindow: HWND; Param: Longint): Bool; stdcall
begin
  SendMessage(hWindow, BM_SETCHECK, Integer(true), 0);
  result:=true;
end;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
var
wnd0,wnd1,wnd2,wnd3,wnd4:HWND;
begin
if Msg.HotKey = id1 then
begin
wnd1:=findwindow("TfrmStructObject","Caption text");//main
wnd2:=findwindowex(wnd1,0,"TPageControl",nil);//Page
wnd3:=findwindowex(wnd2,0,"TTabSheet",nil); // Tab
wnd4:=findwindowex(wnd3,0,"TPanel",nil);//Panel
EnumChildWindows(wnd4,@enumSetCheck,0);
end;
end;


Хотя, допускаю, что вы сделали так намерянно, но так как вы хотите хитро подсунуть, лучше не делайте.


 
cosinus ©   (2007-06-25 16:48) [2]

Спасибо.
Я столкнулся с еще одной проблеммой - на форме несколько панелей, как мне понять, что это нужная, если известно, что у необходимой панели есть 3 потомка - CheckBox-а(это в данном случае) да и вообще как осуществить проверку в общем случае, если известно, что потомком необходимого компонента является , например, 2 компонента TComponent?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.166 c
2-1182862205
Krants
2007-06-26 16:50
2007.07.22
SQL, удалить индексированое поле


5-1157439365
vodvorezlaya
2006-09-05 10:56
2007.07.22
Помогите создать компонент.


6-1166618062
OLIMJON
2006-12-20 15:34
2007.07.22
Обмен голосовой информацией между двумя ПК в локальной сети.


3-1177065675
_andrews_
2007-04-20 14:41
2007.07.22
BLOB to string


15-1182376985
IMHO
2007-06-21 02:03
2007.07.22
Слово о Вебмани (WebMoney)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский