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

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


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

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

Выпуск № 840
от 16.06.2007, 12:05

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


Вопрос № 90804: Здравствуйте уважаемые эксперты! У меня на форме несколько ToolButton'ов , научите пожалуйста как при наведении на них получать hint'ы и если можно разного цвета....
Вопрос № 90831: Добрый день. Вопрос следующий: LabelOnline:tLabel; if (MagRasCon.ConnectState = RASCS_Connected) then LabelOnline.Caption := 'Online'; как Сделать 'OnLine' 3еленым, а OffLine красным? .
Вопрос № 90835: Не подскажите, как сделать так, чтобы по событию OnMouseMove Осуществить вращение рисунка в TImage-е? Нужно для реализации Регулятора громкости....
Вопрос № 90905: Пишу программу в среде Делфи, в задачу входит отразить изменяющийся рисунок, плавное изменение цвета. Получается не очень, из-за перерисовки происходит мигание экрана. Можно ли сделать плавное изменение цвета определенной части экрана? Желательно при...

Вопрос № 90.804
Здравствуйте уважаемые эксперты! У меня на форме несколько ToolButton'ов , научите пожалуйста как при наведении на них получать hint'ы и если можно разного цвета.
Отправлен: 10.06.2007, 12:06
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Melamed
Здравствуйте, GAZOT!
Свойству ShowHit присваиваешь значение TRUE А свойству Hint присваиваешь значение строки-подскаски, которая ваыводиться в Hint-оене соответсвуюшего ToolButton'a или компонента TAction с ним связа 085;ного, который можно добавить в список компонента TActionList.
Ответ отправил: Melamed (статус: Студент)
Ответ отправлен: 10.06.2007, 13:12
Оценка за ответ: 4
Комментарий оценки:
спасибо, жаль ничего по второй части вопроса не сказали

Отвечает: PGM
Здравствуйте, GAZOT!

Используйте предыдущий ответ для установки хинтов. А цвета менять можно используя событие OnShowHint из компонента TApplicationEvents. Вот его заголовок

procedure AppShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);

Меняете HintInfo.HintColor на свой в зависимости от условий (т.е. вычисляя какой компонент под мышью или опознавая их по HintStr), тут же можно и HintStr поменять если надо. У структуры HintInfo есть и другие поля, которые помогут настроить показ хинта.

Ответ отправил: PGM (статус: 8-ой класс)
Ответ отправлен: 10.06.2007, 17:25
Оценка за ответ: 4
Комментарий оценки:
спасибо ,но на примере было бы наглядней


Вопрос № 90.831
Добрый день. Вопрос следующий:

LabelOnline:tLabel;

if (MagRasCon.ConnectState = RASCS_Connected) then

LabelOnline.Caption := 'Online';

как Сделать 'OnLine' 3еленым, а OffLine красным?

Приложение:

Отправлен: 10.06.2007, 15:31
Вопрос задал: Killka (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ерёмин А.А.
Здравствуйте, Killka!
У Label есть свойство Font, т.е. можно изменять шрифт - разве это не подойдёт? Пример:
LabelOnline.Font.Color:=clGreen;
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин А.А. (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI
----
Ответ отправлен: 10.06.2007, 15:34
Оценка за ответ: 5
Комментарий оценки:
крута.... Большое спасбо.... это я и искал.

Отвечает: Градов Юрий Михайлович
Здравствуйте, Killka!
Менять свойство Label.Font.Color;

Приложение:

---------
Глаза боятся - руки делают!

Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 10.06.2007, 15:44

Отвечает: Уваров Андрей Александрович
Здравствуйте, Killka!
!!!
Плохо искали. Все просто.
LabelOnline.Font.Color := clRed; //clLime и т.п.
[Дублирующий ответ.] [Edited by Gh0stik]
---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com
Ответ отправил: Уваров Андрей Александрович (статус: Студент)
Ответ отправлен: 10.06.2007, 20:29

Отвечает: Фадеев Юрий
Здравствуйте, Killka!
Если Вам надо чтобы менялся сам цвет надписи то я бы написал так:

if (MagRasCon.ConnectState = RASCS_Connected) then
Begin
LabelOnline.Caption := 'Online';
LabelOnline.Font.Color:=clGreen;
end;

ну и соответственно для OffLine можна написать LabelOnline.Font.Color:=clRed;

Ну а есле необходимо поменять сам фон, то можна написать так:

if (MagRasCon.ConnectState = RASCS_Connected) then
Begin
LabelOnline.Caption := 'Online';
LabelOnline.Color:=clGreen;
end;
Ответ отправил: Фадеев Юрий (статус: 1-ый класс)
Ответ отправлен: 11.06.2007, 12:31


Вопрос № 90.835
Не подскажите, как сделать так, чтобы по событию OnMouseMove Осуществить вращение рисунка в TImage-е? Нужно для реализации Регулятора громкости.
Отправлен: 10.06.2007, 15:57
Вопрос задал: SunnyLab (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Timoshin A.B.
Здравствуйте, SunnyLab!
Надеюсь вам подойдёт такой вариант поворота, относительно точки.
Удачи.

Приложение:

---------
Борюсь с нехваткой "мозгов"...

Ответ отправил: Timoshin A.B. (статус: Студент)
Ответ отправлен: 10.06.2007, 19:54


Вопрос № 90.905
Пишу программу в среде Делфи, в задачу входит отразить изменяющийся рисунок, плавное изменение цвета. Получается не очень, из-за перерисовки происходит мигание экрана. Можно ли сделать плавное изменение цвета определенной части экрана? Желательно пример.
Спасибо.
Отправлен: 11.06.2007, 05:26
Вопрос задал: Float (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Примак Руслан Николаевич
Здравствуйте, Float!

Мерцание можно убрать, если у родителя рисунка установить свойство DoubleBuffered := True;
Например, TPanel(MyImage.Parent).DoubleBuffered := True;
Одно замечание - не у всех компонентов есть свойство DoubleBuffered
Ответ отправил: Примак Руслан Николаевич (статус: 2-ой класс)
Ответ отправлен: 11.06.2007, 12:40

Отвечает: Градов Юрий Михайлович
Здравствуйте, Float!
Вот 3 варианта уменьшения мерцания при прорисовке обьекта:
1. Мерцание возникает, когда цвет точки меняется два раза подряд. Правильнее объект рисовать в памяти и выводить на форму уже готовое изображение поверх предыдущего. В таком случае смена цветов на экране происходит только 1 раз.
2. Если добавить флаг csOpaque (непрозрачный) к свойству ControlStyle компонента - то фон компонента перерисовываться не будет. Вариант в приложении
3. В методе Paint - InvalidateRect(Handle, NIL, FALSE), где Handle должен быть дескриптором формы или элемента управления.

Приложение:

---------
Глаза боятся - руки делают!

Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 11.06.2007, 12:45

Отвечает: Кэр Лаэда
Здравствуйте, Float!

в дополнение к ответу Примак Руслан Николаевич
кроме установки DoubleBuffered в True установите свойство
Image
Stretch:=true
Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 11.06.2007, 12:56

Отвечает: DimonSoft
Здравствуйте, Float!

Если программа не должна иметь определённых ограничений, то намного проще будет воспользоваться библиотекой DirectX. Код будет приблизительно таким, как в приложении. Изменения следующие:

1. В функции InitDX() вместо Handle надо будет указать Handle контрола, на который будет производиться вывод (например, TPanel).

2. В функции Render() используется вспомогательная функция D3DCOLOR_XRGB(). Её параметры - числа от 0 до 255, соответствующие красному, зелёному и синему составляющим.

3. В примере используется также объект TApplicationEvents (и его событие OnIdle).

Кроме того, следует в секцию public описания формы добавить следующие строки:

DXObj:IDirect3D9;
DXDev:IDirect3DDevice9;

P.S. При желании функцию инициализации можно дополнительно упростить, обращайтесь.

Приложение:

Ответ отправил: DimonSoft (статус: 2-ой класс)
Ответ отправлен: 11.06.2007, 19:52


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

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

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

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

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


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


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

В избранное