Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Программа про окна

Автор: --==KliM==-- 24.05.2006 20:11

Составить программу, получающую информацию о двух окнах (координаты верхнего левого угла, ширину и высоту. nea.gif

Заранее спасибо

Автор: volvo 24.05.2006 20:21

--==KliM==--,
о каких окнах речь? Если о текстовых (созданных с помощью модуля CRT), то WindMin содержит координаты верхнего левого, а WindMax - координаты нижнего правого угла...
НО... В каждый момент времени только одно окно может быть активным, следовательно, работать с двумя окнами сразу, используя ЭТИ переменные, нельзя...

Если же речь об окнах графических (созданных с помощью процедур/функций модуля Graph), то там все зависит от реализации окон.

Автор: --==KliM==-- 24.05.2006 20:27

Цитата(volvo @ 24.05.2006 18:21) *

--==KliM==--,
о каких окнах речь? Если о текстовых (созданных с помощью модуля CRT), то WindMin содержит координаты верхнего левого, а WindMax - координаты нижнего правого угла...
НО... В каждый момент времени только одно окно может быть активным, следовательно, работать с двумя окнами сразу, используя ЭТИ переменные, нельзя...

Если же речь об окнах графических (созданных с помощью процедур/функций модуля Graph), то там все зависит от реализации окон.


Я в этом ничо не понимаю! blink.gif Забыд дописать что надо еще ответить на вопрос пересекаются ли они!

Автор: volvo 24.05.2006 20:42

Вот сначала выясни, потом будешь спрашивать... А то устроили тут "принеси то, не знаю что"...

Автор: APAL 24.05.2006 20:43

"получающую информацию" - видимо от пользователя задаются координаты, а в результате нужно выдать пересекаются они или нет.

Так?

Автор: --==KliM==-- 24.05.2006 21:32

Цитата(APAL @ 24.05.2006 17:43) *

"получающую информацию" - видимо от пользователя задаются координаты, а в результате нужно выдать пересекаются они или нет.

Так?


Скорее всего ДА. Если знаешь напиши хоть чонить, а то экзамены скора!

Автор: APAL 24.05.2006 21:52

Вот тебе функция:

Function InWin(x0,y0,xW,yH,xi,yi : byte) : Boolean;
Begin
If ((xi>=x0) and (xi<=(x0+xW-1))) and ((yi>=y0) and (yi<=(y0+yH-1))) then InWin:=True else InWin:=False;
End;


А дальше попробуй додумать как ее использовать.

Автор: --==KliM==-- 25.05.2006 0:12

А полностью написать не можешь, а? Хотя и за это большое спасибо good.gif может как нибудь додумаюсь. nea.gif

Автор: APAL 26.05.2006 0:14

Код
Flag:=False;
For i:=x1 to x1+xW1-1 do Flag:=Flag or (InWin(x2,y2,xW2,yH2,i,y1) or InWin(x2,y2,xW2,yH2,i,y1+yH1-1));
For i:=y1 to y1+xW1-1 do Flag:=Flag or (InWin(x2,y2,xW2,yH2,x1,i) or InWin(x2,y2,xW2,yH2,x1+xW1-1,i));