Показать сообщение отдельно
  #1  
Старый 11.07.2018, 22:09
vas31 vas31 вне форума
Прохожий
 
Регистрация: 11.07.2018
Сообщения: 6
Версия Delphi: Delphi 10.2
Репутация: 10
По умолчанию SynEdit - присваивание обработчиков событий

Доброго времени суток!

По клику на кнопку создаю новый 'TabSheet', далее в нём создаю новый экземпляр компонента 'SynEdit'.
Присваиваю обработчику 'OnGutterClick' этого компонента свою процедуру 'myGutterClick'.
Когда создан один экземпляр 'SynEdit', то всё отрабатывает нормально. Но стоит создать ещё несколько
экземпляров SynEdit-а (несколько табов), то мой обработчик события отрабатывает только на последнем
созданном SynEdit-е.

В интернете описываются случаи или с назначением на всего один экземпляр компонента (как правило кнопки)
или приводятся такие примеры, что пока "тёмный лес" для меня...

Как правильно назначать обработчики событий для SynEdit-а, когда динамически создаются
несколько его экземпляров ?


Мой код примера:
Код:
// кнопка
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
   ts  : TTabSheet;
   sed : TSynEdit;
begin
	with PageControl1 do
		begin
		// создаём новый таб
		ts := TTabSheet.Create(Self);
		ts.PageControl := PageControl1;
		ts.Caption := 'TabSheet' + IntToStr(PageCount);

		// создаём новый экземпляр 'SynEdit'
		sed := TSynEdit.Create(ts);
		sed.Parent := ts;
		// присваиваем обработчик события
		sed.OnGutterClick := myGutterClick;

	end;
end;


// моя процедура для события 'OnGutterClick'
procedure TForm1.myGutterClick(Sender: TObject; Button: TMouseButton; X, Y, Line: Integer; Mark: TSynEditMark);
begin
  ...
  код
  ...
end;
Ответить с цитированием