Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.005 c