Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];

Вниз

ComboBox   Найти похожие ветки 

 
серж   (2008-02-20 08:54) [0]

Есть обычный ComboBox, csOwnerDrawVariable, заполненный например на три пункта. А теперь если щелкнуть по нему, посмотреть на выпадающее меню и после щелкнуть на любой части формы, то в ComboBox отсается по краям черная рамка.

Как избавиться от нее?


 
{RASkov} ©   (2008-02-20 09:43) [1]

> [0] серж   (20.02.08 08:54)
> Как избавиться от нее?

Так тыж сам его(ComboBox) рисуешь

> csOwnerDrawVariable


 
серж   (2008-02-20 09:55) [2]

Брр... ну я это понимаю, но я не понимаю откуда появляется такая рамка? Я не рисую эту рамку сам.

Такой "фокус" происходит на ComboBox, даже без обработки OnDrawItem. Голый ComboBox, csOwnerDrawVariable - появляется рамка. Как от нее избавиться?


 
{RASkov} ©   (2008-02-20 10:01) [3]

> [2] серж   (20.02.08 09:55)
> но я не понимаю откуда появляется такая рамка

А я вот не понимаю, что там вообще за рамка у тебя :(
Брось кодом, где рисуешь комбик....


 
серж   (2008-02-20 10:10) [4]

В том то и дело, что даже ничего не рисуя в режиме csOwnerDrawVariable получается рамка.

Пример: брось на форму TComboBox, установи его в csOwnerDrawVariable, заполни Items на пару пунктов.

Все, запускай: теперь нажми на стрелку выпадающего списка, проведи мышкой по пунктам, пусть они подсветятся (не нажимай на них), а потом просто кликни по форме. В итоге - получается рамка.


 
{RASkov} ©   (2008-02-20 10:14) [5]

> [4] серж   (20.02.08 10:10)
> Пример: брось на форму TComboBox.....

Ничего криминального у меня нет....)

Может ты имеешь в виду фокус ввода? ...пунктирную рамку в 1 px
ЗЫ У меня тоже D7)


 
серж   (2008-02-20 10:19) [6]

А темы в windows: включены или отключены?

Снял скриншот рамки:
http://img149.imageshack.us/img149/3356/24993076eu6.jpg


 
{RASkov} ©   (2008-02-20 10:26) [7]

> [6] серж   (20.02.08 10:19)
> А темы в windows: включены или отключены?

Включена - стандартная

> Снял скриншот рамки:

Не уверен, но походу это фокус ввода. Проверь щелкнув по другому контролу, получающему фокус, потом опять по комбику, можно не раскрывая...

ЗЫ: Фокус ввода рисуется в приватном методе:
procedure TCustomComboBox.CNDrawItem(var Message: TWMDrawItem);
....
if odFocused in State then DrawFocusRect(hDC, rcItem);:


 
oldman ©   (2008-02-20 10:32) [8]

У тебя поле пустое.

А теперь проведи эксперимент:
1. Выбери итем в комбобоксе.
2. Щелкни на форму куда-нибудь.
3. Открой комбобокс и щелкyи в любое место формы.

Результат тебя поразит. :)))


 
серж   (2008-02-20 11:12) [9]

Да, это оказался фокус. Я для полной уверенности эксперимента удалил из TCustomComboBox момент рисования фокуса (DrawFocusRect), - все, эта рамка пропала, как впрочем и нормальный фокус.

Но все равно я не понимаю, отчего он рисует такой черный фокус, вместо традиционного. И как от этого корректно избавляться.


> 1. Выбери итем в комбобоксе.
> 2. Щелкни на форму куда-нибудь.
> 3. Открой комбобокс и щелкyи в любое место формы.


Если выбрать элемент - то все ок, будет нормальный фокус нарисован. А вот с пустым - получается рамка.

Я хочу избавиться от этого веселого черного фокуса.


 
oldman ©   (2008-02-20 11:13) [10]

А ты его не делай пустым :)))


 
серж   (2008-02-20 11:27) [11]

Я не понимаю. У меня все данные в Items - заполненные, там: 1, 2, 3, 4, 5; "пустых" значений я не вводил.


 
oldman ©   (2008-02-20 11:29) [12]

При старте программы меняй ItemIndex


 
серж   (2008-02-20 13:14) [13]

Ну ItemIndex это я понял конечно, но мне как раз не хочется делать при старте уже выбранный элемент.

Есть ещё идеи, как избавиться от лишнего черного фокуса?

У меня конечно есть такая малость безумная идея - сделать своего наследника TCustomComboBox и попробовать все же как-то исправлять фокус - но я даже не знаю в чем может быть проблема черной рамки.


 
Leonid Troyanovsky ©   (2008-02-20 19:46) [14]


> серж   (20.02.08 13:14) [13]

> проблема черной рамки.

На самом деле - это знак.
Скажем,  черная метка.

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
2-1203747829
SKIPtr
2008-02-23 09:23
2008.03.23
Работать с окнами по составленному сценарию


2-1203931873
md10
2008-02-25 12:31
2008.03.23
как переменной приравнять строку содержащую апостраф


15-1202824478
Iam
2008-02-12 16:54
2008.03.23
Бесплатная междугородняя IP-телефония


3-1193337794
DiX
2007-10-25 22:43
2008.03.23
Изменения отображения в DBGrid


2-1203870038
Igor23
2008-02-24 19:20
2008.03.23
ExcelXP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский