Я использую общие процедуры для всех виртуальных Treeviews (TVirtualStringTree), поэтому у меня есть только 1 код, чтобы сохранить, как для OnClick я использую Common_VST_OnClick, который все элементы управления VST установил:Как определить, какой элемент управления является отправителем?
procedure TForm1.Common_VST_OnClick(Sender: TObject);
и выполнить код, на основании которого VST называет это по процедуре щелчка, я понял, что я использую много разных способов, чтобы распознать, управляющих является Sender:
if Sender = VST1 then
if Sender.Name = VST1.Name then
if TVirtualStringTree(Sender) = VST1 then
if TVirtualStringTree(Sender).Name = VST1.Name then
if TVirtualStringTree(Sender).Name = 'VST1' then
Последнее, вероятно, худшим, как зовут жёстко, так что я пытаюсь использовать только 1 тип идентификации , во всех процедурах.
Каков наилучший способ определить, какой элемент управления является отправителем?
Ваш первый вариант правильный - 'если Sender = VST1' - это самый правильный способ сделать это. Однако, если вы пишете предположительно общий код, который зависит от идентификации конкретного компонента, вы, вероятно, делаете что-то неправильно. –
@KenWhite Это только для того, чтобы определить, какой VST называется процедурой, а не какие-либо другие типы компонентов. –
Да, я это понимаю, и я дал вам информацию в первом предложении. Вы по-прежнему ограничиваете использование своей * общей функции * компонентами определенного имени: 'if Sender = VST1 then ... else if Sender = VST2 then ...' и т. Д. Если у вас есть код, специфичный для управления, используйте отдельный обработчик событий для каждого элемента управления. Если код должен действовать на любом элементе управления VST, вам не нужно знать, какой он по имени. –