Господа эксперты, Скажите пожалуйста в чем заключаются функции события onidle. Дело в том что мне не впоне понятна переменная Done:boolean. Скажите пожалуйста почему не работает следующая процедура(см.приложение). Спасибо вам!
Приветствую Вас, Oscar ! ===== Pro bono publico, no bloody panico! ===== Ух ты. Прямо на форме событие? Я еще понимаю на TApplication, но на форме? Вообще OnIdle срабатывает, как говориться, при an application becomes idle, т.е. когда приложению делать нечего :) А Done... а кто же его знает, что имелось в виду, может оно вообще "reserved" (гы-гы-гы) Ответ отправлен: 15.10.2002, 17:53 Отправитель: Idle Sign Отвечает Артём Шегеда
Добрый день, Oscar !
А не забыл ли дорогой товарисч назначить этот обработчик переменной Application? Рекомендую сделать так, как показано в приложении - и всё будет OK!
Приложение: Ответ отправлен: 14.10.2002, 15:06 Отправитель: Артём Шегеда Отвечает Jadd
Доброе время суток, Oscar ! Событие OnIdle возникает тогда, когда приложение простаивает. Далее. Done всегда по умолчанию в true, иначе расходуется время процессора напрасно. А время меняется только на событие OnTimer. Еще проблема с присваиванием Done:=false - правильная запись (у тебя Done:false); Ответ отправлен: 15.10.2002, 02:53 Отправитель: Jadd
Вопрос № 221
Доброе всем время суток!!!
У меня есть несколько вопросов , связанные с хуками: 1)Как вообще ставить глобальные хуки(желательно с примером или ссылкой)? 2)Как поставить глобальный хук на кнопки F5-F8? 3)И как из dll сказать или передать сообщение о том , что действие произошло? Заранее спасибо!!!!
Добрый день, MystiX! 1) тут должна лежать статья (http://www.sources.ru/delphi/dll/hooks_aspects.shtml), которая для тебя все разъяснит 2) регистрим шорткаты средствами WinAPI (см. приложение) в данном случае LParamLo - состояние клавиш Shift/Alt/Ctrl/Win, а LParamHi=VK_F5 - собственно нужная нам кнопочка. (см. описание RegisterHotKey в WinAPI) 3) см. ссылку к вопросу 1, там вроде было описано, если мне пямять не изменяет
Приложение: Ответ отправлен: 15.10.2002, 17:52 Отправитель: Idle Sign Отвечает Jadd
Доброе время суток, MystiX! есть отличный сайт www.rsdn.ru там и про хуки и про dll Ответ отправлен: 15.10.2002, 02:54 Отправитель: Jadd
Вопрос № 222
Добрый час! Спасибо за ответы на вопрос про WinAPI в Delphi. Начал разбираться, и вдруг... Чего-то совсем не могу понять: WinAPI, что ли, придумывалась для NT? Ну, CreateFile работает, ну, DeviceIoControl работает, но... почему Delphi ругается "Undeclared identifier" на DISK_GEOMETRY, на IOCTL_DISK_GET_DRIVE_LAYOUT и т.п.? Смотрю инфу в win32.hlp: и на все эти типы и константы, с которыми работает DeviceIoControl, написано: Windows NT Yes, Win95 No. Т.е. как это? Вообще, что ли, получается в Win9x нельзя использовать DeviceIoControl? Т.е. её-то использовать можно, но ни одна операция не может быть выполнена? Прошу пояснить. Ведь даже простое описание типа HANDLE не распознаётся! А мне ну очень нужно узнать структуру диска в Delphi!Enclosure=none
Нет, WinAPI разрабатывается с платформы Win32 (а может быть и раньше). С каждой новой версией Windows добавляются новые типы данных, новые константы и новые функции. Поэтому многие функции, расчитанные на новые возможности, не работают в старых версиях, а некоторые функции, устаревшие и не вписывающиеся в концепцию построения системы, из системных библиотек выбрасываются. Что касается функции DeviceIoControl, то подробную информацию можно найти по этим адресам: Calling DeviceIoControl on Windows 95/98/Me Calling
DeviceIoControl DeviceIoControl Ответ отправлен: 15.10.2002, 11:20 Отправитель: Артём Шегеда Отвечает Idle Sign
Доброе время суток, undying! ===== Pro bono publico, no bloody panico! ===== Ты в uses прописал все что нужно (см. мой ответ на твой предыдущий вопрос)? Переменные определил правильно? Не должен ругаться... Раз пишут, что на чикаго нельзя использовать, значит - нельзя. Под 98 и ME может работать, ну а под w2000 и XP обязано. Если срочно нужно узнать, тогда идешь к Torry, или в Королевство Дельфи, или к Мастерам Дельфи, или еще куда-нибудь в том же духе и ищешь компонент для работы с диском. Ответ отправлен: 15.10.2002, 17:52 Отправитель: Idle Sign
Вопрос № 223
Всем привет!!! Уменя такой вопрос. Подскажите как мне заставить программу отображать mesagebox при совпадении определённого условия(даты). Я только начинаю учить DELPHI и прошу простить меня за столь ламерский вопрос. Ответ пришлите на мыло, если вас не затруднит.
Приветствую Вас, Евгений! ===== Pro bono publico, no bloody panico! ===== {код, выполняющийся при совпадении текущей даты с заданной может быть таким} Application.MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer; {или, к примеру, таким} ShowMessage(const Msg: WideString); Способов вагон и еще маленькая тележка с WinAPI (MessageBox(A)). Ответ отправлен: 15.10.2002, 17:52 Отправитель: Idle Sign Отвечает Jadd
Здравствуйте, Евгений! месадж бокс можно вывести двумя способами: 1) с помощью WinAPI MessageBox(Handle, "Message", "Head", MB_ICON + MB_); Поясню: вместо Handle - хэндл окна или приложения. вместо "Message" - твое сообщение вместо "Head" - заголовок сообщения вместо - тип иконки в месадж боксе вместо - используемые кнопки (см. хэлп) 2) с помошью классов Дельфи: Application.MessageBox() описание похожее, так что смотри хэлп 3) с помощью функции ShowMessage() вместо - твое сообщение Ответ отправлен: 15.10.2002, 03:01 Отправитель: Jadd Отвечает Артём Шегеда
Приветствую Вас, Евгений!
Кроме тех ответов, что Вы получите, я рекомендовал бы проверять дату другим образом, поскольку формат даты на разных компьютерах может быть разным (к примеру, не две цифры года, а четыре)
Приложение: Ответ отправлен: 15.10.2002, 11:35 Отправитель: Артём Шегеда
Вопрос № 224
Всем здравия... Как можно проверить валидность E-mail адреса (наличие такого юзеря, сервера и вообще возможность отправить на него письмо) средствами Delphi, очень желательно найти максимально быстрый способ. Ещё одно пожелание - можно ли это сделать в консольном приложении, т.е без задействования средств VCL. Ещё вопрос, как использовать WinApi в Delphi? Ни разу не пробовал... если можно ответ с какой-то теорией... Если у кого есть ссылки, статьи и. др. с радостью приму! Заранее спасибо Всем! P.S. Очень надеюсь на ответ Артёма Шегеды :-)
Приветствую Вас, ALastorZ! ===== Pro bono publico, no bloody panico! ===== Я, конечно, не Артем, однако _теорию_ свою на сей счет имею: наличие сервера можно определить пинганув его, однако кто тебе это даст сделать? Наличие почтового ящика определить можно лишь обратившись к нему (читай: заслав пару строк ;)). Ну, а отправить письмо возможность есть всегда, только вот результат... В консольном? Отчего нельзя? Можно! Пиши свою библиотеку, грызи гранит науки, долго ли, коротко ли, но ты получишь то, что хотел. Набор функций WinAPI используется таким же образом как и любой другой. В дистрибутиве Delphi есть кой-какая справочная информация (Win32 Programmer's Reference) по данному интерфейсу, более подробно - MSDN (http://www.msdn.com). Хочешь родного языка, тогда загляни на http://www.winnt.rsm.org.ru/winapi/winapi.htm. Ответ отправлен: 15.10.2002, 19:50 Отправитель: Idle Sign Отвечает Jadd
Добрый день, ALastorZ! А что, Артем Шегеда - супер-гуру? Че тогда ему самому не напишешь? WinAPI в Дельфях используется так же, как и в Си, и других языках. В раздел uses ставишь имя модуля, в котором определена функция, а дальше - дело техники. Главный модуль - Windows, тут определены типы и прочее. Насчет Email ничего не скажу, но, думаю, покапавшись в MSDN или в описании самого MAPI можно надыбать что-нибудь. Например, при первом взгляде функция MAPIResolveName наводит на определенные мысли. Ищи, и пытайся сам разобраться - это будет ценнее, чем чья-то помощь. Ответ отправлен: 15.10.2002, 18:55 Отправитель: Jadd Отвечает Pablo
Доброе время суток, ALastorZ! Можно использовать конслольное приложение с задействованием средств VCL, а можно а обычное оконное приложение и без использования VCL написать, так что выбираешь?! WinAPI в Дельфях просто использовать, почти также как и обычные VCLные методы, но без указания класса. Email же ты можешь проверить только на синтаксис, то есть в нем должна быть зона, домен и имя в домене, типа name_in_domain@domain.zone Ответ отправлен: 17.10.2002, 16:53 Отправитель: Pablo
Вопрос № 225
Здравствуйте, эксперты! Проблема в следующем, при нажатии кнопки восстановить на форме, пропадает вертикальная полоса прокрутки компонента DBGrid. При изменении мышкой размера окна, она появляется. Что за глюк и как с ним бороться?
Приветствую Вас, Владимир! ===== Pro bono publico, no bloody panico! ===== Попробуй перерисовать окно (Repaint) или обновить (Refresh) на OnResize, авось получиться чего (хотя эти методы по идее должны вызываться автоматически).
Ответ отправлен: 15.10.2002, 19:50 Отправитель: Idle Sign Отвечает Jadd
Здравствуйте, Владимир! Я не получил такого эффекта, но, вероятно, грид по каким-то причинам не может отрисоваться корректно. Тогда делай так: Пиши свой обработчик Application.OnRestore где будешь просто делать перерисовку формы и все. Ответ отправлен: 15.10.2002, 19:14 Отправитель: Jadd Отвечает Pablo
Доброе время суток, Владимир! Ты попробуй перерисовывать TDBGrid при обработке события нажатия твоей кнопки. Попробуй типа такой сточки использовать: DBGrid->Repaint(); Ответ отправлен: 17.10.2002, 16:55 Отправитель: Pablo
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.