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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Gauge, Применение Gauge... 
:(
    Опции темы
Exploited
Дата 24.6.2002, 15:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Еще раз здравствуйте.

Никак не могу понять: как пользоваться Gauge? Да и в файле справки о нём ничего толком не сказано. Может, кто-нибудь сможет объяснить на примере.
  Вверх
Song
Дата 24.6.2002, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



TGauge - на вкладке Samples. По-моему там достаточно тех свойств, что есть в ИО, чтобы разобраться.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Exploited
Дата 24.6.2002, 18:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Свойств то достаточно и запустить его я понимаю как. Но как "умно" применить. Вот, например, у меня был немного раньше вопрос по CreateProcess... Я запускаю консольную программу, она выполняет действие. Как мне в процессе этого действия показывать состояние в TGauge?
  Вверх
RA
Дата 24.6.2002, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

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



Кинь таймер и кинь Гаудж.

Код
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Gauge1.Progress:=Gauge1.Progress+1;
end;


Это сообщение отредактировал(а) p0s0l - 30.9.2005, 09:39
PM   Вверх
Exploited
Дата 24.6.2002, 19:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А далее..   Запускать таймер, а когда нужно - останавливать?
  Вверх
Song
Дата 24.6.2002, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



Вообще чтобы точно было - не получится, потому что Вы не рассчитаете время, когда закончится выполнение программы, хотя если она выполняется всегда одинаковое количетсво времени - можно по таймеру. Т.е. единственный вариант - во время выполнения программы прогресс будет расти всегда на одинаковое количество единиц, а когда закончится выплненение прогресс можно приравнять на максимум, как кстати иногда делается в виндах, например при обнаружении Plug'n'play устройств. Т.е. пропорциоанального роста всё равно не получится.

Теперь как сделать. Программа можно запустить бы через CreateProcess() и подождать её завершение с помощью WaitForSingleObject() с параметром INFINITE, но в этом случае текущая нить будет крутиться на последнем и больше ничего исполняться не будет т.е. TGauge не будет накручиваться. Хотя конечно его накрутку можно запустить отдельной нитью, а при CreateProcess() нить активировать... ну вообщем получится, но нужно приложить немало сил.
Гораздо приятней будет запустить прогу через ShellExecuteEx() и организовать цикл, в котором будет накручивать TGauge, получать текущий код возврата из приложения, проверять его на STILL_ACTIVE, т.е. как только код будет с таким результатом, цикл можно завершать. Так мы получим конструкцию, когда приложение запускается и прогресс TGauge будет накручитваться с выполнением запущенной программы, но не пропорционально ей!
Теперь о решении, как добиться некой пропорциональности. А заключается оно в том, что шаг на который будет увеличиваться TGauge будет уменьшаться соразмерно с увеличением пройденной шкалы. Т.е. чем дальше пройдёт TGauge, тем медленней он будет ползти.
Чтобы сделать шкалу соразмерно запуску, это как я уже кроме того как знания времени выполнения или других временных фаз ИМХО не добиться.
Вот некоторые мысли. Но это всё теория, практика Вам, уважаемый :)


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Alex
Дата 24.6.2002, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



Если я правильно понял вопрос у вас есть консольная программа, в которой выполняется определенный процесс, который в ней отображается в виде "...%", а вы хотите сделать чтобы в вашей программе отображался ход выполнения этого процесса. Если это так то это можно реализовать следующим образом. Есть функция, которая позволяет считать все данные с консольного окна и вывести их в виде текста. Когда вы это сделали, ищите строку, в которой отображаются ваши проценты и присваиваете позицию Gauge, которая соответствует этим процентам. Все это можно засунуть в таймер.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Sniper
Дата 25.6.2002, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А если форма криейтится через Application.CreateForm(TForm1, Form1);
как тогда использовать Gauge?
Всмысле у меня есть форма, на ней кнопка и Gauge. Я тыкаю по кнопке и с помощью Application.CreateForm у мя криейтится другая форма. как показать сие действо?


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
Exploited
Дата 25.6.2002, 10:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2alex-co

Цитата
Есть функция, которая позволяет считать все данные с консольного окна и вывести их в виде текста.


Что за функция?
  Вверх
Song
Дата 25.6.2002, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



CreatePipe()


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Alex
Дата 26.6.2002, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



ReadConsoleOutputCharacter

Если понадобится не читать вывод консоли а писать в нее - см.
WriteConsoleInput


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

FAQ раздела лежит здесь!


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

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


 




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


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

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