Я согласен, что вы не должны использовать свойство Hint
.Хотя бы потому, что в какой-то момент вы можете захотеть использовать свойство Hint
для чего-то другого.Я также несколько сомневаюсь в решениях, использующих Tag
.
. Думаю, я бы использовал экземпляр TDictionary<TSpeedButton,TAppPaths>
для отображения между кнопками и деталями приложения.Здесь я представляю, что TAppPaths
- это запись, содержащая две строки, одну для левого клика и одну для правого клика, например,
TAppPaths= record
Left: string;
Right: string;
end;
Для аргумента предположим, что этот экземплярпо имени ButtonDetails
.
Когда вы добавляете новую кнопку, вы пишете код, подобный следующему:
AppPaths.Left := AppDetails.Exe;
AppPaths.Right := AppDetails.SomeOtherFunction;
ButtonDetails.Add(NewButton, AppPaths);
Затем в обработчике события мыши формы вы пишете это так:
AppPaths := ButtonDetails[Sender as TSpeedButton];
И теперь у AppPaths
есть готовые к использованию оба пути.
Эта идея может быть легко расширена, чтобы включить в запись TAppPaths
столько информации, сколько вам нужно.
Кроме того, я думаю, что вы должны обрабатывать MouseUp
, а не MouseDown
, поскольку в Windows кнопки нажимаются при отпускании кнопки мыши, а не при ее нажатии.