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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задать цвет Button 
:(
    Опции темы
ShuVaS
Дата 12.1.2005, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть еще вопросик - у мена есть битмап на котором изображно 50 иконок.Я сохраняю его в ресурсах и могу обащать через LoadFromResourseID - как мне обраться не ко всему рисунку я именко к иконке (размеры допустим 16 на 16)
PM MAIL WWW ICQ   Вверх
Alex
Дата 12.1.2005, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



ShuVaS 1 тема 1 вопрос!


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
p0s0l
Дата 13.1.2005, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата(Alex @ 11.1.2005, 01:10)
Как ты теперь знаешь, Borland не придумывал TButton. TBitBtn и TSpeedButton не являются потомками TButton, они созданы на основе класса TGraphicControl и просто внешне похожи на TButton.
TBitBtn - наследник TButton smile. Поэтому он тоже является стандартным окном Windows (класс "BUTTON"), правда со стилем BS_OWNERDRAW.
А TSpeedButton - неполноценная кнопка, просто интерактивная картинка, которая рисуется на канвасе родителя. У неё нет Handle, т.к. это не окно -> нет очереди сообщений, не может иметь фокуса (т.е. нажать на неё можно только мышкой)... В этом есть свои плюсы и минусы...

Цитата(Alex @ 11.1.2005, 23:11)
VCL - это Visual Control Library.
Вернее Visual Component Library


--------------------
С уважением, г-н Посол.
PM   Вверх
Zero
Дата 13.1.2005, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

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



Цитата(Alex @ 12.1.2005, 15:03)
Можно вопрос? Чему вас тогда учат? Как кнопочку на форму кинуть?

1. У меня был курсач на тему создания рабочего стола
2. Про польскую запись
3. Восемь лабораторок (4-на изучение Delphi, и 4 по OpenGl)
Цитата(p0s0l @ 13.1.2005, 00:30)
TBitBtn - наследник TButton

Цитата(Alex @ 11.1.2005, 21:42)
Программа написана с использованием TBitBtn, который не построен на базе стандартного компонента системы Button
Интересно и кто же из вас прав???
PM MAIL ICQ   Вверх
p0s0l
Дата 13.1.2005, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата(Zero @ 13.1.2005, 00:52)
Интересно и кто же из вас прав???
Возможно, Alex говорит про другую версию Delphi, но я про Delphi 7...
Код
 TBitBtn = class(TButton)



Добавлено @ 01:14
Цитата(p0s0l @ 13.1.2005, 01:09)
Возможно, Alex говорит про другую версию Delphi
Хотя это маловероятно smile, т.к. это большая разница - наследоваться от TButton (от TWinControl) или от TGraphicControl... В разных версиях Delphi не должна меняться иерархия, иначе потеряется совместимость проектов...


Добавлено @ 01:18
Да и вообще в цитате:
Цитата(Alex)
Программа написана с использованием TBitBtn, который не построен на базе стандартного компонента системы Button
речь идёт не о VCL TButton, а WinAPI BUTTON (как я понял)...
Хотя в таком случае тоже несовсем верно, т.к. я уже говорил, что TBitBtn - это тоже окно класса BUTTON, просто имеет стиль BS_OWNERDRAW, то бишь рисует кнопочку не винда, а программа...



--------------------
С уважением, г-н Посол.
PM   Вверх
Zero
Дата 13.1.2005, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

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



p0s0l теперь ты меня окончательно запутал.
Цитата(p0s0l @ 13.1.2005, 00:30)
А TSpeedButton - неполноценная кнопка, просто интерактивная картинка, которая рисуется на канвасе родителя. У неё нет Handle, т.к. это не окно -> нет очереди сообщений, не может иметь фокуса (т.е. нажать на неё можно только мышкой)... В этом есть свои плюсы и минусы...
Вот такое то я читал, и вот это...
Цитата(p0s0l @ 13.1.2005, 00:30)
TBitBtn - наследник TButton . Поэтому он тоже является стандартным окном Windows (класс "BUTTON"), правда со стилем BS_OWNERDRAW.

Приблизительно то что я думал сначала.
PM MAIL ICQ   Вверх
Vit
Дата 13.1.2005, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(Zero @ 12.1.2005, 17:38)
p0s0l теперь ты меня окончательно запутал.



Исходники VCL тебе в помощь! Пока не будешь в них ходить за помощью и ответами на свои вопросы и учиться программировать разбирая их - программистом на Дельфи называться не сможешь... Это не выпендрёжь, а чистая правда жизни. У тебя достаточный багаж знаний и путешествие в исходники компонентов - это естественный и необходимый для тебя шаг.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Alex
Дата 13.1.2005, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



Цитата(Zero @ 13.1.2005, 02:38)
p0s0l теперь ты меня окончательно запутал.

Запутал тебя не p0s0l, а я т.к. стал говорить, что TBitBtn - не наследник TButton smile
smile Но я точно помню, что были проблемы с манифестами у этих кнопок. А проблемы эти понятны. Ведь отрисовкой занимается программа. Но я за сегодня, это обязательно проверю.

Все мои прошлые высказывания применительно к SpeedButton.

Извините за дезинформацию.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Ddddddelphi
Дата 13.1.2005, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я в яндексе когда-то наткнулся вот на такой ответ, незнаю на сколько это неверный подход к делу со стороны автора - кроме того что больше на малость занимает объём памяти smile


Цитата

Саму кнопку, конечно, украсить возможно, но очень много писанины и новичку не всегда понятно что к чему писать. Поэтому предлагаю использовать не кнопку а коммпонент, который очень похож на кнопку и без проблем раскрашивается в любой цвет- Panel (на странице Standard). Чтобы этот компонент вёл себя как кнопка, присвойте свойству BevelOuter значение bvRaised и обработайте события MouseUp и MouseDown:

Код

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbleft then
 Panel1.BevelOuter:= bvLowered;// "Вдавливаем" кнопку
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbleft then
 begin
   Panel1.BevelOuter:= bvRaised;//"Поднимаем" кнопку
   ...
   {здесь какие-то действия после нажатия кнопки}
   ...
 end;
end;



PM MAIL   Вверх
p0s0l
Дата 13.1.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата(Alex @ 13.1.2005, 11:38)
Но я точно помню, что были проблемы с манифестами у этих кнопок.
Да, видимо раньше (в 6-ой и более старых версиях Delphi) рисование содержимого TBitBtn происходило через DrawFrameControl, а эта функция рисует одно и то же независимо от выбранного визуального стиля. В 7-ой версии уже используется UxTheme API, поэтому TBitBtn нормально отображается в соответсвии с выбранным визуальным стилем...
Но опять же есть хоть и маленькая, но вероятность того, что Microsoft изобретет еще один механизм визуального отображения, более продвинутый чем теперешние визуальные стили, и тогда опять надо будет ждать новой версии Delphi...


--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 13.1.2005, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Самое интересное, что Microsoft очень странно поступил - класс BUTTON поддерживает отображение картинок и иконок. Но если установить у BUTTON иконку или битмап (BM_SETIMAGE), то она тут же перестаёт использовать визуальные стили smile. Хотя может это чисто так сделали, для кучи, а потом забыли... smile

Цитата(Ddddddelphi @ 13.1.2005, 13:14)
Саму кнопку, конечно, украсить возможно, но очень много писанины и новичку не всегда понятно что к чему писать. Поэтому предлагаю использовать не кнопку а коммпонент, который очень похож на кнопку и без проблем раскрашивается в любой цвет- Panel (на странице Standard). Чтобы этот компонент вёл себя как кнопка, присвойте свойству BevelOuter значение bvRaised и обработайте события MouseUp и MouseDown:
Это не очень хороший способ, т.к. панель чисто визуально отличается от кнопки (а в некоторых визуальных стилях может вообще очень сильно отличаться), такие кнопки будут смотреться не очень хорошо совместно с другими стандартными кнопками... Хотя кому-то может это и требуется...



--------------------
С уважением, г-н Посол.
PM   Вверх
Zero
Дата 13.1.2005, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

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



p0s0l судя по твоим словам я всё больше начинаю убеждатся что с самого начала я говорил верно насчёт того что компонент TButton, обсалютно не нужен, и никаких плюсов у него нету.
Это типа как ОС-UNIX, и ОС_Linux. smile
PM MAIL ICQ   Вверх
Alex
Дата 13.1.2005, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



Цитата(p0s0l @ 13.1.2005, 13:49)
Но опять же есть хоть и маленькая, но вероятность того, что Microsoft изобретет еще один механизм визуального отображения, более продвинутый чем теперешние визуальные стили, и тогда опять надо будет ждать новой версии Delphi...

Это практически наверняка


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Alex
Дата 14.1.2005, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



Вот как выглядело приложение созданное в D6:

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  ____________01.gif


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Akella
Дата 14.1.2005, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Alex @ 13.1.2005, 18:57)
Цитата (p0s0l @ 13.1.2005, 13:49)
Но опять же есть хоть и маленькая, но вероятность того, что Microsoft изобретет еще один механизм визуального отображения, более продвинутый чем теперешние визуальные стили, и тогда опять надо будет ждать новой версии Delphi...


Это практически наверняка


Я читал на www.winall.ru (точную страницу на помню), что в LongHorn совершенно другая и кардинально новая графическая подсистема (полность 3D и даже рабочий стол)
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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