Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 247
от 23.09.2005, 23:49

Администратор:Калашников О.А.
В рассылке:Подписчиков: 245, Экспертов: 47
В номере:Вопросов: 3, Ответов: 8


Вопрос № 26544: Здравстуйте господа эксперты На вопрос №25941, был дан достаточно полный ответ про хуки, к-ый включал пример (см. приложение), который вообщем-то рабочий, но есть одна проблема : периодически программа не завершает свою работу корректно, что прив...
Вопрос № 26546: Уважаемые эксперты, вопрос состоит в том как скопировать из буфера обмена рисунок в формате jpg в компонент Image. Я чего-то пытался сделать, Bitmap копирует, а вот jpeg -пишет неподдерживаемый формат, вроде как-то можно регить новые форматы, но я с ...
Вопрос № 26547: Здравствуйте, господа эксперты. Вопрос таков: есть две формы Form1 и Form2, причем Form1 хранит в себе ссылку на Form2, как Form1 может отлавливать все сообщения от Form2 (такие как движение, минимизация, изменение размера и т. п. ), причем нельз...

Вопрос № 26.544
Здравстуйте господа эксперты
На вопрос №25941, был дан достаточно полный ответ про хуки, к-ый включал пример (см. приложение), который вообщем-то рабочий, но есть одна проблема : периодически программа не завершает свою работу корректно, что приводит к зависанию (в частности среды), хотелось бы узнать с чем это связано?
И еще: существует ли возможность сделать HookProc членом какого-либо класса (т.е чтобы функция, передаваемая SetWindowsHookEx), например класса TForm1? Заранее спасибо за ответы

Приложение:

Отправлен: 18.09.2005, 20:39
Вопрос задала: Татьяна (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Denisss
Здравствуйте, Татьяна!
1. Если Вы привели код всей программы, то в чем заключается ошибка я Вам сказать не могу - у меня приведенный Вами код работает "как часы". Мне не удалось привести к зависанию программу ни разу.
2. Нет, нельзя. Но Вы можете сделать функцию так, чтобы она сама вызывала события всех переданных ей классов (например, если функция будет хранить все эти события в собственном отдельном массиве и будет их вызывать по циклу, когда придет очередное сообщение о нажатии на кнопку).
Ответ отправил: Denisss (статус: Практикант)
Отправлен: 19.09.2005, 14:29
Оценка за ответ: 4


Вопрос № 26.546
Уважаемые эксперты, вопрос состоит в том как скопировать из буфера обмена рисунок в формате jpg в компонент Image. Я чего-то пытался сделать, Bitmap копирует, а вот jpeg -пишет неподдерживаемый формат, вроде как-то можно регить новые форматы, но я с этим не разобрался. Заранее благодарен.

Приложение:

Отправлен: 18.09.2005, 20:45
Вопрос задал: Master135 (статус: 7-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: DAiMor
Здравствуйте, Master135!
а вот у меня работет и даже независимо от того копирую я внутри своей программы либо из другой вставляю.
в uses также стоят 2 модуля jpeg и clipbrd
твоя ошибка в том что ты через Graphic вставлаешь а он поддерживает только bitmap. А так все правильно смотри приложение доступно понятно там где ты пишешь 100 я поставил 0 и разницы никакой

Приложение:

Ответ отправил: DAiMor (статус: 1-ый класс)
Отправлен: 18.09.2005, 21:55
Оценка за ответ: 3
Комментарий оценки:
Я копирую в буфер не из программы, а, например, из браузера. С картинки в картинку копировать немудренно.

Отвечает: Силантьев Евгений Александрович
Здравствуйте, Master135!
Предлагаю вашу проблему решать так:
1. Получить адрес изображения из буфера
2. Загрузить это изображение в Image из файла

Возможно, это не совсем то, что Вы хотели, но зато работает. Правда, было бы очень неплохо проверять расширение файла из буфера, но это уже по вашему усмотрению!
Надеюсь помог.

Приложение:

---------
The world is mine! :)

Ответ отправил: Силантьев Евгений Александрович (статус: 6-ой класс)
Отправлен: 19.09.2005, 01:07

Отвечает: sir henry
Здравствуйте, Master135!
Нужно в строку USES включить модуль JPEG - это специальный модуль для разборок с картинками этого формата.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 19.09.2005, 05:27


Вопрос № 26.547
Здравствуйте, господа эксперты.
Вопрос таков: есть две формы Form1 и Form2, причем Form1 хранит в себе ссылку на Form2, как Form1 может отлавливать все сообщения от Form2 (такие как движение, минимизация, изменение размера и т. п. ), причем нельзя переопределять функции типа Tform2.onMove, так как в form2 они уже могут быть определены, так как надо именно ей. т.е. другими словами Form2 не должна заботиться о том, чтобы form1 получала сообщения о своем изменении. Можно ли это сделать, не используя хуки?
Отправлен: 18.09.2005, 20:55
Вопрос задала: Татьяна (статус: 2-ой класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Татьяна!
Если нельзя переопределить функции формы 2, то форма 1 должна отслеживать все действия формы 2. Боюсь, что это только хуки, которые специально для этого и предназначены. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 19.09.2005, 05:25

Отвечает: akaDemik
Здравствуйте, Татьяна!
Ну зачем сразу хуки... Если Form1 и Form2 из одного приложения, можно отлавливать сообщения через Application.OnMesage, а потом по хендлу обрабатывать только принадлежащие нужной нам форме. См. Приложение.

Приложение:

Ответ отправил: akaDemik (статус: 1-ый класс)
Отправлен: 19.09.2005, 09:02

Отвечает: Lector
Здравствуйте, Татьяна!
Рассотрим на примере onshow:
1. Создаём в form1 переменную (например varOnShow) типа TNotifyEvent.
2. Создаём в form1 функцию совместимую с TNotifyEvent.
Например procedure MyShow(Sender: TObject);
3. при создании форм инициализируем переменную varOnShow значением функции OnShow из формы 2.
4. Присваиваем функции onshow формы 2 функцию MyShow;
5. В конце функции MyShow вызываем функцию, находящуюся по адресу, хранимому в переменной varOnShow. Например varOnShow(self);
---------
Хочешь помочь дураку - сам дурак
Ответ отправил: Lector (статус: 4-ый класс)
Отправлен: 19.09.2005, 12:31

Отвечает: Anefedov
Здравствуйте, Татьяна!
Сделайте третий UNIT3, в который будете передавать все сообщения от Form2, и заталкивать в Form1
Ответ отправил: Anefedov (статус: 6-ой класс)
Отправлен: 20.09.2005, 13:43
Оценка за ответ: 3


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное