![]() |
|
#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; |
#2
|
||||
|
||||
![]() Цитата:
Давай как-то проще! Уж сильно ты закрутил ![]() Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#3
|
|||
|
|||
![]() Цитата:
Вот и хотелось бы узнать как сделать проще, а то самому не нравится. |
#4
|
||||
|
||||
![]() Да я о самой задаче говорю, а не о ее решении ....
![]() Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#5
|
||||
|
||||
![]() т.е. у тя есть РадиоБутон с тремя вариантами (по левому краю, по центру, по правому краю) ...
..... и те нужно на основании двух чисел (напр: Edit1 и Еdit2) поставить Check в нужном варианте! Я правильно понял задачу????? Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#6
|
|||
|
|||
![]() Цитата:
|
#7
|
|||
|
|||
![]() Цитата:
Все верно. Именно так. |
#8
|
|||
|
|||
![]() [0,0] [0, 1] [0,2]
[1,0] [1, 1] [1,2] [2,0] [2, 1] [2,2] <- (выбраться последний) - это радиобуттоны при вводе например значений [2,2] должен быбраться (см выше) |
#9
|
||||
|
||||
![]() Тогда так:
Код:
procedure TForm1.Button1Click(Sender: TObject); var t:string; begin t:=Edit1.Text+Edit2.Text; Case StrToInt(t) of 00 : RadioButton1.Checked:=True; 01 : RadioButton2.Checked:=True; //.... 22 : RadioButton9.Checked:=True; else ShowMessage('....'); end; end; ЗЫ: А почему ты не хочешь вместо RadioButton использовать RadioGroup ???? Мне кажеться, так будет намного удобнее! ![]() Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 29.01.2008 в 22:10. |
#10
|
|||
|
|||
![]() Цитата:
Спасибо за вариант, но он не совсем подходит т.к. все необходимо сделать в 2-x property (не в эдитах) (x, y соответственно грузить в соответствующие проперти). (и тут возникает вопрос: как это все оптимизировать. Может быть сделать отдельну функцию которая будет на основании проперти выбирать требуемый радиобуттон. Но тут же еще один вопрос откуда ее вызывать) ![]() ![]() |
#11
|
||||
|
||||
![]() Цитата:
![]() и зачем именно так?? ... + как ты собираешся вводить данные ? Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#12
|
|||
|
|||
![]() Цитата:
Имеется Ini файл содержащий 2 параметра: ImageAlignHorizontal ImageAlignVertical По условию необходимо Считать и Ini файла параметры (тут вопросов не возникает, все работает корректно): Параметр ImageAlignHorizontal занести в property ImageAlignHorizontal, Параметр ImageAlignVertical занести в property ImageAlignVertical Проперти должны иметь процедуры Get и Set. Процедура Get как я описывал в самом начале так и остается (т.е. работает корректно), а вот в процедуры Set надо изменить и сцентролизовать быборку требуемого radiobutton в одной отдельной процедуре (а не в процедурах Set). (ПОТОМУ ЧТО В МОЕМ ВАРИАНТЕ ВОЗМОЖНА ОШИБКА Т К В МОЕМ СЛУЧАЕ РАСПОЛОЖЕНИЕ ПО ВЕРТИКАЛИ ОПРЕДЕЛЯЕТСЯ ИСХОДЯ И ПОЛОЖЕНИЯ ПО ГОРИЗОНТАЛИ И ЗДЕСЬ ВОЗМОЖЕН ВАРИАНТ: ЧТО ЕСЛИ ПЕРВЫМ ПРИСВОИТСЯ ЗНАЧЕНИЕ ПО ВЕРТИКАЛИ). |
#13
|
||||
|
||||
![]() Цитата:
Так а в чем собственно проблемма? Твой вопрос мы решили. Те осталось только довести процедуру до нужной кондиции (т.к. я в твоем последнем посте так ниче и не понял). Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#14
|
|||
|
|||
![]() Код:
RadioGroup1.ItemIndex := Y + X * 3; |
#15
|
||||
|
||||
![]() Наговорили то уже, задача яйца ломанного не стоит
![]() |