Главная страница
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.013 c
1-47400
vixic
2002-07-02 17:21
2002.07.15
Обращение к DLL


7-47821
Bboy
2002-04-21 08:40
2002.07.15
Как запустить файл через программу?


14-47702
Сатир
2002-06-18 19:58
2002.07.15
Опа, а что это за глюк такой?


6-47628
нету логина...
2002-05-02 20:42
2002.07.15
TSocket... надо передать Canvas по сети... ПОМОГИТЕ!!!


1-47283
Floyd
2002-06-30 11:43
2002.07.15
ListBox