Я уже писал как-то о том как создавалась диспетчерская программа. Для мобильности в ней предусмотрена механизмы для перемещения компонентов во время работы программы.
Сначала я сделал так:
Создал процедуры MouseMoveMain, MouseUpMain и MouseDownMain отвечающие за перемещение. После добавления нового компонента я в object inspector-е выбираю нужные мне события.
Время шло, программа ширилась и ручная правка мне надоела...
Во общем сегодня сел и переделал я все вот так (пример привожу для всех компонентов StaticText расположенных на форме):
var i : Integer;
begin
for i := 0 to ControlCount - 1 do
if Controls[i] is TStaticText
then
begin
(Controls[i] as TStaticText).OnMouseDown := StaticTextMainDown;
(Controls[i] as TStaticText).OnMouseMove := StaticTextMainMove;
(Controls[i] as TStaticText).OnMouseUp := StaticTextMainUp;
end;
end;
И опять, как вы видите, ничего сложного нет.
Перемещение работает с зажатой клавишей Ctrl.
Вот пример с исходным кодом.
http://dfiles.ru/files/y1swlrt9g
Сначала я сделал так:
Создал процедуры MouseMoveMain, MouseUpMain и MouseDownMain отвечающие за перемещение. После добавления нового компонента я в object inspector-е выбираю нужные мне события.
Время шло, программа ширилась и ручная правка мне надоела...
Во общем сегодня сел и переделал я все вот так (пример привожу для всех компонентов StaticText расположенных на форме):
var i : Integer;
begin
for i := 0 to ControlCount - 1 do
if Controls[i] is TStaticText
then
begin
(Controls[i] as TStaticText).OnMouseDown := StaticTextMainDown;
(Controls[i] as TStaticText).OnMouseMove := StaticTextMainMove;
(Controls[i] as TStaticText).OnMouseUp := StaticTextMainUp;
end;
end;
И опять, как вы видите, ничего сложного нет.
Перемещение работает с зажатой клавишей Ctrl.
Вот пример с исходным кодом.
http://dfiles.ru/files/y1swlrt9g
Комментариев нет:
Отправить комментарий