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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.05.2009, 19:37
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию Помощь по диплому

Следующая ситуация.
Нужно смоделировать Доменный процесс(Металлургия). Суть вопросы в следующем. В одной форме вводиться кол-во подачь( то сколько раз будет вводиться руда в начале плавки), после ввода колличества подачь(они вводяться с помощью ComboBox, т е выбираются из списка), в зависимости от того сколько будет введено (от 1 до 6) становяться видимыми еще несколько ComboBox (от 1 до 6) в которых выбирается вид руды ( всего 4 варианта Кокс, Агломерат, Окатыши, Флюсы), так же становяться видимыми рядом с соответствующим ComboBox соответствующий Edit в который вводиться кол-во тонн того или иного компонента. так вот надо что в другой форме отображалось в зависимости от выбора пользователя следующее: допустим пользователь выбрал 4 подачи следующего типа Агломерат - 2 тонны, Кокс-3 тонны, Окатыши - 1 тонна и еще раз Агломерат - 4 тонны. в открывшейся форме должно отобразиться следуещее "Подача агломерата 4 тонны", через некоторое время, "подача кокса 3 тонны", через тоже время "подача Окатышей 1 тонна", и еще через это же время "подача Агломерата 4 тонны", надо что отображалось все через один и тот же промежуток времени допустим через минуту, и с новой строки, причем весь предыдущий текст должен оставаться то есть в конце будет четыре строки. и еще это все должно повторяться допустим 10 раз, а так же пользователь в любое время может изменить кол-во подачь и их состав, и в случаи изменения должна появиться надпись "Подача изменена".
Ответить с цитированием
  #2  
Старый 23.05.2009, 20:13
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Киньте на форму компонент TTimer настройте его срабатывание каждую минуту и наслаждайтесь результатом.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 23.05.2009, 20:48
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

а можно поподробнее особенно о том какой компонент добавить на вторую форму что бы в нем выводились строки. и протаймер
Ответить с цитированием
  #4  
Старый 23.05.2009, 21:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

После того как поместите TTimer на форму установите в нем значение Interval = 60000, что соответствует 1 минуте. И выставите значение Enabled = True. Теперь с периодичность в 1 минуту у вас будет вызываться событие OnTimer в котором вы просто организуете вывод в (видимо в мемо) ваших данных думаю будет где-то так:
Код:
procedure TForm24.Timer1Timer(Sender: TObject);
begin
 case ComboIndex
 of 1: Memo1.Lines.Add(ComboBox1.Text);
     2: Memo1.Lines.Add(ComboBox2.Text);
     3: Memo1.Lines.Add(ComboBox3.Text);
     4: Memo1.Lines.Add(ComboBox4.Text);
 end;
 Inc(ComboIndex);
 if ComboIndex > 4 then ComboIndex := 1;
end;
переменную ComboIndex сделайте глобальной и инициализируете при создании формы.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 23.05.2009, 21:16
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

при исполнение вашего кода делфи ругается на ComboIndex и как активировать таймер по нажатию кнопки?

Заранее спасибо, ваши ответы полные и подробные
Ответить с цитированием
  #6  
Старый 23.05.2009, 21:32
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

Спасибо разобрался, все заработало.
Но возникаеи вопрос который я уже писал, если пользователь изменит колличество подачь то поидеи должно измениться Case of с 4 допустим до 6! как можно это реализовать, кнопка об изменении находиться на этой же форме
Заранее Спасибо!
Ответить с цитированием
  #7  
Старый 23.05.2009, 22:28
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну сделайте так:
Код:
procedure TForm24.Timer1Timer(Sender: TObject);
begin
 case ComboIndex
 of 1: Memo1.Lines.Add(ComboBox1.Text);
     2: Memo1.Lines.Add(ComboBox2.Text);
     3: Memo1.Lines.Add(ComboBox3.Text);
     4: Memo1.Lines.Add(ComboBox4.Text);
     5: Memo1.Lines.Add(ComboBox5.Text);
     6: Memo1.Lines.Add(ComboBox6.Text);
 end;
 Inc(ComboIndex);
 if ComboIndex > ComboCount then ComboIndex := 1;
end;
где ComboCount - количество подач
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 23.05.2009 в 22:30.
Ответить с цитированием
  #8  
Старый 23.05.2009, 22:43
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

Спасибо большое, а то я уже с кучей условий сделал)
Ответить с цитированием
  #9  
Старый 23.05.2009, 23:21
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

Извините еще вопрос.
Все нормально выводиться в поле Memo, но есть еще коечто, я сделал что бы не зависимо от кол-ва подачь они все проходят за минуту(интервал таймера пересчитывается в зависимости от кол-ва подач), надо что бы на этой же форме отображались часы, и в поле мемо выводилось не просто наименование подач и кол-во тонн, но и время во солько Например так:
0:15 Агломерат 5 тонн
0:30 Кокс 3 тонны
0:45 Флюсы 1 тонна
1:00 Окатыши
и потом снова но время продолжает идти
1:15 Агломерат
1:30 Кокс
1:45 Флюсы
2:00 Окатыши
и т.д.

и надо чтобы весь список не зависимо от кол-ва подач и времени работы можно было сохранить в текстовый файл причем такой же структуры
не могли бы вы подсказать
Заранее Спасибо!
Ответить с цитированием
  #10  
Старый 23.05.2009, 23:46
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Время считай в какую нибудь переменную, выводи по таймеру. Вот как можно: (на форму кинуть Label и настроить шрифт по своему усмотрению)
Код:
var mytime:integer; //Вне процедуры

...
...
procedure TForm24.Timer1Timer(Sender: TObject);
const
  n=1; //Подстройте под себя
var
  mins,secs:integer;
  TimeStr:string;
begin
  ...
  ...
  MyTime:=MyTime+n;
  mins:=MyTime div 60;
  secs:=MyTime mod 60;
  TimeStr:=IntToStr(mins)+':'+IntToStr(secs);
  Label1.Caption:=TimeStr;
  ...
end;
А сохранить элементарно:
Код:
Memo1.Lines.SaveToFile('C:/mytext.txt');
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #11  
Старый 24.05.2009, 00:06
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

Спасибо +++ поставил))) сейчас попробую!
Ответить с цитированием
  #12  
Старый 24.05.2009, 01:23
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

Теперь появилась след проблемма, есть два таймера один считае о отображает время, второй выводит инфу в мемо, как их синхронизировать, потому что задержка после запуска таймера и таймера вывода инфы большая и всегда разная, но как только выведеться первая инфа то потом все ок. т.е. задержка только перед первым выводом инфы
Ответить с цитированием
  #13  
Старый 24.05.2009, 01:50
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А вы при старте приложения выставите значения интервала для обоих тармеров 0, и активируйте их, а в событиях каждого таймера укажите интервал индиаидуально. Стартуют они синхронно, а потом уже будут работать кажды по своему расписанию.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #14  
Старый 24.05.2009, 02:09
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
А вы при старте приложения выставите значения интервала для обоих тармеров 0, и активируйте их, а в событиях каждого таймера укажите интервал индиаидуально. Стартуют они синхронно, а потом уже будут работать кажды по своему расписанию.
помогло только изначально таймеры по 1 сек, а потом у каждого свой
Ответить с цитированием
  #15  
Старый 24.05.2009, 03:26
maectpo maectpo вне форума
Прохожий
 
Регистрация: 23.05.2009
Сообщения: 13
Репутация: 10
По умолчанию

а можно каким нибудь образо сделать так чтобы определенная строка в поле мемо была выделенна жирным и большим шрифтом?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter