Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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

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

Объявил 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.046 c
11-1184062837
nikfel
2007-07-10 14:20
2008.02.24
Помогите перевести код для выключения.


2-1201541016
Inslave
2008-01-28 20:23
2008.02.24
Ini + checbox


2-1201594285
Владимир Ка.
2008-01-29 11:11
2008.02.24
Визуальная компонента


2-1201623567
Lex-85
2008-01-29 19:19
2008.02.24
Edit и CoolBar


15-1201091326
Bober_crazy
2008-01-23 15:28
2008.02.24
Ошибка 530 Authentication failed, sorry





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский