Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 13:35   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос Работа с UpDown

Здравствуйте. Возникла необходимость сделать счетчик. Поясню. Есть Edit1 с начальным значением 00. Нужно, используя компонент UpDown, увеличивать или уменьшать это значение. То есть, например, нажимаю на стрелочку вверх, значение увеличивается по каждому нажатию на 01, 02, 03 и т.д, а если уменьшаю, то, например, от значения 09 значение в Edit1-e уменьшается на 01, т.е. 08,07 и т.д. до 00. Как это можно реализовать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 17.03.2010, 14:18   #2
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Может как-то так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if StrToInt(Copy(Edit1.Text, 2, Length(Edit1.Text))) > 0 then
    Edit1.Text := '0' + IntToStr(StrToInt(Copy(Edit1.Text, 2, Length(Edit1.Text))) - 1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text := '0' + IntToStr(StrToInt(Copy(Edit1.Text, 2, Length(Edit1.Text))) + 1);
end;
Ре:

вот проект добавил
Вложения
Тип файла: rar UpDown.rar (4.3 Кб, 27 просмотров)
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 17.03.2010 в 14:20.
Marsel737 вне форума Ответить с цитированием
Старый 17.03.2010, 14:33   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Marsel737, респект! Спасибо. Но почему когда значение доходит до 10, то в Edit-e появляется такое значение: 011,012 и т.д. Как сделать, чтобы если значение становилось больше 10, то первый 0 бы убирался?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 17.03.2010, 14:42   #4
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if StrToInt(Edit1.Text) > 9 then
  begin
    Edit1.Text := IntToStr(StrToInt(Edit1.Text) + 1);
    Exit;
  end;
  if StrToInt(Copy(Edit1.Text, 2, Length(Edit1.Text))) < 9 then
  begin
    Edit1.Text := '0' + IntToStr(StrToInt(Copy(Edit1.Text, 2, Length(Edit1.Text))) + 1);
    Exit;
  end;
  if StrToInt(Copy(Edit1.Text, 2, Length(Edit1.Text))) = 9 then
    Edit1.Text := IntToStr(StrToInt(Copy(Edit1.Text, 2, Length(Edit1.Text))) + 1);
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 17.03.2010, 14:51   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

С увеличением разобрались . А вот с уменьшением получается немного не то. Вот, для уменьшения по аналогии с увеличением сделал так:
Код:
 if StrToInt(Form1.Edit12.Text) > 9 then
  begin
    Form1.Edit12.Text := IntToStr(StrToInt(Form1.Edit12.Text) - 1);
    Exit;
  end;
  if StrToInt(Copy(Form1.Edit12.Text, 2, Length(Form1.Edit12.Text))) < 9 then
  begin
    Form1.Edit12.Text := '0' + IntToStr(StrToInt(Copy(Form1.Edit12.Text, 2,
                                        Length(Form1.Edit12.Text))) - 1);
    Exit;
  end;
  if StrToInt(Copy(Form1.Edit12.Text, 2, Length(Form1.Edit12.Text))) = 9 then
    Form1.Edit12.Text := IntToStr(StrToInt(Copy(Form1.Edit12.Text, 2,
                                        Length(Form1.Edit12.Text))) - 1);
 end;
Но когда я например убавляю значение 12,11,10 то после 10 идет 9, а мне бы желательно было, чтобы было не просто 9, а 09,08,07 и т.д.
???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 17.03.2010, 15:27   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...как насчет такого:
Код:
var  i: integer;

procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
 dec(i);
 edit1.Text:= format('%.2d',[i])
end;

procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
 inc(i);
 edit1.Text:= format('%.2d',[i])
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.03.2010, 15:50   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

raxp, не работает)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 17.03.2010, 16:26   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...тестируй
Изображения
Тип файла: jpg Screen0.jpg (4.4 Кб, 161 просмотров)
Вложения
Тип файла: zip up_down.zip (217.4 Кб, 42 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.03.2010, 16:28   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А че у меня все работает?
Код:
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
  Edit1.Tag:=Edit1.Tag-1;
  Edit1.Text:=format('%.2d',[Edit1.Tag]);
end;

procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
     Edit1.Tag:=Edit1.Tag+1;
  Edit1.Text:=format('%.2d',[Edit1.Tag]);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.03.2010, 16:41   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Это из теории (А.Я. Архангельский " 100 компонентов ..."
Цитата:
Основное свойство компонента UpDown — Associate, связывающее кнопки со стрелками с одним из оконных компонентов, обычно с Edit.

Свойства Min и Мах компонента UpDown задают соответственно минимальное и максимальное значения чисел, свойство Increment задает приращение числа при каждом нажатии на кнопку. Свойство Position определяет текущее значение числа. Это свойство можно читать, чтобы узнать, какое число задал пользователь. Его можно задать во время проектирования в диапазоне Min — Мах. Тогда это будет значение числа по умолчанию, отображаемое в окне в начале выполнения приложения.

Если в компоненте Edit, связанном с UpDown, не задать ReadOnly равным true, то пользователь сможет редактировать число, не пользуясь кнопками со стрелками.

Свойство Wrap определяет, как ведет себя компонент при достижении максимального или минимального значений. Если Wrap = false, то при увеличении или уменьшении числа до максимального или минимального значения это число фиксируется на предельном значении и нажатие кнопки, пытающейся увеличить максимальное число или уменьшить минимальное, ни к чему не приводит. Если же Wrap = true, то попытка превысить максимальное число приводит к его сбросу на минимальное значение. Аналогично, попытка уменьшить минимальное число приводит к его сбросу на максимальное значение. Т.е. изменение чисел «закольцовывается».

Если к тому же установить в true свойство окна ReadOnly, то пользователь просто не сможет ввести в окно какой-либо свой текст и вынужден будет ограничиться выбором числа.
Скачать сие добро элементарно:
http://programmersclub.ru/files/book1_100comp.rar
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось mihali4; 18.03.2010 в 02:01.
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отрисовка updown edik Компоненты Delphi 0 27.12.2009 12:39
UpDown MasterofCDM Общие вопросы Delphi 3 23.01.2009 10:37
scrollbox1 & UpDown blackstersl Общие вопросы Delphi 1 12.09.2008 12:30
UpDown with Label MAKEDON Компоненты Delphi 1 05.08.2008 15:53
Цвет UpDown 3lander Общие вопросы Delphi 0 24.10.2007 00:09