:: Visual Foxpro, Foxpro for DOS
CheckBox - раскраска
bolotinsn
Автор

Сообщений: 46
Дата регистрации: 30.04.2010
Уважаемые знатоки, подскажите, пожалуйста!
На форме есть CheckBox. У него: BackStyle=0-Transparent Enabled=.F. Style=0-Standart
Стандартный объект. На сереньком фоне серенькая надпись, серенькое окошко с серенькой галочкой.
Пишу: DisabledBackColor=210,210,255 DisabledForeColor=255,255,255

1 Вопрос: окошко и галочка цвет не изменили, они остались серенькими! Почему? Как изменить цвет именно этих элементов объекта?

2 Вопрос: почему толщина линии надписи толше, чем на Label и TextBox? Шрифт и размер шрифта совпадают, FontBold везде .F.

Если кто-нибудь может, подскажите! Заранее благодарен.
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
bolotinsn
Автор

Сообщений: 46
Дата регистрации: 30.04.2010
Извините, забыл.
WinXP Ru Prof SP3, VFP 9.0 SP3+Русификатор с сайта
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
bolotinsn
1 Вопрос: окошко и галочка цвет не изменили, они остались серенькими! Почему? Как изменить цвет именно этих элементов объекта?

Штатно никак.

bolotinsn
2 Вопрос: почему толщина линии надписи толше, чем на Label и TextBox? Шрифт и размер шрифта совпадают, FontBold везде .F.

Никакой разницы в начертании шрифтов подписи перечисленных объектов у себя, к примеру, не наблюдаю

bolotinsn
WinXP Ru Prof SP3, VFP 9.0 SP3+Русификатор с сайта

Win7 Ru Prof, VFP 9.0 SP3. Никакого руссификатора



Исправлено 2 раз(а). Последнее : Chemberzhy, 10.09.17 22:22
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
bolotinsn
Стандартный объект. На сереньком фоне серенькая надпись, серенькое окошко с серенькой галочкой.
Пишу: DisabledBackColor=210,210,255 DisabledForeColor=255,255,255

Несколько странно пытаться задавать цвет фона для прозрачного объекта.

bolotinsn
1 Вопрос: окошко и галочка цвет не изменили, они остались серенькими! Почему? Как изменить цвет именно этих элементов объекта?

Потому что эту часть элемента управления рисует система. В зависимости от своих настроек, и в частности "тем" (но даже если поддержка тем отключена - на уровне формы, или только чекбокса, всё равно будет использоваться системный вид чекбокса). Хочешь своё - используй картинки.
bolotinsn
2 Вопрос: почему толщина линии надписи толше, чем на Label и TextBox? Шрифт и размер шрифта совпадают, FontBold везде .F.
Она не толще. Но задав белый цвет (назачем, его вообще практически невозможно прочесть на штатном "сером" фоне!) и одновременно сделав элемент "выключенным", ты заставил фокс дополнительно к самой надписи сделать ей "тень" - при том тень именно белую (ну, м.б. просто "светлую", тут уж я не в курсе - всё одно работает сглаживание, и реального цвета пиксела не увидеть). Если для Label тоже задать Enabled=.F. и, соответственно, белый цвет для DisabledForeColor то получим в точности такое же "утолщение шрифта".

P.S. не в курсе что такое "Русификатор с сайта" - но пользоваться любыми модификациями что IDE фокса (назачем там русификация? Никогда не понимал), что рантайма, я бы не советовал. Поймаешь глюк - вряд ли кто тебе поможет, т.к. аудитория у такого рода поделок крайне мала, а шанс что там помимо собственно общеизвестных глюков фокса будут ещё и свои, дополнительные, достаточно велик.
Ну разве что под этой "русификацией" понимается переведенный chm хелп - он то "повредить" напрямую не сможет, только косвенно, некорректно что-то растолковав


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
bolotinsn
Автор

Сообщений: 46
Дата регистрации: 30.04.2010
Chemberzhy
Штатно никак.

А нештатно чио-нибудь можете предложить?
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
bolotinsn
Автор

Сообщений: 46
Дата регистрации: 30.04.2010
С прозрачностью я лохонулся. Однако, если фон подложки принимает цвет фона формы, значит (или нет?) что свойство BackColor должно распространять на активный элемент объекта? Или Билли рулит? Непонятно. Кстати, такая-же лобуда и с ComboBox, Spinner.

За тень спасибо. Точно бы не догадался. Кстати, в данном случае получилось убрать тень ColorSource=1, но согласен, зависит от настроек Windows.

Igor Korolyov
Хочешь своё - используй картинки.

Про это можно подробней?
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
bolotinsn
А нештатно чио-нибудь можете предложить?

Например, ActiveX какой сторонний, или вот так, например.
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
bolotinsn
Про это можно подробней?

Да элементарно в принципе. Например - в контейнер помещаются: картинка галочки любой раскраски для показа помеченного элемента, картинка для показа снятой пометки, плюс лейбл. В метод MouseDown прописывается смена видимости этих картинок, при желании - даже смена цветов лейбла.
Чтобы запоминать пометку - в Init контейнера можно создавать нужное свойство через AddProperty(), которое затем и менять по нажатию мышкой, также по нему и определять активную картинку при загрузке - с галочкой или без, в зависимости от значения, берущегося скажем из таблицы.
Данный контейнер можно также сохранить как визуальный класс VCX и кидать затем его экземпляры на форму.
Вообще создавать класс всегда удобнее, когда таких элементов несколько. Ну или на будущее может пригодиться.
Надпись в класс можно передавать через какое-то его свойство. Обычно я например использую свойства Tag и Comment, которые все равно нигде не применяются. В них удобно бывает вписывать параметры в размещенные на форме экземпляры визуального класса. Соответственно в Init контейнера прописывается что-то наподобие: this.lable1.Caption=this.Tag
Единственный нюанс - в контейнере клик мышкой по вложенным в нем элементам отрабатывает на этих элементах, т.е. не передается напрямую в метод MouseDown контейнера. Поэтому я обычно в методы MouseDown всех вложенных элементов просто прописываю однотипную передачу всех параметров клика по ним в соответствующий метод родителя: this.Parent.MouseDown(nButton,nShift,nXCoord,nYCoord), в котором и происходит основная обработка и смена картинок в данном случае.

Если есть необходимость менять цвета при неактивности - нужно будет добавить соответственно еще пару картинок.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 12.09.17 10:06
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Crispy
Да элементарно в принципе. Например - в контейнер помещаются: картинка галочки любой раскраски для показа помеченного элемента, картинка для ...

Куда попер-то буковки строчить.
По ссылке Че как раз это и сделано. Красиво и рабоче.
Конечно можно и поулучшать. Но начать именно с его решения.
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Crispy
Надпись в класс можно передавать через какое-то его свойство. Обычно я например использую свойства Tag и Comment, которые все равно нигде не применяются.
Зачем такое неочевидное решение, если можно просто добавить этому классу свойство Caption, ну или там cCaption если опасаешься использовать зарезервированные слова


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Igor Korolyov
Crispy
Надпись в класс можно передавать через какое-то его свойство. Обычно я например использую свойства Tag и Comment, которые все равно нигде не применяются.
Зачем такое неочевидное решение, если можно просто добавить этому классу свойство Caption, ну или там cCaption если опасаешься использовать зарезервированные слова

Ну и как ты его добавишь контейнеру, так, чтобы в его экземпляре на форме при визуальном редактировании можно было вписывать туда значение? Именно визуально!
Если бы можно было добавлять произвольные свойства еще и любому объекту, как это например сделано для формы - это было бы конечно шикарно. Но увы, визуальные объекты в фоксе - в этом отношении как бы лишенцы.
И таки совсем бы уж было замечательно если бы в них можно было добавлять еще и свои методы (так же точно, как в ту же форму). Но это понятно совсем уже из области фантастики.
Хотя по идее, никаких логических или структурных противоречий в работе подобное вызывать не должно было бы. Можно только предположить, что чисто в плане реализации для разработчиков подобное видимо было бы далеко не самым простым делом, почему оно и не было осуществлено.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Taran
Crispy
Да элементарно в принципе. Например - в контейнер помещаются: картинка галочки любой раскраски для показа помеченного элемента, картинка для ...

Куда попер-то буковки строчить.
По ссылке Че как раз это и сделано. Красиво и рабоче.
Конечно можно и поулучшать. Но начать именно с его решения.

А чо не попереть-то! \m/ Когда там перед тем было написано: "дерево вот такое!" "ActiveX какой сторонний".
А раз активекс, чего его смотреть. :al: Вот и написал - общую так сказать инструкцию. [sm128]
А ты прям попер буром. Что там не правильно что ли все написано? ;) Правильно же!
А буквы для того и существуют, чтобы ими писать. [sm128]

К тому же, не знаю кого как, а лично меня например всегда раздражает использование чужих велосипедов классов - я предпочитаю создавать свои с нуля, оно завсегда в итоге бывает надежнее и удобнее для себя. [sm128] Как минимум будешь уверен, что не вылезет какое-нибудь шило в задницу в самый неподходящий момент.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 13.09.17 08:02
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Crispy
Ну и как ты его добавишь контейнеру, так, чтобы в его экземпляре на форме при визуальном редактировании

При редактировании класса.
Menu->Class->New Property

Ну и методы аналогично.
Menu->Class->New Method

Crispy
И таки совсем бы уж было замечательно если бы в них можно было добавлять еще и свои методы (так же точно, как в ту же форму). Но это понятно совсем уже из области фантастики.
В классе создал метод. В экземпляре меняй. В чем проблема?

Или я не так понял?



Исправлено 1 раз(а). Последнее : Taran, 13.09.17 09:20
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Crispy
А чо не попереть-то! \m/ Когда там перед тем было написано: "дерево вот такое!" "ActiveX какой сторонний".
А раз активекс, чего его смотреть. :al: Вот и написал - общую так сказать инструкцию. [sm128]

Вот не надо ля-ля. ;)
У Сани Ч написано:
Цитата:
Например, ActiveX какой сторонний, или вот так, например.

Crispy
А ты прям попер буром. Что там не правильно что ли все написано? ;) Правильно же!
А буквы для того и существуют, чтобы ими писать. [sm128]

К тому же, не знаю кого как, а лично меня например всегда раздражает использование чужих велосипедов классов - я предпочитаю создавать свои с нуля, оно завсегда в итоге бывает надежнее и удобнее для себя. [sm128] Как минимум будешь уверен, что не вылезет какое-нибудь шило в задницу в самый неподходящий момент.

Да это понятно. Все правильно. Просто оно уже есть.
ТС на форуме 7 лет. Мизер постов и судя по вопросу не проф.
А ты ему идею на пол-страницу. Явно же не будет реализовывать. Я чисто для экономии твоей энергии.
Ну и несколько отвлек ты ТС от решения Че. Туда-туда подергается, да и бросит.
Хотя собственно и начинать не очень понятно зачем было. Стандартный интерфейс вполне стандартен.



Исправлено 1 раз(а). Последнее : Taran, 13.09.17 09:23
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Taran
Цитата:
Например, ActiveX какой сторонний, или вот так, например.

А вот и неправда! У него не было красного и черного. ;)
Так бы я заметил. А без этого проскочил. Точнее не доскочил, застряв на активексе. Да собственно про это я уже выше писал. Ты сам точно так же в итоге продемонстрировал невнимательность к написанному. [sm128]
Кроме того, если смотреть предложенный класс, там несколько меньше функционала, чем я предложил в описании. Так что, пусть даже автор и не прочтет и не примет к сведению, но возможно когда-нибудь, через много лет, кто-нибудь доселе неизвестный, найдя этот пост, таки прочтет и это ему поможет.

А вот кстати про добавление свойства таким макаром в готовый класс как-то не доводилось ранее. Так что за то благодарствуем!


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Crispy
Taran
Цитата:
Например, ActiveX какой сторонний, или вот так, например.

А вот и неправда! У него не было красного и черного. ;)
Так бы я заметил. А без этого проскочил. Точнее не доскочил, застряв на активексе. Да собственно про это я уже выше писал. Ты сам точно так же в итоге продемонстрировал невнимательность к написанному. [sm128]
Кроме того, если смотреть предложенный класс, там несколько меньше функционала, чем я предложил в описании. Так что, пусть даже автор и не прочтет и не примет к сведению, но возможно когда-нибудь, через много лет, кто-нибудь доселе неизвестный, найдя этот пост, таки прочтет и это ему поможет.

Да ну брось ты ерунду.
Красным выделил я для акцента. Черное было. Пост от Сани Че не редактировался. Он первозданен. Просто ты там не глянул.
Где я "продемонстрировал невнимательность" здесь или в другом месте? Конкретно!

То что меньше функционала или больше дело десятое. В решении сразу видно всю идею и есть красивые картинки.
Ежели начинать с нуля, то до результата будет гораздо дальше.

Какие там "через много лет". Апофиз уж близится.
В любом случае проще взять что-то рабочее и допилить.

++ добавчик




Исправлено 1 раз(а). Последнее : Taran, 13.09.17 10:55
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Crispy
Ну и как ты его добавишь контейнеру, так, чтобы в его экземпляре на форме при визуальном редактировании можно было вписывать туда значение? Именно визуально!
Сделав сей контейнер классом, естественно. Для контейнера на форме нельзя "визуально" добавить свойство, только программно (и вообще никак нельзя добавить метод) - но для контейнера который рисуется как класс - можно и свойства и методы добавлять, а потом, поместив экземпляр на форму (или в другой класс-контейнер) там успешно эти свойства и методы править. К сожалению в фоксе нет дизайн-тайм методов, и результат обработки таких свойств и таких методов во время "рисования" (в дизайн-тайм) не будет виден, но в рантайме всё заработает. Т.е. в кэтом конкретном случае прописывание Caption для контейнера не вызовет автоматическую установку Caption для вложенной надписи в режиме рисования формы. Не получится и "автоподогнать размер" в этом режиме, но во время работы кода всё будет ок.
Впрочем, есть "обходной манёвр". Если соорудить для такого класса "построитель" (aka Builder) то он вполне может "синхронно" менять и свойство класса и свойство вложенного внутрь него объекта - устраняя эту неприятную проблему - вроде всё как надо выставили в свойствах, а на экране "не то" рисуется...
Taran
Апофиз уж близится
Ты так не пугай! Замени лучше на апофеоз, а то невесть что можно подумать


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Igor Korolyov
Taran
Апофиз уж близится
Ты так не пугай! Замени лучше на апофеоз, а то невесть что можно подумать

Действительно есть ошибочка. Имелось ввиду "Апофис". ;)


Igor Korolyov
Не получится и "автоподогнать размер" в этом режиме, но ...

Не только и не совсем про "автоподогнать размер", но...
И чтобы "сквозная" установка caption работала соорудить и задействовать
procedure _container.caption_assign(tcCapt)
this.label.Caption = m.tcCapt
this.caption = m.tcCapt
* Ну и в Init`e контейнера можно
this.caption = this.caption



Исправлено 2 раз(а). Последнее : Taran, 13.09.17 13:25
Ratings: 0 negative/0 positive
Re: CheckBox - раскраска
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Taran
Действительно есть ошибочка. Имелось ввиду "Апофис".
Какой из оных? Все такие миляшки
[attachment 28319 Apophis.jpg]


Taran
И чтобы "сквозная" установка caption работала соорудить и задействовать
Так оно ж не для дизайн-тайма то...


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 12 (Гостей: 12)

© 2000-2024 Fox Club 
Яндекс.Метрика