Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

Выбрать 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

Я как новичок в этом деле сделал так:

Объявил 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;


 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
2-1201491838
Shpux
2008-01-28 06:43
2008.02.24
Закрыть приложение - Excel


2-1201674470
vegarulez
2008-01-30 09:27
2008.02.24
Как обойти вызов соединения при использовании:


2-1201352975
tarasoff
2008-01-26 16:09
2008.02.24
dbf + delphi


2-1201546095
noi
2008-01-28 21:48
2008.02.24
перевести данные из pChar в array of Byte


2-1201450575
Kiril
2008-01-27 19:16
2008.02.24
Чем заменить DBGrid?