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

Вниз

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

 
nimble ©   (2002-07-01 07:26) [0]

В списке есть следующие записи:
111
222
333
444
Как сделать так, чтобы у строки "333" цвет шрифта был, допустим, красный?


 
tovSuhov ©   (2002-07-01 07:42) [1]

Обрабатывай OnDrawItem...


 
nimble ©   (2002-07-01 07:52) [2]

А что там конкретно писать?


 
tovSuhov ©   (2002-07-01 08:10) [3]

Ну что-то типа:
if ComboBox1.Items.Strings[Index] = "333"
then
begin
ComboBox1.Canvas.Font.Color = clRed;
end;


 
nimble ©   (2002-07-01 08:40) [4]

Как закрасить я разобрался:
1. свойстово Style устанавливаем в csDropDown;
2. if ComboBox1.Items[index]="111" then ComboBox1.Canvas.Font.Color:=clRed;
ComboBox1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,ComboBox1.Items[Index]);


А теперь возникла другая проблема:( Когда меняешь свойство Style, то пропадает возможность вводить данные с клавиатуры. Че делать !?


 
tovSuhov ©   (2002-07-01 09:11) [5]

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


 
Игорь Шевченко ©   (2002-07-01 10:07) [6]

Когда у ComboBox установлен один из стилей csOwnerDrawFixed, csOwnerDrawVariable, то возможность ввода с клавиатуры пропадает и отсается только возможность выбора из списка. Microsoft объясняет это тем, что тем, что стандартный Edit не имеет возможности отрисовки пользователем его содержимого, а так как заранее неизвестно, что именно пользователь будет рисовать, то окно Edit ComboBox"а меняется на окно Static, которое отрисовку пользователем поддерживает, но не поддерживает ввод.

Не самое плохое решение - имитация ComboBox"а путем 3-х компонент - TEdit, TSpeedButton и TListBox. При этом ListBox рисуется пользователем, а в Edit, как обычно вводятся данные.
Второй способ более сложный и требует написания нового компонента, наследника от TComboBox и изменения оконной процедуры его окна ListBox. Пример такого способа можно посмотреть на http://www.delphikingdom.com/treasury/combo.htm.
Можно также использовать TComboBoxEx, если версия comctl32.dll позволяет его использовать - у него возможностей больше. Его поддержка добавлена в Delphi 6.

С уважением,


 
nimble ©   (2002-07-02 00:52) [7]

->Игорь Шевченко
Спасибо!!!



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

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
3-47151
mrgrin
2002-06-25 09:18
2002.07.15
Как добавить строку в DBGrid?


4-47871
Wizard_Ex
2002-05-10 12:33
2002.07.15
Немодальная форма и DLL =>


1-47570
AlexanderSK
2002-06-27 12:39
2002.07.15
TBDEClientDataSet в Delphi6


1-47378
MPro
2002-07-02 12:48
2002.07.15
Позарез надо изменить размер ячеек и сделать рамку в Excel!!


1-47355
MsGuns
2002-06-27 15:27
2002.07.15
Не хватает Борланд. и Виндузных иконок