Компоненты Windows Forms. Компонент LinkLabel (продолжение)

   
На этом шаге мы рассмотрим более подробно, как формируется гиперссылка.

   
Рассмотрим более подробно сам процесс создания гиперссылки. Во-первых, у нее есть наименование, которое помещается в свойство Text, и собственно сама ссылка, т. е. путь к объекту,
на который идет ссылка.

   
Куда помещается сама ссылка? Она помещается в свойство Links, которое не отражается в окне Properties (Свойства). Из самого названия свойства (связи, ссылки) следует,
что, ссылок можно задавать и больше, чем на один объект. Это свойство является указателем на элемент LinkCollection класса LinkLabel, который содержит множество M{} ссылок,
задающихся в LinkLabel, поэтому можно воспользоваться методами этого класса, в частности - методом Add(), который добавляет в M{} новую гиперссылку (это можно
сделать только в тексте программы, т. к. свойство Links не высвечивается в окне Properties (Свойства)).

   
Поскольку ссылок бывает одна и более, то первая ссылка обязательно помещается в свойство LinkArea (нажав на кнопку с многоточием в поле этого свойства, можно такую ссылку задать
прямо в режиме дизайна проекта).


Рис.1. Задание ссылки в свойстве LinkArea

   
Остальные ссылки можно задать в тексте программы, помещая их в свойство Links методом Add(). В любом случае, зададите ли вы одну-единственную ссылку или множество, все
они в режиме исполнения приложения попадут во множество M{}, т. е. в свойство Links. Следовательно, если вы задаете в тексте программы даже единственную ссылку, то можно
поместить ее сразу в первый элемент из множества M{}, однако сведения о том, что это единственная ссылка, надо все же отразить в свойстве LinkArea.

   
Каким образом?

   
Дело в том, что сама ссылка непосредственно связана со своим наименованием, т. е. с текстом этого наименования, который хранится в свойстве Text.


Рис.2. Значение свойства Text

   
Это свойство содержит строку символов (точнее - слов). Слова следует пометить так, чтобы было понятно, что они отображают названия гиперссылок. Если слово отображает наименование гиперссылки,
оно сразу оказывается непохожим на остальные части текста в строке свойства Text: такое слово становится подчеркнутым, цвет его шрифта изменяется в соответствии с цветом, установленным
в свойстве LinkColor (цвет выбирается из всплывающей палитры цветов, если в поле свойства нажать на кнопку со стрелкой).

   
Например, свойство Text содержит текст "Это гиперссылка, а это просто текст". Если вы пометили часть текста "Это гиперссылка" таким образом, чтобы она относилась
к наименованию гиперссылки, то когда в режиме исполнения приложения вы на такую помеченную часть текста наведете курсор мыши, его вид изменится: он станет изображаться в виде кисти руки. Это означает,
что в этом месте можно щелкнуть кнопкой мыши и программа отошлет нас к объекту, адрес которого находится в свойстве Links в соответствующем его элементе, имеющем тот же порядковый
номер от начала множества, что и помеченная ссылкой часть текста в свойстве Text. Сколько частей в свойстве Text мы пометим в качестве названий гиперссылок, столько фактических адресов объектов,
на которые будет идти ссылка из помеченных частей текста в свойстве Text, надо будет задать в свойстве Links, иначе возникнет исключительная ситуация, которая, если ее не обработать,
приведет аварийному останову программы.

   
Как же помечать части текстовой строки, чтобы они становились наименованиями гиперссылок? Пометки задаются в виде указания номера позиции (счет от нуля) символа, которым начинается наименование гиперссылки,
количества символов, относящихся к наименованию гиперссылки (рисунок 1, значение свойства LinkArea).

   
В самом свойстве LinkArea (а можно в его подсвойствах - Start и Length) надо набрать соответственно номер начальной позиции (счет от нуля) и длину подстроки, набранной в редакторе
LinkArea (то, что набирается в редакторе LinkArea, автоматически попадает в свойство Text), которая будет играть роль имени первой и, возможно, единственной, гиперссылки.
Если вы набираете координаты имени гиперссылки в самом поле LinkArea, то начало и длину имени следует набирать через точку с запятой (рисунок 1).

   
Например, в поле редактора вы набрали текст "Это гиперссылка, а это просто текст". В свойстве LinkArea автоматически установятся значения (0; 35). Получатся данные:
Start=0 и Length=35 (рисунок 3).


Рис.3. Задание значений в LinkArea

   
Это неправильно. И свидетельством тому явится исчезновение подсветки шрифта в наименовании, которое мы ввели. Вы должны за этим проследить и самостоятельно установить значения подсвойств
Start и Length.

   
Если, например, зададите величины: 0; 23, то получите подсвеченный и подчеркнутый текст такой: "Это гиперссылка, а это просто текст" (остальные символы заданного текста не станут отражать название гиперссылки).


Рис.4. Изменение внешнего вида гиперссылки

   
Если же зададите: 0; 15, то получите Это гиперссылка (рисунок 5).


Рис.5. Изменение внешнего вида гиперссылки

   
Для выделения остальных частей строки текста из свойства Text вы должны задавать начало и длину в программе и помещать их (как и сами адреса объектов) в элементы свойства Links. Если, например, вы станете добавлять данные из объекта
textBox1, то оператор добавки будет выглядеть так:

  this->linkLabel1->Links->Add( (int)ArStart[i], 
        (int)ArLen[i], this->textBox1->Lines[i]);

Здесь аргументы (int)ArStart[i], (int)ArLen[i] означают i-ые элементы массивов, где хранятся соответственно номера символов начальных позиций и длин текста из свойства Text,
которые будут помечены в качестве наименования гиперссылки, добавляемой в качестве пути к объекту из i-й строки textBox1. Начало и длина принудительно переводятся в тип int, как требует
того формат метода Add(), потому что массивы ArStart[],ArLen[] - это числовые (Int32) managed-массивы.

   
Когда у нас в проекте несколько гиперссылок, то требуется отмечать, что мы щелкали на какой-то конкретной гиперссылке (как говорят, "посетили" гиперссылку), иначе в работе может наступить полная путаница.

   
В классе Links имеется на этот счет специальное свойство Visited, устанавливаемое в значения true (посетили ссылку) и false (не посещали ссылку). Кроме того, к ссылке
можно разрешить или запретить доступ с помощью установки в значения true и false другого свойства класса Links - свойства Enabled.

   
На следующем шаге мы закончим изучение этого вопроса.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий