Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбрать Radiobutton 
:(
    Опции темы
NeiL
Дата 29.1.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



оспода программисты. Проблема в том что нижеописанное необходимо сделать используя 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;

PM MAIL   Вверх
ivan219
  Дата 30.1.2008, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Код

procedure TForm1.Edit1Change(Sender: TObject);
const
  Ar: Array[0..2, 0..2] of Integer = (((0),(3),(6)),
                                      ((1),(4),(7)),
                                      ((2),(5),(8)));
var
  NumX, NumY, I: Integer;
begin
 NumX := StrToInt(Edit1.Text);
 NumY := StrToInt(Edit2.Text);
 if (NumX > -1) and (NumX < 4) and (NumY > -1) and (NumY < 4) then
  for I := 0 to ComponentCount - 1 do
   if (Components[I] is TRadioButton) then
    if (Components[I] as TRadioButton).Tag = Ar[NumX, NumY] then
     (Components[I] as TRadioButton).Checked := True;
end;


Это сообщение отредактировал(а) ivan219 - 30.1.2008, 01:10
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0792 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.