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

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


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

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

Выпуск № 950
от 11.10.2007, 04:35

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


Вопрос № 104383: Здравствуйте, тут мне задачу надо решить: На форме рисунок и две кнопки: увеличить и уменьшить. При нажатии на увеличить размер рисунка увеличивается на 10 пикселей, рисунок смещается влево и вверх на пять пикселов. Аналогично п...
Вопрос № 104386: Добрый день! Есть чужое окно, на котором расположены всякие кнопки и переключатели. Хэндл этого окна несложно узнать по заголовку используя функцию FindWindow. А как узнать хэндл определенной кнопки или переключателя на это самой форме? Потом нуж...

Вопрос № 104.383
Здравствуйте, тут мне задачу надо решить:

На форме рисунок и две кнопки: увеличить и уменьшить. При нажатии на увеличить размер
рисунка увеличивается
на 10 пикселей, рисунок смещается влево и вверх на пять пикселов.
Аналогично при уменьшении рисунка: его размеры уменьшаются, и смещается вправо и вниз.

Я написал такой код (в приложении), и кнопка на пять пикс елов не двигается, она резко как-то двигается, я не знаю оператора, который на пикселы уменьшает рисунки.
Подскажите пожалуйста как реализовать мне эту задачу

Приложение:

Отправлен: 05.10.2007, 08:02
Вопрос задал: Исаак Моисеевич (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PavelGM
Здравствуйте, Исаак Моисеевич!

Можно предложить следущее:
- установить Image1.Stretch в True - он отвечает за масштабирование (правда без всяких сглаживаний, только на уровне GDI (StretchBlt), "красивое" масштабирование это отдельная тема)
- использовать Image1.SetBounds чтобы устанавливать все координаты и размеры сразу, а не вызывать несколько последовательных рывков.

Для вашего случая (как описано в вашем вопросе - в коже у вас что-то совсем другие цифры)

1. Кнопка 1
Image1.SetBounds(Image1.Left-5, Image1.Top-5, Image1.Width+10,Image1.Height+10);

2. Кнопка 2
Image1.SetBounds(Image1.Left+5, Image1.Top+5, Image1.Width-10,Image1.Height-10);
Ответ отправил: PavelGM (статус: 10-ый класс)
Ответ отправлен: 05.10.2007, 10:28


Вопрос № 104.386
Добрый день!
Есть чужое окно, на котором расположены всякие кнопки и переключатели. Хэндл этого окна несложно узнать по заголовку используя функцию FindWindow. А как узнать хэндл определенной кнопки или переключателя на это самой форме? Потом нужно отметить переключатель и нажать на кнопку програмным путем.
Отправлен: 05.10.2007, 08:49
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: W@NDeReR
Здравствуйте, Red Spirit!
Найти кнопку и затем нажать на неё можно так:
prog:=FindWindow(nil,'Error');//Ищем программу
but:=FindWindowEx(prog,0,'TButton',nil);//ищем кнопку
SendMessage(but,bm_Click,0,0);//щелкаем по кнопке

---------
Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.
Ответ отправил: W@NDeReR (статус: 5-ый класс)
Ответ отправлен: 05.10.2007, 09:57
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ! Но я заметил, что функция FindWindowEx работает не на всех окнах...

Отвечает: Dragon
Здравствуйте, Red Spirit!

вот процедура определение Handle и окна и кнопок и т.д.
можно сделать маленькую универсальную прогу по определению Handle любого окна, кнопок и т.д. написав только указанную ниже в приложении процедуру и использовать в дальнейшем. Сделайте для формы fsStayOnTop и при наведении на необходимы компонент или форму у которого нужно определеить Handle на caption формы появится Handle. Поставьте, например, для таймера интервал 1000.

Нажатие кнопки делается так(например кнопки OK):
SendMessage(Wind,WM_Command,MakeWParam(Id,BN_CLICKED),Ex);
где
wind - handle окна где располагается кнопка
id:=GetDlgCtrlID(Ex);// id кнопки
Ex:=FindWindowEx(Wind,0,'Button','OK');// находим кнопку OK
Удачи

Приложение:

Ответ отправил: Dragon (статус: 2-ой класс)
Ответ отправлен: 05.10.2007, 10:30
Оценка за ответ: 5
Комментарий оценки:
Спасибо! У меня уже есть программулина такого типа, называется EliteSpy (написана на VB) частенько пользуюсь :) И, не понятно, почему функция FindWindowEx работает не для всех окон...


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.13 от 06.10.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное