Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Вниз
Выбрать RadioButton Найти похожие ветки
← →
NeiL (2008-01-29 20:43) [0]Господа мастера. Проблема в том что нижеописанное необходимо сделать используя 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
Я как новичок в этом деле сделал так:
Объявил propertyproperty 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;
← →
EvS © (2008-01-29 21:18) [1]> Проблема в том что нижеописанное необходимо сделать используя
> tag (некогда не приходилось использовать раньше, просьба
> поделитесь советами).
Выясни сначала для себя, что такое tag, а потом уже будешь думать как его использовать.
← →
Virgo_Style © (2008-01-29 21:19) [2]Где-то я это уже видел...
← →
fics © (2008-01-29 23:45) [3]
> NeiL
> Я как новичок в этом деле сделал так:
Да какой же нафиг новичок, ты настоящий профи:)
← →
ketmar © (2008-01-30 01:17) [4]>[3] fics ©(29.01.08 23:45)
новичок, новичок. куча избыточного кода.
← →
Семеныч (2008-01-30 10:16) [5]> NeiL (29.01.08 20:43)
> нижеописанное необходимо сделать используя tag
Tag имеет тип integer. Значит, занимает 4 байта. Никто не запрещает нам использовать эти 2 байта не целиком, а как 2 двухбайтовых значения. Вот они, Ваши координаты, упакованные в Tag.
Сама упаковка и распаковка, судя по коду, для Вас не проблема, но на всякий случай:
var
X, Y: word;
Tag := (Y shl 16) or X;
Y := Tag shr 16;
X := Tag and $FFFF;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c