Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Вниз

Кому СПАСИБО говорить?   Найти похожие ветки 

 
_Александр_   (2002-08-09 04:35) [0]

Объясните, мне, балбесу, пожалуйста, если можно по-русски, описания типа TRect - 4 часа промучался, пока до меня не дошло, что поля Bottom и Left - это ширина и высота экземпляра этого типа, а не Bottom и Left (Yниж Xправ) региона. Почему бы их так сразу и не назвать - Height и Width соотв.
В хелпе на писано:
ширина региона = Right - Left
высота = Bottom - Top!

Ну в чём я не прав? Разъясните, пожалуйста...
Ну очень обидно потерять столько времени из-за глупых мелочей, я уж чуть ли с ума не начал сходить, разбираясь, почему не работает..
Заранее благодарен...


 
Хм..   (2002-08-09 04:46) [1]

Врожденная вежливость не позволяет РАЗЪЯСНИТЬ.
Но прав именно хелп, а не ВЫ.
Подробности - после детализации вопроса.


 
_Александр_   (2002-08-09 05:41) [2]

Детализация:
Bottom - (низ - англ.) - по идее это слово должно употребляться для обозначения какой-либо координаты (по оси Y) нижней части какого-либо объекта, а не его ВЫСОТЫ.
Left - (левый, слева - англ.) - по идее это слово должно употребляться для обозначения какой-либо координаты (по оси X) правой части какого-либо объекта, а не его ШИРИНЫ.

:)


 
_Александр_   (2002-08-09 05:43) [3]

Сорри - ОШИБОЧКА!
Вместо Left - читать Right (справа, правый) - совсем устал... :)


 
Юрий Зотов   (2002-08-09 08:26) [4]

Зря Вы 4 часа мучались, явная перетренировка получилась. Поля TRect, как правило, содержат именно то, что соответствует их английскому названию. Другое дело, что никто не мешает нам (и не только нам) записывать в них и что угодно другое - хоть ширину с высотой, хоть телефон любимой девушки. Но, к счастью, такое встречается нечасто и обычно все же документируется.


 
_Александр_   (2002-08-09 08:42) [5]

2 Юрий Зотов © (09.08.02 08:26)
Может тогда объясните почему приведённый ниже фрагмент кода, задаёт прямоугольную область, точнее - квадрат с лев. верхн. углом в точке 100,100 и шириной/высотой(длиной) - 110/110, а не
область 10x10 пикселей?

var
R : TRect;
begin
R.Left := 100;
R.Top := 100;
R.Right := 110;
R.Bottom := 110;

MP1.DisplayRect := R;
end;

Пояснения:
MP1 - TMediaPlayer1;
MP1.Display := Panel1;
За начало координат принимаю верхний левый угол Панели1.


 
Alx2   (2002-08-09 08:50) [6]

>_Александр_ (09.08.02 08:42)
Странно это как-то.
Аналогично можно спросить почему 2+3 дает сумму 2 и 3, а не их произведение.


 
MBo   (2002-08-09 08:52) [7]

_Александр_

Не стоит делать так далеко идущих выводов на основе ограничений мин. размера mediaplayer.setdisplayrect


 
Alx2   (2002-08-09 08:53) [8]

>Alx2 © (09.08.02 08:50)
Даже не много не так.
Дело в том, что область 10x10 понятие более общее, чем квадрат 10х10 с такими-то координатами.


 
_Александр_   (2002-08-09 08:58) [9]

Наверное, я сошёл с ума...


 
_Александр_   (2002-08-09 09:00) [10]

2 Alx2 © (09.08.02 08:50)

Ширина = R.Right - R.Left = 110 - 100 = 10
, или я не прав?

2 MBo © (09.08.02 08:52)

ни о каких ограничениях и Constraints-ах я не веду речи...


 
Alx2   (2002-08-09 09:10) [11]

>_Александр_ (09.08.02 09:00)
>Ширина = R.Right - R.Left = 110 - 100 = 10
Прав.

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


 
MBo   (2002-08-09 09:10) [12]

>ни о каких ограничениях и Constraints-ах я не веду речи.
поставь эксперименты:
1) R.Left := 100;
R.Top := 100;
R.Right := 110;
R.Bottom := 110;
canvas.Rectangle(r);

2) procedure TForm1.Button1Click(Sender: TObject);
var
R : TRect;
i:integer;
begin
R.Left := 100;
R.Top := 100;
R.Bottom := 300;
for i:=20 downto 1 do begin
R.Right := 100+10*i;
MP1.DisplayRect := R;
caption:=inttostr(i*10);
panel1.refresh;
sleep(300);
end;
end;


 
_Александр_   (2002-08-09 09:22) [13]

2 Alx2 © (09.08.02 09:10)
Вы абсолютно правы, вот именно так,я , в начале, и думал.
Но, в результате опытов, оказалось:
при
R.Right = 110 и R.Left = 100;
(Ширина = R.Right - R.Left = 110 - 100 = 10)
Прямоугольная область имеет ширину не 10 пикселей, а 110.
Аналогичная ситуация и с высотой (R.Top = 100, R.Bottom = 110).

Вот и вопрос у меня возник в чём:
почему ширина этой прямоугольной области равна 110 а не 10 (110 -100) пикселей?


 
_Александр_   (2002-08-09 09:28) [14]

2 MBo © (09.08.02 09:10)
Вы, тоже абсолютно правы.
Но, опять - НО!
C канвой формы работает - просто замечательно.
Но, вот с дисплеем MediaPlayer-а - работает вышеописанным способом.

Ради интереса - попробуйте сами.


 
Alx2   (2002-08-09 09:29) [15]

>_Александр_ (09.08.02 09:22)
Некоторые вещи не могут быть меньше какого-то ограничения. К TRect это не относится. Он может хранить любые значения. Значит ищи виноватого. Того, кто не хочет быть мелким.


 
_Александр_   (2002-08-09 09:58) [16]

2 Alx2 © (09.08.02 09:29)

MediaPlayer1.DisplayRect < эта штука может быть и большой и маленькой... :)

У меня, всё замечательно работает, используя MediaPlayer1.DisplayRect.Right - как ширину, а MediaPlayer1.DisplayRect.Bottom - как высоту прямоугольной области!

Вот я и решил спросить совета.... что за дела?...


 
Юрий Зотов   (2002-08-09 09:59) [17]

> _Александр_

Если речь идет о TMediaPlayer, то Вы правы, Но сразу так и нужно было сказать, а не обижаться на весь TRect в принципе. И не мучаться 4 часа, а посмотреть код и справку. Которые проясняют вопрос за 5 минут.

Помните, я говорил:
- никто не мешает ... записывать в них и что угодно другое;
- такое ... документируется.

OK. Пытаемся выставить DisplayRect и ничего не получается. Думаем - в чем же дело, давай-ка посмотрим, а как же он выставляется? Смотрим код метода SetDisplayRect и видим, что идет посылка команды mci_Put. Думаем дальше - а что это за команда и с чем ее едят? Открываем справку API и видим: "For video-overlay devices, lpDest points to an MCI_OVLY_RECT_PARMS structure". Отлично, в той же справке смотрим эту структуру и читаем:

rc
Rectangle containing positioning information. RECT structures are handled differently in MCI than in other parts of Windows; in MCI, rc.right contains the width of the rectangle and rc.bottom contains its height.

И сразу все становится ясно.


 
_Александр_   (2002-08-09 10:17) [18]

2 Юрий Зотов © (09.08.02 09:59)

Не буду ничего писать о мелких деталях, с которыми я не согласен - это пустяки, по сравнению с тем, как теперь я успокоился - благодаря Вашему ответу.
Преогромное, спасибо, этот ответ - то, чего я ждал... :)

Конечно же, не стоило так всё тщательно разжёвывать(за это отдельная благодарность :)), упор в вашем ответе я поставил на "ограничений мин. размера ", а не на "mediaplayer.setdisplayrect" слова, поэтому он был откинут в сторону...

Ещё раз благодарю.

Может, кто прочитает - спасёт себе пару часов времени... :)


 
Юрий Зотов   (2002-08-09 10:27) [19]

Дык... про ограничения я и не говорил, вроде бы. Хотя не исключено, что и они тоже существуют.

Вообще, при решении проблем я стараюсь руководствоваться двумя правилами:

1. "Look the source, Luke!"
2. RTFM.

И всем советую то же самое. В 90% случаев сильно экономит время и нервы. :o)


 
_Александр_   (2002-08-09 10:32) [20]

Дык, действительно не говорил. :)
- НЕ туда всмотрелся, как никак 26й час на работе...



 
Юрий Зотов   (2002-08-09 10:42) [21]

Точно перетренировка. Бывает.
Домой... и спать... спать... спать...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
1-60643
^Sanya
2002-08-08 17:36
2002.08.19
Как узнать из файла ресурсов верссию проекта?


1-60690
esVer
2002-08-06 11:22
2002.08.19
Не происходит сохранения в ini-файл


14-60830
Dimich1978
2002-07-24 10:58
2002.08.19
Вопрос по прпограмме


4-60891
Керик
2002-06-09 05:36
2002.08.19
Как сделать окно активным


1-60570
alexsandri
2002-08-07 18:18
2002.08.19
как програмно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский