System.Drawing.Rectangle Не удается найти установщик свойства для «bottom» или «Left», «Right» или «Top» - PullRequest
0 голосов
/ 29 сентября 2011

В Delphi Prism я пытаюсь установить свойства Rectangle, слева направо вверх или вниз, и компилятор постоянно говорит, что не может найти установщик для установки значения этих свойств для Rectangle.

Я смотрел на другие вопросы, связанные с переполнением стека, и не нашел хорошего ответа.

Я хочу иметь возможность установить прямоугольник, это верхнее, нижнее, правое или левое значения, чтобы можно было сделать что-то вроде следующего.

dragRect.right := dragRect.left;
dragRect.bottom := dragRect.top;

Очевидно, вы не можете этого сделать. Как вы делаете то же самое в Delphi Prism?

1 Ответ

0 голосов
/ 30 сентября 2011

Как отметил Ханс Пассант, важно понимать разницу между типом значения и ссылочным типом.Поскольку System.Drawing.Rectangle не имеет установщиков для левого, верхнего, правого или нижнего значений, вы просто не можете установить для них какие-либо значения, а только прочитать то, что уже есть.Единственный раз, когда они обновляются, это когда вы на самом деле создаете объект Rectangle, передавая высоту, ширину и точки XY ИЛИ устанавливая X, Y, высоту и / или ширину свойств прямоугольника.

Так как в моей программе яТолько пытаясь определить границу или область для рисования формы прямоугольника, я устанавливаю X, Y, ширину или высоту.Работает нормально.Что касается определения ширины и высоты прямоугольника, вам не нужно один раз устанавливать его ширину и высоту один раз.Каждый раз, когда вы сбрасываете значение прямоугольника X и / или Y, оно сохраняет свою ширину и высоту.Таким образом, он знает, каковы его правые и нижние значения.

Например, вы можете сделать это:

dragRect.X := 100;
dragRect.width := 10;

, но вы не можете сделать это:

dragRect.left := 100;
dragRect.right :=110;
...