Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.23;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
15-1202605179
Linker
2008-02-10 03:59
2008.03.23
Когда я пишу const aRecord в параметре функции, то туда передаётс


2-1204028136
Ванька
2008-02-26 15:15
2008.03.23
MSSqlServer2000


15-1202741305
БарЛог
2008-02-11 17:48
2008.03.23
Статья о передаче файлов потоком


6-1182958151
апвып
2007-06-27 19:29
2008.03.23
WebBrowser


2-1203502618
Ultimate
2008-02-20 13:16
2008.03.23
Возможно вовсе глупо звучит... но...