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

Вниз

Имя ЛЮБОГО обьекта под курсором Application Events   Найти похожие ветки 

 
Serghei   (2003-01-23 17:01) [0]

Уважаемые мастера Please HELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ME

Суть проблемы:
Требуется вести ЛОГ всех действий в МОЕЙ программе (все – Кнопки, пункты в MainMenu, PopupMenu, TabSheet, на что кликал)
Типа:
ИмяОбьекта-Время
MainMenuFileOpen – 10:00
SaveToolButton – 10:10
GeneralTabSheet – 11:00

Делаю так: (только не в логфаил а в статус бар)


procedure TMainForm.AppEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin

WinControlUnderMouseCursor:=FindVCLWindow(Msg.pt);
if WinControlUnderMouseCursor <> nil then
begin
if WinControlUnderMouseCursor is TPageControl then
StatusBar.Panels[0].Text:=IntToStr(Msg.pt.X-Left)+", "+IntToStr(Msg.pt.Y-Top)+ ", "
+ TPageControl(WinControlUnderMouseCursor).ActivePage.Name
+ " ("+IntToStr(WinControlUnderMouseCursor.ComponentCount)+" components)"
else
if WinControlUnderMouseCursor is TActionMainMenuBar then
StatusBar.Panels[0].Text:=IntToStr(Msg.pt.X-Left)+", "+IntToStr(Msg.pt.Y-Top)+ ", "
+ TActionMainMenuBar(WinControlUnderMouseCursor).ActionClient.DisplayName
+ " ("+IntToStr(WinControlUnderMouseCursor.ComponentCount)+" components)"
else
StatusBar.Panels[0].Text:=IntToStr(Msg.pt.X-Left)+", "+IntToStr(Msg.pt.Y-Top)+ ", "
+ WinControlUnderMouseCursor.Name
+ " ("+IntToStr(WinControlUnderMouseCursor.ComponentCount)+" components)";

end.


Проблема состоит в том что когда открыто окошечко меню ни координат, ни имя обьекта неизвесны. А еще круче если стоиш курсором на каком нибудь слове и ты знаешь какому обьекту пренадлежит этот ???.Caption или ???.Text


 
Serghei   (2003-01-23 17:42) [1]

МАСТЕРА АУ!!!!!
Ну Help me Pleeeeeease!!!!!!


 
gsu   (2003-01-23 17:44) [2]

Msg.handle, msg.lparam
по ним анализируй объекты


 
Serghei   (2003-01-23 18:17) [3]

Добавил


StatusBar.Panels[1].Text:=IntToStr(Msg.lparam);


В меню так и не пашет :(
4е делать?????

gsu
если Мона по конкретней как анализировать
заранее сенкс


 
gsu   (2003-01-23 18:27) [4]

case msg.message of
WM_Command: begin
if Lo(Msg.lParam) <> 0
then Exit;
Handled:=True;
if (Msg.hwnd = ТВОЕМЕНЮ.handle)
and (Msg.wParam = ТВОЕПОДМЕНЮ.command)
then
...


 
Serghei   (2003-01-24 12:22) [5]

Щас попробую
сенкс за активность gsu


 
Serghei   (2003-01-24 15:04) [6]

Либо я не правильно понимаю как пользоваться твоей помощью gsu,
либо не правильно поставил вопрос и меня не поняли. Попробую иначе:

Я гуляю мышкой по приложению, в стстус баре ПОСТОЯННО должно высвечиваться има обьекта над чьим Caption или Text или хотабы над которым находится курсор мышки
Типа (Button1, Edit1, Label1, MainMenuItem1, PopupMenuItem1, ToolButton1, TabSeet1, GroupBox1, RadioGroup1, любой обьект который виден…)

Вот мы имеем
FindVCLWindow(TPoint) = Обьект которому принадлежат координаты TPoint
Ставим в ApplicationEvents -> OnMessage и видим

FindVCLWindow(TPoint) дает тока ToolBar1 но не ToolButton1 который находится на этом ToolBar1; PageControl1 но не TabSeet1
а когда активорован (открыто окно) MainMenu или PopupMenu вапще ни ф_га :(

Что-то в этом роде только чтобы работало со всеми видимыми обьектами. Ведь как-то ОС известно кому какие Hint показывать, и синий курсор в меню под мышкой???

Я еще думаю может не правильно что ставлю в ApplicationEvents -> OnMessage типа он не ловит сообщения когда меню отктыто.

ПРОШУ HELP!!!!!!! а то сам никак не допру


 
Serghei   (2003-01-24 17:11) [7]

4е никто не Help-ит иль никто не знает
вопрос вроде-бы не похож на сложный

МАСТЕРА АУУУУУУУ!!!!!


 
Serghei   (2003-01-27 10:29) [8]

Мастера прошу помощи, плиз ГОРЮ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


 
Serghei   (2003-01-27 12:10) [9]

Блин ну куда все мастера подевались
ПРОШУ ПОМОЩИ ведь я не забываю волшебное слово, спасите меня ПОЖАЛУЙСТА !!!


 
Serghei   (2003-01-27 16:10) [10]

Да вы тока посмотрите на этих БЕССОВЕСТНЫХ МАСТЕРОВ наплевать им на чужое горе, мне теперь вешаться иль как???


 
Evgeniy Startsev   (2003-01-27 20:20) [11]

var
p:tpoint;
q:pchar

попробуй это вызывать по таймеру, может поможет

getcursorpos(p);
getmem(q,255);
GetClassName(WindowFromPoint(p),q,255);


 
Song   (2003-01-27 21:03) [12]

Ты там такого нагромодил... неудивительно, что никому даже смотреть не хочется..


 
Serghei   (2003-01-28 09:34) [13]

Evgeniy Startsev - ща попробую

Song возмона ты прав поробую иначе
Нужно постоянно знать имя обьекта над Caption, Text, ... которого висит указатель мыши.

т.е. FileOpenMenuItem.Caption = "Open";
передвинул указатель над пунктом ( Open) меню, пусть в статус баре появится : FileOpenMenuItem

PS. надеюсь ща не так тошно будет.
А я уже хотел вешаться :(


 
Serghei   (2003-01-28 10:05) [14]

Вставил в

procedure TMainForm.AppEvents1Message(var Msg: tagMSG; var Handled: Boolean);

по таймеру не годится (вобще-то сгодится после правого клика, например, по любому заголовку...)

Evgeniy Startsev направление верное но не то
1. Выдает имя класса а не обьекта;
2. кнопки на TToolBar не распознаются ( не чувствует их)
3. при открытом меню так и не реагирует

PS. опять начал думать о веревке :(


 
Serghei   (2003-01-28 14:59) [15]

Судя по всему МАСТЕРА должны тоже подумато о веревке :(


 
Serghei   (2003-01-29 10:25) [16]

Все хватит вешаюсь, ВЕШАЕМСЯ :((



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

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

Наверх





Память: 0.48 MB
Время: 0.014 c
1-15672
Fill
2003-01-29 20:36
2003.02.06
Пустые ячейки в DBGrid


4-16012
Ilg
2002-12-22 16:15
2003.02.06
Изменение содержимого TListBox...


14-15887
Думкин
2003-01-18 10:36
2003.02.06
Книги


4-15983
drin
2002-12-22 00:57
2003.02.06
Хуки


1-15676
LazorenkoX
2003-01-27 12:10
2003.02.06
HTMLHELP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский