воскресенье, 13 сентября 2009 г.

Знакомство с компонентами




Чтобы более полно использовать возможности HiAsm, нужно хорошо знать его компоненты. С некоторыми вы уже познакомились: кнопка, поле ввода, сообщение. Они есть почти во всех программах.
Сейчас я покажу использование ещё некоторых компонентов, чтобы лучше поняли суть их соединения.

Практически в любом приложении также используется надпись, чтобы указать что-то пользователю.



Если вы запустите программу ("Запуск" - "Запустить"), то увидите уже готовый текст надписи. Он задаётся в параметре "Caption".

Если вы начнёте набирать текст в поле ввода, то увидите, что он сразу же отображается в надписи. Так происходит потому, что событие поля onChange подключено в методу надписи doText.
Подведите курсор к этим точкам и прочитайте их описания.
Здесь текст передаётся в потоке, т.е. как бы по линии связи. И благодаря этому не нужно использовать верхнюю точку надписи.

Но как догадаться, какие данные нужно передавать в потоке, а какие - через верхние точки? Ответ: работают оба способа. Например, при такой схеме:



текст передаётся через верхнюю точку. Но изменение текста в надписи произойдёт только после нажатия кнопки, потому что за действие отвечает именно метод надписи, который и вызывается при нажатии кнопки.

А сейчас познакомимся ещё с одним компонентом.



Это многострочное поле. Запустите программу и попробуйте изменить размеры её окна. Вы убедитесь, что наше поле всегда развёрнуто на всё окно программы. Это происходит благодаря установленному параметру Align у этого компонента в caClient.
Если же установить это значение, например, в caTop, то компонент всегда будет располагаться по всей ширине программы, но высота будет такой, как задано в редакторе форм ("Вид" - "Редактор форм").
Поэкспериментируйте с этим значением.

Возможно, вы заметили, что полос прокрутки у этого поля нет, хотя в приложениях windows они присутствуют.
За наличие полос прокрутки отвечает параметр компонента ScrollBars. Обязательно поэкспериментируйте в ним, запуская программу после каждого изменения параметра.

Напоследок покажу, как загружать текст из файла в это поле.



Здесь появился новый компонент - это диалог открытия файлов. Сам он ничего не открывает, а только передаёт имя выбранного файла.
Когда происходит нажатие кнопки, вызывается диалог (проследите это на схеме). Когда в диалоге выбирается файл, текст из него загружается в многострочное поле.

3 комментария:

  1. В видеолекции проводится эксперимент с приоритетами 3 способов передачи текста в сообщение (высший у данных, средний у свойств сообщения, низший у потока) и рассказывается о настраиваемых свойствах компонентов интерфейса.
    В связи с приоритетами такой вопрос:
    вот я скопировал и вставил в рабочее поле HiAsm сначала 1 пример, а потом второй пример. Когда жму кнопку редактора формы, то показывается второй пример, а первого как-будто и не существует. Как определяются приоритеты редактора формы? Что в него попадает из компонентов, размещенных на рабочем поле, а что нет?

    ОтветитьУдалить
  2. В связи со свойством цвета поля текстового редактора возникла идея программы, изменяющей цвет случайным образом при всяком движении мышки.
    На панели "Точки" я поставил галку на onMouseMove - на компоненте справа появилась соответствующая точка. Теперь по идее ее надо связать с генератором случайных чисел - такой нашелся в элементах Logic. Но как быть дальше, ведь свойства компонента программно изменять нельзя? Поставить несколько копий редактора и переходить через коммутатор?
    Что Вы посоветуете?

    ОтветитьУдалить
  3. Когда копируется новый пример, старый надо далять. В идеале - закрывать HiAsm и открывать снова, с "чистого листа". В данном случае старые компоненты не отображаются потому, что у Memo Align=caClient, и старые компоненты оказываются под ним. Можно выделить Memo и выполнить Правка - Задний план.
    При копировании и вставке схем иногда возникают подобные недопонимания, поэтому в последний статьях я даю ссылки на файлы, и каждый открывается независимо от других.

    Из свойства можно сделать метод, если рядом есть белый квадратик. Просто щёдкните по нему.

    ОтветитьУдалить