![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Exploited |
|
|||
|
Unregistered |
Еще раз здравствуйте.
Никак не могу понять: как пользоваться Gauge? Да и в файле справки о нём ничего толком не сказано. Может, кто-нибудь сможет объяснить на примере. |
|||
|
||||
| Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: нет Всего: 4 |
TGauge - на вкладке Samples. По-моему там достаточно тех свойств, что есть в ИО, чтобы разобраться.
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
| Exploited |
|
|||
|
Unregistered |
Свойств то достаточно и запустить его я понимаю как. Но как "умно" применить. Вот, например, у меня был немного раньше вопрос по CreateProcess... Я запускаю консольную программу, она выполняет действие. Как мне в процессе этого действия показывать состояние в TGauge?
|
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 1 Всего: 115 |
Кинь таймер и кинь Гаудж.
Это сообщение отредактировал(а) p0s0l - 30.9.2005, 09:39 |
|||
|
||||
| Exploited |
|
|||
|
Unregistered |
А далее.. Запускать таймер, а когда нужно - останавливать?
|
|||
|
||||
| Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: нет Всего: 4 |
Вообще чтобы точно было - не получится, потому что Вы не рассчитаете время, когда закончится выполнение программы, хотя если она выполняется всегда одинаковое количетсво времени - можно по таймеру. Т.е. единственный вариант - во время выполнения программы прогресс будет расти всегда на одинаковое количество единиц, а когда закончится выплненение прогресс можно приравнять на максимум, как кстати иногда делается в виндах, например при обнаружении Plug'n'play устройств. Т.е. пропорциоанального роста всё равно не получится.
Теперь как сделать. Программа можно запустить бы через CreateProcess() и подождать её завершение с помощью WaitForSingleObject() с параметром INFINITE, но в этом случае текущая нить будет крутиться на последнем и больше ничего исполняться не будет т.е. TGauge не будет накручиваться. Хотя конечно его накрутку можно запустить отдельной нитью, а при CreateProcess() нить активировать... ну вообщем получится, но нужно приложить немало сил. Гораздо приятней будет запустить прогу через ShellExecuteEx() и организовать цикл, в котором будет накручивать TGauge, получать текущий код возврата из приложения, проверять его на STILL_ACTIVE, т.е. как только код будет с таким результатом, цикл можно завершать. Так мы получим конструкцию, когда приложение запускается и прогресс TGauge будет накручитваться с выполнением запущенной программы, но не пропорционально ей! Теперь о решении, как добиться некой пропорциональности. А заключается оно в том, что шаг на который будет увеличиваться TGauge будет уменьшаться соразмерно с увеличением пройденной шкалы. Т.е. чем дальше пройдёт TGauge, тем медленней он будет ползти. Чтобы сделать шкалу соразмерно запуску, это как я уже кроме того как знания времени выполнения или других временных фаз ИМХО не добиться. Вот некоторые мысли. Но это всё теория, практика Вам, уважаемый -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 162 |
Если я правильно понял вопрос у вас есть консольная программа, в которой выполняется определенный процесс, который в ней отображается в виде "...%", а вы хотите сделать чтобы в вашей программе отображался ход выполнения этого процесса. Если это так то это можно реализовать следующим образом. Есть функция, которая позволяет считать все данные с консольного окна и вывести их в виде текста. Когда вы это сделали, ищите строку, в которой отображаются ваши проценты и присваиваете позицию Gauge, которая соответствует этим процентам. Все это можно засунуть в таймер.
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Sniper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 511 Регистрация: 8.5.2002 Репутация: нет Всего: 2 |
А если форма криейтится через Application.CreateForm(TForm1, Form1);
как тогда использовать Gauge? Всмысле у меня есть форма, на ней кнопка и Gauge. Я тыкаю по кнопке и с помощью Application.CreateForm у мя криейтится другая форма. как показать сие действо? -------------------- "Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный". Кен Томпсон, создатель Unix |
|||
|
||||
| Exploited |
|
|||
|
Unregistered |
2alex-co
Что за функция? |
|||
|
||||
| Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: нет Всего: 4 |
CreatePipe()
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 162 |
ReadConsoleOutputCharacter
Если понадобится не читать вывод консоли а писать в нее - см. WriteConsoleInput -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |