Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с TEdit в сервисе, Непечатаются буквы в полях ввода 
V
    Опции темы
Darbort
Дата 7.5.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.5.2006

Репутация: -1
Всего: нет



Я пишу программу, которая работатет, как сервис. В сервисе есть поле (TEdit) в которое нужно ввести данные, НО при нажатии на клавиши в поле ничего не печатается! Причём копки "Delete", "Home", "End"  прекрасно работают (контекстное меню работает, если вставить с помощью него текст, то всё прекрасно отображается). Проблема не только с TEdit, но и с остальными стандартными компонентами ввода.
Сервис делал стандартными средствами Delphi.
Можно ли что-нибудь сделать?... 
PM MAIL   Вверх
Poseidon
Дата 7.5.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Darbort @  7.5.2006,  18:40 Найти цитируемый пост)
Можно ли что-нибудь сделать?...  
 Можно. Семнадцатую строчку попровь  smile 
 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Демо
Дата 7.5.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Darbort @  7.5.2006,  18:40 Найти цитируемый пост)
Можно ли что-нибудь сделать?... 

Не писать сервисы с формами ввода. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Darbort
Дата 7.5.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.5.2006

Репутация: -1
Всего: нет



Спасиб пацаны, вы здесь все такие умные?  smile  
PM MAIL   Вверх
Демо
Дата 7.5.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Darbort @  7.5.2006,  20:50 Найти цитируемый пост)
Спасиб пацаны, вы здесь все такие умные?


Я тебе ответил максимально точно и корректно.

Коли после этого у тебя только такие вопросы возникают, то что ж тут поделаешь. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Dimannn
Дата 7.5.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



Цитата(Darbort @  7.5.2006,  18:40 Найти цитируемый пост)
Сервис делал стандартными средствами Delphi.


Это как именно?
Скорее всего не принимаюся сообщения для окон.

Прочти Флейм, Флуд, САБЖ, ИМХО и т.д., Разъяснение терминов 


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
Darbort
Дата 7.5.2006, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.5.2006

Репутация: -1
Всего: нет



Цитата

ошибка в 17 строке... однозначна...  

Какой тут код приводить? SvcMgr.pas постить что ль? smile
Цитата

  Не писать сервисы с формами ввода.  

Это выход? Не смеши...

- Я не умею плавать.
- Так не учись...

Тоже самое по-моему.
Самому не нравится в сервисе форму юзать, но по другому ещё хуже smile

Цитата

Это как именно?


File->New->Other...
Потом ServiceApplication

В общем я пока понял, что не обрабатываеются сообщения WM_CHAR;
Попробывал сделать так:
Бросил TTimer на форму и в OnTimer:
Код

var
  msg: TMSG;
begin
  GetMessage(msg,handle,0,0);
  TranslateMessage(msg);
  DispatchMessage(msg);
  Edit1.Broadcast(msg);
end;


Как ни странно заработало smile НО, как и следовало ожидать всё кроме ввода очень сильно тормозит...

Появилась идея не перехватывать всё в подрят, а только нужное smile
То есть procedure HKlav(var msg: TMessage); message WM_CHAR;

Но на WM_CHAR он не реагирует, может какое ещё сообщение?  

Это сообщение отредактировал(а) Darbort - 7.5.2006, 23:31
PM MAIL   Вверх
Демо
Дата 8.5.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Darbort @  7.5.2006,  23:28 Найти цитируемый пост)
Это выход? Не смеши...

- Я не умею плавать.
- Так не учись...


Именно выход.
Сервис не предназначен для программирования с VCL. И вообще для оработы с окнами.

А если ты хочешь все-таки писать интерфейс с пользователем именно в сервисе - забудь про VCL. Да и это будет "через задний проход".
 


--------------------
    
PM MAIL ICQ Skype   Вверх
XSInet
Дата 8.5.2006, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



Цитата

var
  msg: TMSG;
begin
  GetMessage(msg,handle,0,0);
  TranslateMessage(msg);
  DispatchMessage(msg);
end;


Это делается в while цикле. Пиши на WinAPI 
PM MAIL   Вверх
Darbort
Дата 8.5.2006, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.5.2006

Репутация: -1
Всего: нет



Согласен, это просто извращение писать сервис с VCL...
В общем или WinAPI или на два приложения разделять (через мессаги им общатся, кста никто не знает, как через пайпы параметры передавать? Возможно ли это? Проверить на вторую копию легко, а с передачей что-то не выходит), то есть два раза "через задний проход" smile
Цитата

Это делается в while цикле.

Ну, если я сделаю так, то прога будет бесконечно долго в подвешенном состоянии smile , так как TApplication в SvcMgr.pas занимается тем же самым... Если на WinAPI, то ясный пень while...
Всё же ещё помучась... прям загадка, даже OnKeyDown для TEdit сробатывает, а дальше ни в какую.
Как всегда  smile  
PM MAIL   Вверх
Guedda
Дата 8.5.2006, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Цитата(Darbort @  8.5.2006,  09:24 Найти цитируемый пост)
бесконечно долго в подвешенном состоянии

Можно это обойти, написав:
Код

ProcessMessages;

 smile  


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Darbort
Дата 8.5.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.5.2006

Репутация: -1
Всего: нет



Цитата

Можно это обойти, написав:
ProcessMessages;


Нет, ну вы меня окончательно прикалываете smile
У TApplication в  SvcMgr.pas НЕТ ProcessMessages!
Если использовать TApplication из Forms, то процедура ProcessMessages работает не корректно, если не сказать вообще не работает. То есть буковки печатаются, а всё остальное виснет включая рабочий стол... smile 
PM MAIL   Вверх
Демо
Дата 8.5.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Darbort @  8.5.2006,  08:24 Найти цитируемый пост)
Согласен, это просто извращение писать сервис с VCL...


Писать сервис в VCL - не извращение.
Извращение - писать сервис с пользовательским интерфейсом.

Я ж написал - если тебе так нужен интерфейс с пользователем в сервисе - реализуй этот интерфейс в окнах WinAPI32.

Тебе нужна глючная программа? - Тогда используй VCL для этого.

Добавлено @ 12:19 
А давать советы для написания заведомо глючной программы - уволь. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Darbort
Дата 8.5.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.5.2006

Репутация: -1
Всего: нет



Увольняю  smile 
Спасиб всем. 
PM MAIL   Вверх
Dimannn
Дата 15.5.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



Цитата(Демо @  8.5.2006,  12:19 Найти цитируемый пост)
Тебе нужна глючная программа? - Тогда используй VCL для этого.

Я писал - у меня всё было нормально, ничё не глючило. 


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1095 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.