Если компонент не является приемником Drag&Drop, или обработчик события OnDragOver отсутствует или возвращает False, то появляется другой курсор (по умолчанию crNoDrop).
Событие:
Code: |
property OnDragDrop: TDragDropEvent ; TDragDropEvent = procedure(Sender, Source: TObject; X, Y: Integer) of object; |
возникает во время перетаскивания при отпускании левой кнопки мыши над элементом, готовым к приему. Параметры его имеют тот же смысл, что и в предыдущем случае.
В приведенном примере вы можете перетащить одну из геометрических фигур в вашей форме (компонент TShape) на статический текст Label 1. Для этого в Label 1 описано два метода: Label IDragOver сигнализирует о готовности принять только компоненты класса TShape, a Label IDragDrop вычисляет площадь фигуры в квадратных сантиметрах в зависимости от ее вида (эллипс, прямоугольник, прямоугольник с закругленными углами).
Code: |
procedure TPormI -LabellDragOver (Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source is TShape; end;
procedure TFormI .LabellDragDrop (Sender, Source: TObject; X, Y: Integer); var f : single; i : Integer; begin with Source as TShape do begin i := Width; if i > Height then i:= Height; case Shape of stRectangle: f := Width*Height; stSquare: f := i * i; stCircle: f := Pi * i*i / 4; stEllipse: f := Pi * Widths-Height / 4; stRoundRect, stRoundSquare: begin if Shape = stRoundRect then f := Width*Height else f := i * i; i := (i - Pen.Width + 1) div 4; f := f - (4-Pi)*i*i; end; end; end; f := f / Sqr(Forml.PixelsPerInch / 2.54); Labell-Caption := FloatToStrF(f, ffFixed, 5, 2)+ ' кв.см'; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!