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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1169
от 31.08.2008, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 407, Экспертов: 42
В номере:Вопросов: 4, Ответов: 6

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 142229: Здравствуйте, эксперты! Во время выполнения программы загружаю в TImage расположенный на форме картинку jpeg. Как сделать так, чтобы Timage и форма подстраивались под размер картинки?...
Вопрос № 142247: Добрый вечер. Мне нужно удалить из реестра один ключ. Он точно там есть, но у меня не получается его удалить. Подскажите, что не так. Также результат Reg.KeyExists('Mes') все время дает значение false....
Вопрос № 142255: Уважаемые эксперты. У меня к вам следующий вопрос. Я необходимо написать программу, которая, при нажатии кнопки, будет имитировать нажатия кнопки клавиатуры либо мыши, с частотой заданной в настройках. То есть некое подобие автокликера.Если не тру...
Вопрос № 142261: Решили написать с другом систему в которой существует сервер который принимает и обрабатывает текстовые сообщ ения от клиентов. Реализация писалась через Indy компонентыюю IdTCPServer и IdTCPClient. В процессе написания столкнулись со следующей пробл...

Вопрос № 142.229
Здравствуйте, эксперты!
Во время выполнения программы загружаю в TImage расположенный на форме картинку jpeg. Как сделать так, чтобы Timage и форма подстраивались под размер картинки?
Отправлен: 25.08.2008, 19:11
Вопрос задал: Марков Александр Сергеевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Troyan
Здравствуйте, Марков Александр Сергеевич!
Простейшим вариантом будет установка свойства AutoSize вашего TImage и формы в положение True. Строки в приложении делают именно это

Приложение:

---------
Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!

Ответ отправил: Troyan (статус: Студент)
Ответ отправлен: 25.08.2008, 19:30
Оценка за ответ: 5
Комментарий оценки:
А я вот сразу не додумался:((

Отвечает: -=Dr. Штопор=-
Здравствуйте, Марков Александр Сергеевич!
Для работы с JPEG нужно подключить модуль jpeg (добавить его в раздел uses). Следующим шагом нужно задекларировать переменную типа TJpegImage.
Работа с TJpegImage происходит по следующему сценарию:
1. Создание J := TJpegImage.Create;
2. Открытие файла J.LoadFromFile(filename: string);
3. Созданный с помощью bm := TBitMap.Create; битмап сзязываем с TJpegImage bm.Assign(JpegIm);
4. По окончании работы уничтожаем TJpegImage методом Destroy

Вот, наверное, и всё, что нужно знать о JPEG (подробнее - в файле справки )

Теперь о том, как подогнать:
У компонента TImage есть свойство AutoSize, если оно равно True, размер подгоняется под изображение. Чтобы подогнать форму, можно сделать так:
Код:
Form1.Height:=Form1.Image1.Height;
Form1.Width:=Form1.Image1.Width;

Данный метод гибче, чем Form1.AutoSize:=true, так как можно оставить поле сбоку от изображения, сделав, например, так:
Код:
Form1.Width:=Form1.Image1.Width+40;

Желаю удачи!
---------
Tantum possumus, quantum scimus
Ответ отправил: -=Dr. Штопор=- (статус: Студент)
Ответ отправлен: 25.08.2008, 19:47
Оценка за ответ: 5
Комментарий оценки:
Спасибо:))


Вопрос № 142.247
Добрый вечер.
Мне нужно удалить из реестра один ключ. Он точно там есть, но у меня не получается его удалить.
Подскажите, что не так.
Также результат Reg.KeyExists('Mes') все время дает значение false.

Приложение:

Отправлен: 25.08.2008, 22:10
Вопрос задал: Vassea (статус: Практикант)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PavelGM
Здравствуйте, Vassea!

Вы хотите удалить ключ или раздел реестра?
- Если ключ, то надо использовать DeleteValue, а не DeleteKey. Поэтому и KeyExists возвращает ложь, так как она тоже для разделов.
- Если нужно удалить раздел, то надо открывать родительский раздел OpenKey('Software'), а потом DeleteKey('Builder')
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 26.08.2008, 10:36
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Теперь понятно. Буду знать.


Вопрос № 142.255
Уважаемые эксперты. У меня к вам следующий вопрос.
Я необходимо написать программу, которая, при нажатии кнопки, будет имитировать нажатия кнопки клавиатуры либо мыши, с частотой заданной в настройках. То есть некое подобие автокликера.Если не трудно, не могли бы вы написать укороченную версию сей программы, либо элемент кода, который будет отвечать за симуляцию нажатия кнопок клавиатуры, левой кнопки мыши, правой кнопки мыши.
Заранее благодарен.
Отправлен: 25.08.2008, 23:45
Вопрос задал: Гардукевич Роман Эдуардович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Troyan
Здравствуйте, Гардукевич Роман Эдуардович!
Для совершения нужных вам действий нужно этому объекту отправить сообщение. Вам понадобятся лишь три константы сообщений:
WM_Char, говорящее объекту о "нажатии клавиши" и сочетание WM_LButtonDown и WM_LButtonUp (они в сочетании дают клик мыши - сначала мышь нажимается, потом ее отпускают).
Если объект, на который вы хотите отправить сообщение, находится в вашей программе (вы можете напрямую к нему обратиться), то удобнее использовать метод Perform, например:
Button2.Perform(WM_LButtonDown,0,0);
Button2.Perform(WM_LButtonUp,0,0);
Эта запись имитирует "клик" на кнопке Button2.
Edit1.Perform(WM_Char,Ord('!'),0);
Эта запись отправляет полю Edit1 символ "!".
Если же объект находится вне вашей досягаемости, то требуется сначала найти его. Как искать эти объекты и отправлять им сообщение хорошо написано на сайте DelphiWorld, ссылка на статью в приложении

Приложение:

---------
Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!

Ответ отправил: Troyan (статус: Студент)
Ответ отправлен: 26.08.2008, 10:42
Оценка за ответ: 5
Комментарий оценки:
Спасибо!Ответ достаточно полный с ссылкой на дополнительный источник и решает именно поставленную проблему.

Отвечает: PavelGM
Здравствуйте, Гардукевич Роман Эдуардович!

Вам помогут функции keybd_event и mouse_event. При такой общей постановке задачи сложно предложить какой-то конкретный код. Частные примеры как просили:

Клавиатура (Shift)
Нажатие: keybd_event(VK_SHIFT, 0, 0, 0);
Отпускание: keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

Мышь (левая клавиша):
Нажатие: mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Отпускание: mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

Для регулировки частоты используйте таймер, вставив указанные функции в его обработчик OnTimer.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 26.08.2008, 10:45
Оценка за ответ: 4
Комментарий оценки:
Спасибо.Но было бы неплохо, если бы Вы написали объяснения значения по параметрам или ссылку на источник.Большое спасибо!


Вопрос № 142.261
Решили написать с другом систему в которой существует сервер который принимает и обрабатывает текстовые сообщения от клиентов. Реализация писалась через Indy компонентыюю IdTCPServer и IdTCPClient. В процессе написания столкнулись со следующей проблемой: программа идеально работала в локальной сети и в случаях если сервер не был спрятан за роутером, в случаях с роутером решили использовать параметр BoundIP в параметрах IdTCPClient, но при это начала вылетать 10049 ошибка при попытке соединения. Собственно вопрос, в чем может быть проблема и как иначе можно реализовать соединение двух компьютеров находящихся за роутерами?

В приложении Button2 отвечает за отправку сообщений от клиента.
Button1 за ввод параметров соединения из трех полей.

Приложение:

Отправлен: 26.08.2008, 00:54
Вопрос задал: Lyoshaha (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: monah
Здравствуйте, Lyoshaha!
При подобной задаче я использовал компоненты ClientSocket и ServerSocket. Они отключены по умолчанию, поэтому необходимо и установить. Для делфи 7 они находятся в папке Lib директории Делфи. файл dclSocket7, если не ошибаюсь.
---------
festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 26.08.2008, 18:49
Оценка за ответ: 4
Комментарий оценки:
Хороша бы ещё хоть чуть чуть реализации, а так безусловно спасибо :)


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.1 beta(win) от 11.08.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное