怎么把直线类型画相应的直线段,加入到TComboBox中,以便画图时选择直线类型
如何把直线类型画相应的直线段,加入到TComboBox中,以便画图时选择直线类型。
做了一个画图程序,在画直线时,需要选择不同样式的类型,请问如何把各种直线类型画成相应的直线段加入到TComboBox中,以便画图时选择。
------解决方案--------------------
把ComboBox的Style属性设为csOwnerDrawFixed,写OnDrawItem事件,在Items中随便输入几行文字,但行数不能大于下面的数组大小。
TPenStyle penA[]={psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFrame, psUserStyle, psAlternate};
void __fastcall TForm5::ComboBox2DrawItem(TWinControl *Control, int Index, TRect &Rect,
TOwnerDrawState State)
{
((TComboBox *)Control)->Canvas->Pen->Color = clRed;
((TComboBox *)Control)->Canvas->Pen->Style = penA[Index];
((TComboBox *)Control)->Canvas->Pen->Width = 1;
((TComboBox *)Control)->Canvas->MoveTo(Rect.Left, Rect.Top+Rect.Height()/2);
((TComboBox *)Control)->Canvas->LineTo(Rect.Right,Rect.Top+Rect.Height()/2);
}
做了一个画图程序,在画直线时,需要选择不同样式的类型,请问如何把各种直线类型画成相应的直线段加入到TComboBox中,以便画图时选择。
------解决方案--------------------
把ComboBox的Style属性设为csOwnerDrawFixed,写OnDrawItem事件,在Items中随便输入几行文字,但行数不能大于下面的数组大小。
TPenStyle penA[]={psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFrame, psUserStyle, psAlternate};
void __fastcall TForm5::ComboBox2DrawItem(TWinControl *Control, int Index, TRect &Rect,
TOwnerDrawState State)
{
((TComboBox *)Control)->Canvas->Pen->Color = clRed;
((TComboBox *)Control)->Canvas->Pen->Style = penA[Index];
((TComboBox *)Control)->Canvas->Pen->Width = 1;
((TComboBox *)Control)->Canvas->MoveTo(Rect.Left, Rect.Top+Rect.Height()/2);
((TComboBox *)Control)->Canvas->LineTo(Rect.Right,Rect.Top+Rect.Height()/2);
}