Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Koнтpoлы - Application

Application
Краткое описание
   Компонент предназначен для доступа к некоторым параметрам и сервисам всего приложения.
Параметры
  • Info - Подсказка над иконкой программы в TaskBar
  • Wait - True - ожидать прихода первого сообщения в случае пустой очереди, False - вернуть управление программе если очередь пуста
  • Методы
  • doProcessMessages - Заставляет все визуальные элементы формы обработать очередь накопившихся сообщений (этот метод не работает внутри компонент-контейнеров)
  • doLoopMessages - Запускает прокрутку очереди Windows сообщений
  • События
  • onTerminate - Происходит при закрытии программы, дальнейшие сообщения не обрабатываются, и проводимые вычисления/циклы следует закончить - другого напоминания не будет
  • Свойства
  • AppFileName - Полный путь к программе
  • Params - Содержит массив параметров, переданных программе при запуске
  • Примеры
       Пример использования компонента 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]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...