![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правое выравнивание текста в компоненте Combobox [D7, XP]
Sw © (2009-05-19 09:15:00)необходимо установить правое выравнивание текста в компоненте Combobox при значении св-ва Style=csSimple Помогите, пожалуйста.
Sw (2009-05-19 11:58:00) [1]ай...наверно...так пойдет
procedure TCmbBoxRightText.CreateParams(var Params: TCreateParams);
begin
inherited;
if Style=csSimple then
Params.ExStyle := Params.ExStyle or WS_EX_RIGHT;
end;
Sw (2009-05-19 11:28:00) [2]извините, но мне не нужен csOwnerDrawVariable, а нужны только csSimple и csDropDownList . с OnDrawItem не получится.
Игорь (2009-05-19 11:16:00) [3]
> Sw (19.05.09 10:49) [3]
Это уже в OnDrawItem примерно так
ComboBox1.Style:= csOwnerDrawVariable;
...
var
ARect: TRect;
begin
if (odSelected in State) then
begin
ComboBox1.Canvas.Brush.Color:= clHighlight;
ComboBox1.Canvas.Pen.Color:= clHighlight;
ComboBox1.Canvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
end
else
begin
ComboBox1.Canvas.Brush.Color:= clWhite;
ComboBox1.Canvas.Pen.Color:= clWhite;
ComboBox1.Canvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
end;
ARect:= Classes.Rect(Rect.Left, Rect.Top + 2, Rect.Right - 3, Rect.Bottom);
DrawText(ComboBox1.Canvas.Handle, PChar(ComboBox1.Items[Index]), Length(ComboBox1.Items[Index]), ARect, DT_RIGHT);
Sw (2009-05-19 10:49:00) [4]т.е. создаю программно несколько combobox с разным свойством Style, а текст у всех должен быть по правому краю
Sw (2009-05-19 10:44:00) [5]Спасибо большое, работает. А можно ли так, чтобы только текст выравнивался по правому краю? Дело в том, что в коде я меняю свойство Style на csDropDownList и тогда стрелка выбора combobox'a находится слева.
{RASkov} (2009-05-19 10:20:00) [6]> [0] Sw (19.05.09 09:15)
procedure TMyRightComboBox.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_RIGHT;
end;