![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Приветствую. 
		
	
		
		
		
		
		
		
			Есть динамически создаваемые Label*ы Код: 
	procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
    s:string;
   lb:array of TLabel;
begin
setlength(lb,Memo2.Lines.Count);
for i:=0 to Memo2.Lines.Count-1 do
 begin
  lb[i]:=TLabel.Create(Self);
  lb[i].Parent:=Form1;
  lb[i].Left:=8;
  lb[i].Top:=i*17;
  lb[i].Font.Size:=9;
  lb[i].Height:=12;
  lb[i].Width:=200;
  lb[i].WordWrap:=False;
  lb[i].Cursor:=crHandPoint;
  lb[i].Caption:=Pars('">',Memo2.Lines.Strings[i-1],'%%%');
 end;
end;Можно как то обработать Events тоже динамически ? Что то типа: Код: 
	procedure TForm1.lb[i]Click(Sender: TObject);
begin
ShellExecute(handle, 'open',pChar(Pars('%%%',Memo2.Lines.Strings[i-1],'">')), nil, nil, SW_SHOW);
end;Ну и обработать события: lb[i].MouseDown, lb[i].MouseUp, lb[i].MouseLeave, lb[i].MouseEnter Что б можно было обрабатывать события мыши (если курсор над label5, подкрасить его в красный. Курсор ушёл вернуть цвет в синий.) Спасибо. Последний раз редактировалось TEKTON, 28.09.2018 в 05:25.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Да, без проблем 
		
	
		
		
		
		
			
		
		
		
		
		
			Код: 
	procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
    s:string;
   lb:array of TLabel;
begin
setlength(lb,Memo2.Lines.Count);
for i:=0 to Memo2.Lines.Count-1 do
 begin
  lb[i]:=TLabel.Create(Self);
  lb[i].Parent:=Form1;
  lb[i].Left:=8;
  lb[i].Top:=i*17;
  lb[i].Font.Size:=9;
  lb[i].Height:=12;
  lb[i].Width:=200;
  lb[i].WordWrap:=False;
  lb[i].Cursor:=crHandPoint;
  
  // Определяем Tag
  
  lb[i].Tag:=i;
  // Определяем обработчики событий
  
  lb[i].OnMouseDown:=ALabelMouseDown;
  lb[i].OnMouseUp:=ALabelMouseUp;
  lb[i].OnMouseLeave:=ALabelMouseLeave;
  lb[i].OnMouseEnter:=ALabelMouseEnter;      
 
  lb[i].Caption:=Pars('">',Memo2.Lines.Strings[i-1],'%%%');
 end;
end;При этом у формы должны быть определены эти четыре процедуры: Код: 
	procedure ALabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ALabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ALabelMouseLeave(Sender: TObject); procedure ALabelMouseEnter(Sender: TObject); Код: 
	procedure ALabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin
ShellExecute(handle, 'open',pChar(Pars('%%%',Memo2.Lines.Strings[(Sender as TLabel).Tag],'">')), nil, nil, SW_SHOW);
end;Последний раз редактировалось F.o.x., 28.09.2018 в 17:37.  | 
| Этот пользователь сказал Спасибо F.o.x. за это полезное сообщение: | ||
 
TEKTON (29.09.2018)
  | ||
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 У гипер ссылки (ту которую из label*a делаем), должно быть три состояния. 
		
	
		
		
		
		
		
		
			1) Не активная - цвет синий. 2) Когда курсор висит над лейблом, цвет текста подкрашивается в красный (курсор ушёл, текст снова синий). 3) Посещённая ссылка - цвет сиреневый. (тут в принципе и на онклик можно повесить изменение цвета). Вот нарыл такое ![]() http://www.delphisources.ru/pages/fa...gyperlink.html Посмотрю как там оно работает. Но за код, всё равно спасибо. ![]() P.S. глянул. Вроде норм работает. Но хочется подправить несколько моментов. 1) как пр.описать, что б курсор всегда имел crHandPoint 2)Ссылка подкрашивается красным тока в момент клика (сделать чтоб подкрашивалась когда курсор над ссылкой висит) 3)как поменять иконку ? Что б в палитре отличалась от простого лейбла Спасибо. Последний раз редактировалось TEKTON, 29.09.2018 в 20:29.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Код: 
	Cursor:=crHandPoint; Цитата: 
	
 Код: 
	procedure TLink.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then FLinkColor := Font.Color; inherited; end; procedure TLink.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then Font.Color := FVLinkColor; inherited; end; procedure TLink.MouseLeave; begin Font.Color := FLinkColor; inherited; end; Цитата: 
	
 Код: 
	{$R ИмяФайла.dcr}Если ИмяФайла совпадает с именем модуля, то ИмяФайла можно заменить на * Если компонент в отдельном пакете, то лучше перенести подключение dcr непосредственно в dpk-файл. Последний раз редактировалось F.o.x., 29.09.2018 в 22:29.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Спасибо. 
		
	
		
		
		
		
		
	
		
		
	
	
	Цитата: 
	
 ![]() Я вообще не знаю как эти DpK создавать, паковать ![]()  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 На самом деле это не сложно. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Если надо, то вот пример, там есть ссылка на скачивание. Инструкция по установке и описание тоже в архиве.  | 
| Этот пользователь сказал Спасибо F.o.x. за это полезное сообщение: | ||
 
TEKTON (30.09.2018)
  | ||
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Наверно  
		
	
		
		
		
		
		
	
		
		
	
	
	![]() Просто не сталкивался никогда с этим вообще.  |