Обсуждение программирования на Delphi в конференции ru.delphi
диалог и WinAPI
From: Alexander Grischenko <gralex [@] ml.lv>
Всем привет!
Возникла необходимость создать в подзадачке независимое диалоговое окошко
(иммитация Remote Control). VCL-ное окошко, как понимаю, в подзадаче создавать и
использовать нельзя (а может все же можно? :) Поэтому пришлось сделать его с
помощью WinAPI и закрутить ручками в Thread отдельную очередь сообщений. Все
пашет так, как надо :)
Теперь вопрос: для создания окна использую CreateWindow и оконную функцию. Для
красоты :) у меня создается оконо без заголовка и рамки, окну назначаю свой
регион (RoundRect) и самостоятельно прорисовываю ему градиентный фон и бордюр. А
Заодно обрабатываю событие WM_NCHITTEST, в котором возвращаю HTCLIENT, чтобы
окно таскалось мышой за всю свободную область. Hо на самом окне много различных
контолов, и вручную создавать их неудобно. Решил в редакторе ресурсов нарисовать
окошко. Затеи создаю его с помощью CreateDialog и диалоговой функции. Все
рботает, кроме одного: диалоговая функция, в отличие от оконной, возвращает не
LONG, а BOOL, поэтому в обработчике WM_NCHITTEST не получается вернуть
HTCAPTION. Посоветуйте, что делать? Как создать окно с помошью Template из
ресурса, но использовать при этом не диалоговую, а оконную функцию?
Hадеюсь, что обьяснил понятно :)
--
Alexander Grischenko
<gralex(at)ml.lv>
* Origin: Demos online service (2:5020/400)
Re: Глюк Delphi 2005 связаный с путями
From: Tolik Gusin <stalkernews [@] giac.dp.ua>
Привет Павел,
ПГ> К чему я это? Кто-то у меня здесь спpашивал пpо то что мол два пакета один из
ПГ> дpугого вызываеться и в 2005 не pаботает. Решение: Пpосто добавить в системный
ПГ> патч pучками нужный каталог и все будет ноpмально. Hо это гемоpойно конечно
ПГ> каждый каталог добавлять, но хоть какое-то pешение.
Про это я знаю, и даже косвенно про это написал в оригинальном письме.
Hо этот вариант мне не годиться.
Главное тут надо выяснить: То что D9 не хочет искать bpl (в отличии от
D3-D7) по путям Library это баг D9 или это так и должно быть ?
Если баг, то надо отослать об этом сообщение в Борланд. пусть правят.
ПГ> Этот кто-то откликнись :))) А то емаил твой я не запомнил :)))
Это я подымал этот вопрос.
--
С Уважением, Stalker
Origin: The History is Dead
Отправлено через сервер Форумы [@] mail.ru - talk.mail.ru
* Origin: ГИАЦ (2:5020/400)
Ado + AsynExecute
MA> PS Можешь еще попробовать после ADOQuery1.Open вызвать
MA> ADOQuery1.RecordCount, так хоть убедишься, что датасет действительно
MA> не пустой.
В том то и дело что не пустой. ADOQuery1.FieldByName('SomeField').AsString
возвращает правильное значение...
MA> PPS Иногда еще помогает такой трюк, как отцепление грида от источника
MA> и подцепление по-новой, т.е. DBGrid1.DataSource :=
MA> nil; DBGrid1.DataSource := DataSource1;
В общем то у меня получилось, но как то немного извращенно...
DBGrid.DisableContorls;
ADOQuery1.Open;
while i < 3 do
begin
sleep(100);
Application.ProcessMessages;
i := i + 1;
end;
DBGrid.EnableControls;
С DataSource надо попробовать...
C уважением, Dmitriy Gatsura.
* Origin: Без Windows - горе, а с ней вдвое (2:5061/6.51)
Ado + AsynExecute
>> (OnFetchComplete происходит...)
AB> Посмотри профайлером что делается на SQL-сервере. Мне так кажется, что
AB> дайтасет пустой - сервер просто подтверждает, что он получил запрос и
AB> будет его выполнять асинхронно и потом перезапрашивается набор.
Да нет все нормально... Данные в датасете есть...
AB> Хммм... Кажется у Хорлингвоза&Co былы расписано как это должно
AB> работать в асинхронике...
Это что еще за фрукт?
AB> Хммм... Или уже ADO.Net у меня наслаивается...
C уважением, Dmitriy Gatsura.
* Origin: Здрасте пожалста! (2:5061/6.51)
Re: CD-ROM - OnRemove / OnInsert
From: "aleXander Olegovich Fedorov" <xof [@] email.su>
Hi,
> >Конечно выключено. Hеужели, в системе XP автозапуск так жестко
> >связан с вообще распознаванием действий дисковода? Это примитивно.
> >В стиле MS... Сейчас проверю.
>
> Вроде автозапуск - это только вершина айсберга... Ты можешь выключить
> его "программно" (в соотв. диалоге сказать "No actions"), а
> автораспознавание диска - это как раз то, что тебе надо для появления
> сообщения. Я не прав?
У меня автозапуск был отключен вручную:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom]
"AutoRun"=dword:00000000
После включения все заработало. HО...
Hесмотря на то, что в свойствах дисковода я для всего выбрал "No Action",
при вставке диска запускается оболочка или html файл указанные в autorun.inf
А если нету autorun.inf - просто открывается папка в окне эксплорера.
Это сильно раздражает.
Хотелось бы отключать эти эффекты хотя-бы на время работы в программе.
Ужасно, что в XP автозапуск так тесно привязан к собылиям OnInsert/OnRemove
Hадеюсь, что все-таки этим хоть как-то можно управлять...
Помогите!
xof
* Origin: Demos online service (2:5020/400)
Re: CD-ROM - OnRemove / OnInsert
From: "Alexander B. Bokovikov" <bokovikov [@] apress.ru>
On Tue, 9 Aug 2005 00:07:36 +0000 (UTC), "aleXander Olegovich Fedorov"
<xof [@] email.su> wrote:
>Ужасно, что в XP автозапуск так тесно привязан к собылиям OnInsert/OnRemove
>Hадеюсь, что все-таки этим хоть как-то можно управлять...
А почему в ХР? Это и раньше так же было.
По поводу убирания диалогов/автозапуска - рой в другие эхи.
Потом мылом можешь поделиться результатами :)
Александр Боковиков
E-mail: bokovikov(a)mail.ru (дом.) abokovikov(a)apress.ru (раб.)
www.apress.ru/pages/bokovikov/delphi
* Origin: Demos online service (2:5020/400)
D7. Service Control Management. Запуск сервиса.
Привет, всем.
Вот какой тут прикол обнаружился. Есть сервис, типичный TServiceApplication,
в котором ничего не делается особенно сложного. В принципе весь сервис
состоит из TidTCPServer и обвязки вокруг него. Проблема - при запуске этого
сервиса из Services, если при этом в память загружена Delphi, сама Delphi
начинает жрать 100% CPU, причем не отвечает на действия пользователя. SCM
показывает в бегущем progress bar-е что сервис дескать стартует, а на самом
деле ничего не происходит, task manager показывает в этот момент что этого
процесса в памяти нет.
Исход сей ситуации бывает разный. Иногда сервис так и не стартует, и SCM
пишет в Event Log что сервис не отвечает на запросы, поэтому был прибит.
Иногда после примерно полминуты тормозов сервис таки стартует. Сервис
отчитывается о каждом своем деянии (запуск программы, старт сервиса,
инициализация внутренних структур и т.п.) в log-файл. По log-файлу видно что
собственно код сервиса выполнился почти мгновенно, в пределах 1 сек.
Если Delphi в память не загружена, то ничего такого не происходит. Сервис
грузится нормально и быстро. Кто сталкивался, что можете сказать?
* Origin: South Ural Network (2:5010/70)
Re: D7. Service Control Management. Запуск сервиса. Добавочка.
Дополнение, OS - Windows XP SP2.
"Andrew V. Fionik" <fionika [@] papillon.ru> wrote in message
news:dd98tj$2gvj$1 [@] image.surnet.ru...
> [...] Если Delphi в память не загружена, то ничего такого не происходит.
> Сервис грузится нормально и быстро. Кто сталкивался, что можете сказать?
* Origin: South Ural Network (2:5010/70)
Re: D7. Service Control Management. Запуск сервиса.
From: "Andrey Ryazanov" <rash [@] northnet.ru>
"Andrew V. Fionik" <fionika [@] papillon.ru> wrote in message news:dd98tj$2gvj$1 [@] image.surnet.ru...
>Если Delphi в память не загружена, то ничего такого не происходит. Сервис
> грузится нормально и быстро. Кто сталкивался, что можете сказать?
Каких нибудь компонентов в сервисе нету, которые могут искать окно TAppBuilder и орать что они триальные?
* Origin: MTU-Intel ISP (2:5020/400)
Re: CD-ROM - OnRemove / OnInsert
From: "aleXander Olegovich Fedorov" <xof [@] email.su>
Hi,
> А почему в ХР? Это и раньше так же было.
> По поводу убирания диалогов/автозапуска - рой в другие эхи.
> Потом мылом можешь поделиться результатами :)
Дело в том, что это хорошо бы делать программно, чтобы когда
моя программа запускается - отключает автостарт CD, а когда
завершается - восстанавливает как было.
xof
* Origin: Demos online service (2:5020/400)