Текущий архив: 2007.12.16;
Скачать: CL | DM;
Вниз
Выделение в ComboBoxEx Найти похожие ветки
← →
ggg (2007-09-24 09:09) [0]Проблема в том, что при выборе элемента в выпадающем списке, активная строка выделяется не полностью, а только на длину текста в ней. Пробывал перекрывать процедуру рисования элементов - не получилась, видимо там событие отличное от аналогичного в ComboBox. Может быть есть простое решение (свойство вроде FULLROWSELECT) или кто подскажет какое событие надо обрабатывать, чтобы самому нарисовать элементы?
← →
Вася Правильный (2007-09-24 11:19) [1]
> активная строка выделяется не полностью
и что в этом криминального? стандартное поведение
← →
Leonid Troyanovsky © (2007-09-24 11:45) [2]
> Вася Правильный (24.09.07 11:19) [1]
> и что в этом криминального? стандартное поведение
Видимо, имелся ввиду выпадающий список.
> ggg (24.09.07 09:09)
Что за компонент и почему б не взять стандартный?
--
Regards, LVT.
← →
Вася Правильный (2007-09-24 12:07) [3]
> почему б не взять стандартный?
да он и есть стандартный в семерке
← →
ggg (2007-09-24 12:27) [4]> Вася Правильный (24.09.07 11:19) [1]
>> активная строка выделяется не полностью
>и что в этом криминального? стандартное поведение
Абсолютно так же считаю, но заказчику не нравится, что стиль оформления простых выпадающих списков, отличается от стиля списков с картинками.
> Leonid Troyanovsky ©
Это стандартный компонент - TComboBoxEx. Более того, за его отрисовку отвечает не VCL, а система, почему и не получается просто переделать стандартный :(
← →
Вася Правильный (2007-09-24 12:35) [5]так поступи наоборот - используй обычный комбо со своейотрисовкой рисунков
← →
ggg (2007-09-24 13:19) [6]Боюсь, это уже не вариант, хотят именно выделение всей строки ;)
← →
Lacmus © (2007-09-24 13:20) [7]>ggg (24.09.07 09:09)
unit Unit73;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ImgList;
type
TMyComboBoxEx = class(TComboBoxEx)
procedure WMDrawItem(var aMessage: TWMDrawItem); message WM_DRAWITEM;
end;
TComboBoxEx = class(TMyComboBoxEx);
TForm73 = class(TForm)
ComboBoxEx1: TComboBoxEx;
ComboBox1: TComboBox;
ImageList1: TImageList;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form73: TForm73;
implementation
{$R *.dfm}
procedure TMyComboBoxEx.WMDrawItem(var aMessage: TWMDrawItem);
var
bFocused: Boolean;
Brush: HBrush;
begin
with aMessage.DrawItemStruct^ do begin
if (ItemState and ODS_COMBOBOXEDIT) = 0 then begin
bFocused := itemAction = ODA_FOCUS;
if bFocused then
itemAction := ODA_SELECT;
itemState := itemState and not ODS_FOCUS;
if (itemState and ODS_SELECTED) <> 0 then
Brush := CreateSolidBrush(ColorToRGB(clHighlight))
else
Brush := CreateSolidBrush(ColorToRGB(clWindow));
try
FillRect(hDC, rcItem, Brush)
finally
DeleteObject(Brush)
end
end else
bFocused := False;
inherited;
if bFocused then
DrawFocusRect(hDC, rcItem)
end;
end;
← →
ggg (2007-09-24 13:59) [8]> Lacmus ©
Спасибо =)
Страницы: 1 вся ветка
Текущий архив: 2007.12.16;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.042 c