Topic: Здравствуйте, помогите пожалуйста с Onclick

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

Re: Здравствуйте, помогите пожалуйста с Onclick

Клик на текст вообще или на каждое слово в тексте - своя форма?

Визуальное программирование: блог и телеграм-канал.

Re: Здравствуйте, помогите пожалуйста с Onclick

не на каждое на выборочные слова

4 (edited by k245 2022-06-08 06:51:45)

Re: Здравствуйте, помогите пожалуйста с Onclick

Как это сделать по одинарному клику у меня идей нет, а вот по двойному - пожалуйста: размещаем на форме Memo и добавляем обработчик двойного клика:

procedure Form1_Memo1_OnDoubleClick (Sender: TObject);
var
  s: string;
begin
  s := Trim(Form1.Memo1.SelText);
  case s of
  'два': Form2.ShowModal;
  'три': Form3.ShowModal;
  end;
end;

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8735&download=0

К сожалению с RichEdit такой номер не прокатит, так как у него обработчик события двойного клика вызывается до того, как будет выделено слово.  Вообще у этого компонента огромный потенциал, но в MVDB он не раскрыт, в частности, нет возможности подключить событие на клик по URL, а это было бы очень круто.

Post's attachments

Attachment icon img-2022-06-08-09-47-46.png 25.15 kb, 59 downloads since 2022-06-08 

Визуальное программирование: блог и телеграм-канал.

Re: Здравствуйте, помогите пожалуйста с Onclick

Но, если подумать, то и на одинарный клик можно сделать то же самое:


procedure Form1_Memo1_OnClick (Sender: TObject);
var
  s: string;
  i: integer;
  StartPos, EndPos: integer;
begin
  s := Form1.Memo1.Lines[ Form1.Memo1.CaretPosY ];
  for i := Form1.Memo1.CaretPosX downto 1 do
  begin
    StartPos := i;
    if s[i] = ' ' then break;
  end;
  for i := StartPos + 1 to length(s) do
  begin
    EndPos := i;
    if s[i] = ' ' then break;
  end;
  s := Trim(Copy(s,StartPos,EndPos-StartPos+1));
  case s of
  'два': Form2.ShowModal;
  'три': Form3.ShowModal;
  end;
end;
Визуальное программирование: блог и телеграм-канал.