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

Вниз

перерисовка combobox   Найти похожие ветки 

 
Nick87   (2008-09-23 15:57) [0]

помогите с кодом перерисовки combobox.

procedure TForm1.cmp_ComboBoxDrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var
 C: TControlCanvas;
 R: TRect;
begin
 // ...
 
C.TextOut(20, 3, cmp_ComboBox.Items[Index]);
 C.StretchDraw(R, B);

//. ..
end;

при открытии выпадающего списка ничего не перерисовывается остаеться белая область помогите исправить


 
Palladin ©   (2008-09-23 15:59) [1]

стиль то поменял?


 
Nick87   (2008-09-23 16:03) [2]

стоит csOwnerDrawVariable


 
clickmaker ©   (2008-09-23 16:04) [3]

а почему именно 20, 3?


 
Nick87   (2008-09-23 16:06) [4]

там еще должно отрисовываться изовражение после которого следует текст.


 
clickmaker ©   (2008-09-23 16:07) [5]

и непонятно, причем тут контролканвас?
как она получается?
в общем, мало кода


 
Поросенок Винни-Пух ©   (2008-09-23 16:09) [6]

И откуда взялась R (ничем не инициализированное) если в обработчик для рисования передано Rect?


 
Nick87   (2008-09-23 16:09) [7]

Вот наброски


procedure TForm1.cmp_ComboBoxDrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var
 J: TJPEGImage;
 B: TBitmap;
 C: TControlCanvas;
 R: TRect;
begin
 J := TJPEGImage.Create;
 J.LoadFromFile(ComboBox1.Items[Index]);
 B := TBitmap.Create;
 B.Height := 16;
 B.Width := 16;
 B.Canvas.StretchDraw(B.Canvas.ClipRect, J);

 R.Left := 3;
 R.Top := 3;
 R.Right := 16;
 R.Bottom := 16;

 C := TControlCanvas.Create;
 C.Control := Control;
 C.TextOut(20, 3, ComboBox1.Items[Index]);
 C.StretchDraw(R, B);
end;


 
Поросенок Винни-Пух ©   (2008-09-23 16:10) [8]

procedure TForm1.cmp_ComboBoxDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);


 
Nick87   (2008-09-23 16:13) [9]


> Поросенок Винни-Пух ©   (23.09.08 16:10) [8]
> procedure TForm1.cmp_ComboBoxDrawItem(Control: TWinControl;
>  Index: Integer; Rect: TRect; State: TOwnerDrawState);


Если передавать в StrechDraw параметр Rect из процедуры то картинка растянется по всей длине,  а мне нужно чтобы она была оределенного размера (скажем 16x16) после которой следовал бы текст


 
Anatoly Podgoretsky ©   (2008-09-23 16:13) [10]

> Nick87  (23.09.2008 15:57:00)  [0]

R не инициализирован
Неизвестная переменная В


 
Anatoly Podgoretsky ©   (2008-09-23 16:14) [11]

> Nick87  (23.09.2008 16:09:07)  [7]

Наброски неинтересны, зачем нам посторонний код?


 
Поросенок Винни-Пух ©   (2008-09-23 16:15) [12]

Если передавать в StrechDraw параметр Rect из процедуры то картинка растянется по всей длине,  а мне нужно чтобы она была оределенного размера (скажем 16x16) после которой следовал бы текст

<Цитата>


Рисовать надо "здесь" на переданном рект"е, а не "там"

R.Left := 3;
R.Top := 3;
R.Right := 16;
R.Bottom := 16;


Зашибись.
Это смещения относительно столба или обеда?


 
clickmaker ©   (2008-09-23 16:15) [13]

а почему не TComboBox(Control).Canvas ?



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
2-1222254838
@!!ex
2008-09-24 15:13
2008.11.02
Не получается правильно поставить Hook на нажатие клавиши...


2-1222249662
Gars
2008-09-24 13:47
2008.11.02
как получить скриншут


2-1222116408
ShyricK
2008-09-23 00:46
2008.11.02
Вопрос по функционированию ЭВМ (дешифратор)


15-1221176987
Servy
2008-09-12 03:49
2008.11.02
Умножение через сложение


1-1201253922
newbie2
2008-01-25 12:38
2008.11.02
странная ситуация с FastReport