Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.01.2008, 21:07
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
По умолчанию RadioButton

Господа программисты. Проблема в том что нижеописанное необходимо сделать используя 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  
Старый 29.01.2008, 21:32
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
нижеописанное необходимо сделать используя tag .... Имеется RadioButton следующего вида, где [выравнивание по горизонтали; выравнивание по вертикали].
Необходимо ввести два числа (допустимыми значениями являются 0..2). На основании введенных чисел ЗаCheckedить Radiobutton, которому соответствуют координаты в [*;*].

Давай как-то проще! Уж сильно ты закрутил
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #3  
Старый 29.01.2008, 21:37
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
Радость

Цитата:
Сообщение от Yurk@
Давай как-то проще! Уж сильно ты закрутил

Вот и хотелось бы узнать как сделать проще, а то самому не нравится.
Ответить с цитированием
  #4  
Старый 29.01.2008, 21:41
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Да я о самой задаче говорю, а не о ее решении ....
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #5  
Старый 29.01.2008, 21:48
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

т.е. у тя есть РадиоБутон с тремя вариантами (по левому краю, по центру, по правому краю) ...
..... и те нужно на основании двух чисел (напр: Edit1 и Еdit2) поставить Check в нужном варианте!

Я правильно понял задачу?????
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #6  
Старый 29.01.2008, 21:49
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от Yurk@
Да я о самой задаче говорю, а не о ее решении ....
Задача и состоит в том, что сделать это необходимо именно так (используя радиобуттоны и получая из Ini фафла 2 [x, y] значения) и не как иначе.
Ответить с цитированием
  #7  
Старый 29.01.2008, 21:52
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от Yurk@
т.е. у тя есть РадиоБутон с тремя вариантами (по левому краю, по центру, по правому краю) ...
..... и те нужно на основании двух чисел (напр: Edit1 и Еdit2) поставить Check в нужном варианте!

Я правильно понял задачу?????

Все верно. Именно так.
Ответить с цитированием
  #8  
Старый 29.01.2008, 21:55
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
По умолчанию

[0,0] [0, 1] [0,2]
[1,0] [1, 1] [1,2]
[2,0] [2, 1] [2,2] <- (выбраться последний)
- это радиобуттоны
при вводе например значений [2,2] должен быбраться (см выше)
Ответить с цитированием
  #9  
Старый 29.01.2008, 22:03
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Тогда так:
Код:
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  
Старый 29.01.2008, 22:16
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
Радость

Цитата:
Сообщение от Yurk@
Тогда так:
Код:
 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; 

Спасибо за вариант, но он не совсем подходит т.к. все необходимо сделать в 2-x property (не в эдитах) (x, y соответственно грузить в соответствующие проперти). (и тут возникает вопрос: как это все оптимизировать. Может быть сделать отдельну функцию которая будет на основании проперти выбирать требуемый радиобуттон. Но тут же еще один вопрос откуда ее вызывать)
Ответить с цитированием
  #11  
Старый 29.01.2008, 22:26
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
...т.к. все необходимо сделать в 2-x property...
что ты имеешьь ввиду под этой фразой? (может эт я туплю ).
и зачем именно так??
... + как ты собираешся вводить данные ?
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #12  
Старый 29.01.2008, 22:38
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от Yurk@
что ты имеешьь ввиду под этой фразой? (может эт я туплю ).
и зачем именно так??
... + как ты собираешся вводить данные ?

Имеется Ini файл содержащий 2 параметра:
ImageAlignHorizontal
ImageAlignVertical

По условию необходимо
Считать и Ini файла параметры (тут вопросов не возникает, все работает корректно): Параметр ImageAlignHorizontal занести в
property ImageAlignHorizontal, Параметр ImageAlignVertical занести в
property ImageAlignVertical

Проперти должны иметь процедуры Get и Set.

Процедура Get как я описывал в самом начале так и остается (т.е. работает корректно), а вот в процедуры Set надо изменить и сцентролизовать быборку требуемого radiobutton в одной отдельной процедуре (а не в процедурах Set). (ПОТОМУ ЧТО В МОЕМ ВАРИАНТЕ ВОЗМОЖНА ОШИБКА Т К В МОЕМ СЛУЧАЕ РАСПОЛОЖЕНИЕ ПО ВЕРТИКАЛИ ОПРЕДЕЛЯЕТСЯ ИСХОДЯ И ПОЛОЖЕНИЯ ПО ГОРИЗОНТАЛИ И ЗДЕСЬ ВОЗМОЖЕН ВАРИАНТ: ЧТО ЕСЛИ ПЕРВЫМ ПРИСВОИТСЯ ЗНАЧЕНИЕ ПО ВЕРТИКАЛИ).
Ответить с цитированием
  #13  
Старый 30.01.2008, 00:11
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
.... Имеется RadioButton следующего вида, где [выравнивание по горизонтали; выравнивание по вертикали].
Необходимо ввести два числа (допустимыми значениями являются 0..2). На основании введенных чисел ЗаCheckedить Radiobutton, которому соответствуют координаты в [*;*].

Так а в чем собственно проблемма?
Твой вопрос мы решили. Те осталось только довести процедуру до нужной кондиции (т.к. я в твоем последнем посте так ниче и не понял).
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #14  
Старый 30.01.2008, 07:22
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
RadioGroup1.ItemIndex := Y  + X * 3;
Не хотите использовать RadioGroup - заведите массив из TRadioButtons.
Ответить с цитированием
  #15  
Старый 30.01.2008, 09:41
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Наговорили то уже, задача яйца ломанного не стоит Пример во вложении.
Вложения
Тип файла: 7z RButtons.7z (2.6 Кбайт, 13 просмотров)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025