![]() |
|
#1
|
|||
|
|||
![]() Господа программисты. Проблема в том что нижеописанное необходимо сделать используя tag (некогда не приходилось использовать раньше, просьба поделитесь советами). Имеется 9 RadioButton следующего вида, где [выравнивание по горизонтали; выравнивание по вертикали]. Необходимо ввести два числа (допустимыми значениями являются 0..2). На основании введенных чисел ЗаCheckedить Radiobutton, которому соответствуют координаты в [*;*].
[0;0] [1;0] [2;0] O O O [0;1] [1;1] [2;1] O O O [0;2] [1;2] [2;2] O O O Я как новичок в этом деле сделал так: Объявил property property param_AlignHorz: Integer read GetAlignHorz write SetAlignHorz; property param_AlignVert: Integer read GetAlignHorz write SetAlignVert Обработчики function Tform_SetupImage.GetAlignHorz: Integer; begin if rb_LeftTop.Checked or rb_LeftCenter.Checked or rb_LeftBottom.Checked then Result := 0 else if rb_CenterTop.Checked or rb_CenterCenter.Checked or rb_CenterBottom.Checked then Result := 1 else if rb_RightTop.Checked or rb_RightCenter.Checked or rb_RightBottom.Checked then Result := 2; end; function Tform_SetupImage.GetStampAlignVert: Integer; begin if rb_LeftTop.Checked or rb_CenterTop.Checked or rb_RightTop.Checked then Result := 0 else if rb_LeftCenter.Checked or rb_CenterCenter.Checked or rb_RightCenter.Checked then Result := 1 else if rb_LeftBottom.Checked or rb_CenterBottom.Checked or rb_RightBottom.Checked then Result := 2; end; // ************************* procedure Tform_SetupImage.SetAlignHorz(const Value: Integer); var OldValue, NewValue: Integer; begin NewValue := Max(0, Min(2, Value)); if param_StampAlignHorz <> NewValue then begin OldValue := param_StampAlignHorz; case NewValue of 0: rb_LeftTop.Checked := True; 1: rb_CenterTop.Checked := True; 2: rb_RightTop.Checked := True; end; StampAlignHorzChanged(OldValue); end; end; procedure Tform_SetupImage.SetAlignVert(const Value: Integer); var OldValue, NewValue: Integer; begin NewValue := Max(0, Min(2, Value)); if param_StampAlignVert <> NewValue then begin OldValue := param_StampAlignVert; case param_StampAlignHorz of 0: case NewValue of 0: rb_LeftTop.Checked := True; 1: rb_LeftCenter.checked := True; 2: rb_LeftBottom.Checked := True; end; 1: case NewValue of 0: rb_CenterTop.Checked := True; 1: rb_CenterCenter.Checked := True; 2: rb_CenterBottom.Checked := True; end; 2: case NewValue of 0: rb_RightTop.Checked := True; 1: rb_RightCenter.Checked := True; 2: rb_RightBottom.Checked :=True; end; end; StampAlignVertChanged(OldValue); end; end; |