У меня есть TFrame, который я хочу, чтобы изменить размер, щелкнув и перетащив нижний правый угол. Функциональность должна быть;Как запрограммировать дескриптор размера на delphi TFrame?
Когда мышь перемещается в нижнем правом углу, курсор должен измениться, чтобы отразить, что размер рамки может быть изменен. Если не в нижнем углу, курсор должен быть стандартной стрелкой.
Во время выполнения будут установлены элементы управления поверх фрейма, поэтому я не могу использовать событие OnMouseMove. Поэтому я использую это;
private
procedure WMSetCursor(var Msg: TWMSetCursor); message WM_SETCURSOR;
procedure TfraApplet.WMSetCursor(var Msg: TWMSetCursor);
var
Point: TPoint;
begin
Point := ScreenToClient(Mouse.CursorPos);
Label1.Caption := 'X:' + IntToStr(Point.X) + ' Y:' + IntToStr(Point.Y);
// Resize area (bottom right)
if (Point.X >= (Width - 10)) and (Point.Y >= (Height - 10)) then
Screen.Cursor := crSizeNWSE
else
Screen.Cursor := crDefault;
end;
Однако, как только курсор получает значение crSizeNWSE моих программ перестает получать сообщение WM_SETCURSOR окна.
Есть ли другое сообщение Windows, которое я могу получить, когда курсор не установлен как стрелка по умолчанию?
Вы не устанавливаете результат сообщения –
Что заставило вас решить, что вы прекратите получать сообщение? –
Дэвид, спасибо за указатель. Как вернуть значение? Если я использую функцию, возвращающую логическое значение, я получаю ошибку при компиляции. – srayner