Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
Внизперерисовка 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c