На этом шаге мы рассмотрим более подробно, как формируется гиперссылка.
Рассмотрим более подробно сам процесс создания гиперссылки. Во-первых, у нее есть наименование, которое помещается в свойство 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]);
Когда у нас в проекте несколько гиперссылок, то требуется отмечать, что мы щелкали на какой-то конкретной гиперссылке (как говорят, "посетили" гиперссылку), иначе в работе может наступить полная путаница.
В классе Links имеется на этот счет специальное свойство Visited, устанавливаемое в значения true (посетили ссылку) и false (не посещали ссылку). Кроме того, к ссылке можно разрешить или запретить доступ с помощью установки в значения true и false другого свойства класса Links - свойства Enabled.
На следующем шаге мы закончим изучение этого вопроса.