Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > DevExpress TcxComboBox разноцветные строчки


Автор: Etar 7.8.2008, 14:25
Привет!

Пытаюсь сделать так чтобы нужные мне строчки в списке оказались затененными (и вообще желательно бы, чтобы их можно было только видеть и нельзя было выбирать).

Пытаюсь реализовать перекраску через событие DrawItem выходит так, что текущая строчка в списке перекрасилась, а при открытии самого списка все начинает глючить и ни один элемент не рисуется.


Код

procedure TForm1.REGIONCOMBOBOXPropertiesDrawItem(AControl: TcxCustomComboBox;
  ACanvas: TcxCanvas; AIndex: Integer; const ARect: TRect;
  AState: TOwnerDrawState);
begin
   ComboColor2(AControl, AIndex, ARect, clRed, clGreen, clBlue);
end;

procedure ComboColor2(C: TWinControl; I : Integer; R : TRect; EColor, OColor, FColor : TColor);
 begin
  with (C as TcxCustomComboBox) do
   begin
      if Odd(I) then Canvas.Brush.color := OColor
                    else Canvas.Brush.color := EColor;
      Canvas.FillRect(R);
      Canvas.Font.Color := FColor;
      Canvas.Canvas.TextOut(R.Left,R.Top,Properties.Items[I]);
    end;
 end;



Подскажите пожалуйста, в чем дело, почему глюки?

Спасибо

Автор: Seeker 7.8.2008, 21:28
Почему ошибки понятно. Ты вместо канвы попапа на канве комбика пытаешься рисовать.
Нарисовать задисэйблиный элемент можно примерно так:
Код

procedure TForm1.cxComboBox1PropertiesDrawItem(AControl: TcxCustomComboBox;
  ACanvas: TcxCanvas; AIndex: Integer; const ARect: TRect;
  AState: TOwnerDrawState);
begin
  ACanvas.DrawTexT(AControl.Properties.Items[AIndex], ARect, 0, False);
end;

А вот как запретить ему еще и выбираться пока не соображу smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)