| Koнтpoлы | - Application |
Application
Краткое описание
Компонент предназначен для доступа к некоторым параметрам и сервисам всего приложения.
Параметры
Методы
События
Свойства
Примеры
Пример использования компонента Application для получения пути и имени запущенного приложения
Пример получения параметров, переданных программе при запуске
Add(MainForm,2953706,28,119)
{
Caption="Пример использования Application"
link(onCreate,5978564:doText,[(82,139)(82,125)])
}
Add(Application,7703,105,63)
{
}
Add(Label,5978564,105,119)
{
Left=10
Top=120
Width=370
Height=55
AutoSize=1
Alignment=2
link(Text,7703:AppFileName,[])
}
Add(MainForm,8831287,126,168)
{
Width=311
Height=299
Caption="Пример использования Application"
link(onCreate,3412361:doEnum,[])
}
Add(Application,7703,203,119)
{
}
Add(ArrayEnum,3412361,210,182)
{
link(onItem,99652:doAdd,[])
link(Array,7703:Params,[])
}
Add(ListBox,99652,273,182)
{
Left=5
Top=30
Width=295
Height=240
}
Add(Button,3270336,147,231)
{
Left=5
Top=5
Width=295
Caption="Запуск с параметрами"
link(onClick,9091149:doExec,[])
}
Add(WinExec,9091149,203,231)
{
Param="<param1> <param2> <paramN>"
link(FileName,7703:AppFileName,[])
}
Замечания
Метод doProcessMessages можно использовать в том случае, когда приложение выполняет длительную работу. Например, во время поиска файлов на диске приложение может "зависнуть", если их окажется много. Точнее оно-то будет работать, но перестанет реагировать на воздействия от пользователя (нажатия мышки или клавиш на клавиатуре). Выходом из подобной ситуации может стать запуск поиска файлов в отдельном потоке или применение рассматриваемого метода. После его вызова, компонент заставит на время прервать работу приложения и даст возможность форме обработать накопившиеся события, т.е. нажатия на кнопки, отрисовка каких-то изменившихся компонентов, обработка клавиатуры, и прочее. В итоге программа будет делать свое дело, и в тоже время позволит пользователю управлять ею. Например, дать ему возможность нажать кнопку Стоп.
Параметрами св-ва Params могут быть имена файлов, например, в случае, когда вы выделяете в проводнике несколько иконок и сбрасываете на иконку вашей программы. Тогда количество переданных параметров будет равно количеству сброшенных файлов, а каждый элемент массива будет содержать полное имя файла. Сюда же попадают и параметры, заданные программе из командной строки. Например: "C:\HiAsm\MyProgram.exe Param1 Param2". В этом случае число параметров будет равно двум, первый элемент массива будет содержать строку Param1 и второй Param2.
Так же стоит отметить, что использование потока (компонент Thread) не всегда является хорошей альтернативой (в примере с файлами как раз использование параллельного потока предпочтительнее) и вот почему: может возникнуть ситуация, когда на форме нужно один раз обновить какие-то данные перед длительной (или не очень) работой. Использование потоков в таких случаях спасет ситуацию, но оно не будет эффективным. Например, ваша программа открывает большой файл и, зная, что на это уйдет некоторое время, вы выводите табличку с надписью: "Ждите...". Однако надпись может и не успеть отрисоваться, тогда и нужно вызвать один раз метод doProcessMessages, а затем спокойно открывать файл. Совершенно очевидно, что использование отдельного потока в данном примере только усложнит программу и увеличит время для загрузки файла.
Обновление элемента: [svn]Application.pas[/svn]
Параметрами св-ва Params могут быть имена файлов, например, в случае, когда вы выделяете в проводнике несколько иконок и сбрасываете на иконку вашей программы. Тогда количество переданных параметров будет равно количеству сброшенных файлов, а каждый элемент массива будет содержать полное имя файла. Сюда же попадают и параметры, заданные программе из командной строки. Например: "C:\HiAsm\MyProgram.exe Param1 Param2". В этом случае число параметров будет равно двум, первый элемент массива будет содержать строку Param1 и второй Param2.
Так же стоит отметить, что использование потока (компонент Thread) не всегда является хорошей альтернативой (в примере с файлами как раз использование параллельного потока предпочтительнее) и вот почему: может возникнуть ситуация, когда на форме нужно один раз обновить какие-то данные перед длительной (или не очень) работой. Использование потоков в таких случаях спасет ситуацию, но оно не будет эффективным. Например, ваша программа открывает большой файл и, зная, что на это уйдет некоторое время, вы выводите табличку с надписью: "Ждите...". Однако надпись может и не успеть отрисоваться, тогда и нужно вызвать один раз метод doProcessMessages, а затем спокойно открывать файл. Совершенно очевидно, что использование отдельного потока в данном примере только усложнит программу и увеличит время для загрузки файла.
Обновление элемента: [svn]Application.pas[/svn]
BB-code статьи для вставки
Всего комментариев: 0
(комментарии к статье еще не добавлены)