Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2010, 20:00   #1
PRAmus
Новичок
Джуниор
 
Регистрация: 05.06.2010
Сообщений: 1
По умолчанию Беда с координатами

На форме размешена картинка 300х600. По всей плошади картинке разбросано n-компонентов с текстом. С каждого из n-компонентов сняты две координаты Left и Top. к ним прибавлены координаты верхнего левого угла картинки. Это необходимо что бы верно рассчитать координаты n-элементов от УГЛА ФОРМЫ.
Затем событием нажатия на картинку мы снимаем координаты мыши от УГЛА ЭКРАНА!
Затем начинаю сравнивать координаты и получаеться, что координаты из одной точки снятые при помощ свойств Left и Top и координатами X и Y снятыми мышью различабться на 15 и 180 пикселей соответсвенно!
Вопрос: Что делать? Как уровнять точку отсчета?
PRAmus вне форума Ответить с цитированием
Старый 05.06.2010, 23:55   #2
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Рисунок бы приложили, понятней проблема бы была. А то неопределено, откуда цифры 15 и 180. Это Top\Left формы? Или ...?
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 11.06.2010, 12:47   #3
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию

В том то все и дело, что Left и Top компонентов у вас идут от угла формы а координаты мыши - от угла экрана. Отсюда наверное и разница в 15 и 180. Напишите код вашей программы, а то ничего не понятно.
Miha85193 вне форума Ответить с цитированием
Старый 11.06.2010, 14:55   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ClientToScreen для перевода оконных координат в экранные.
ScreenToClient наоброт.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.07.2010, 16:54   #5
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

На форме компонент ScrollBox, в нем компонент Image(5x5), он подвижный, двигаю его свойствами Top и Left этого Image. Все нормально пока не прокрутишь ScrollBars. Отчитываются координаты Image от краев видимой части ScrollBox-а. А мне нужно, что от макимально левого или верхнего края ScrollBox-а (т.е. истинные "0,0")... Как это можно сделать?
Поясню:
Например, на этом сайте мы же прокручиваем полосу справа, чтобы посмотреть, что внизу делается)))). Так вот, координаты отчитываются от верхнего края ВИДИМОЙ области, а нужно чтобы от самого верха.
даешь высокое напряжение

Последний раз редактировалось Vova777; 04.07.2010 в 16:58. Причина: добавление
Vova777 вне форума Ответить с цитированием
Старый 04.07.2010, 17:06   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

киньте внутрь скрола панель, и уже на нее все остальное.
если надо изменяйте размер панели .
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.07.2010, 18:06   #7
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Внутри скрола есть еще 4 больших Image, на них как бы фон грузится, а маленький на слой выше их. Они большие, так что у меня по-любому прокрутка присутствует. Как прокрутишь, так и начинается.... Нужно чтобы от самого верхнего левого угла скрола отсчитывать. Может как нибудь попробовать от угла картинки (0,0) отсчитывать? Как бы это реализовать?....
Или так: внутреннее смещение скрола относительно его основной нулевой точки минус положение по левому краю или верхнему? Только как реализовать это?
даешь высокое напряжение

Последний раз редактировалось Vova777; 04.07.2010 в 18:12. Причина: добавление
Vova777 вне форума Ответить с цитированием
Старый 13.07.2010, 00:41   #8
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

я могу попробовать помочь, но мне нужен либо код ,а лучше всего вложение. и ещё твоя аська для более быстрого освоения твоего кода. всё делается на метсенатской основе))))
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 17.07.2010, 18:54   #9
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Зачем код? Все предельно просто представить! Но я уже решил эту задачу так:
1)начали движение
2)получили координаты прибытия
3)отняли от них положение скроллеров и получили то что нужно

Лучше скажи, ты алгоритм поиска пути не пробовал написать?
Вот тут помощь нужна, есть какой-то образец кода, осталось обработать под мою прогу, тут и застрял...
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 20.07.2010, 01:57   #10
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

зачем поиск? просто вставь OpenDialog а дальше так:

добавляешь три стандартных модуля:

ExtCtrls,
FileCtrl,
Jpeg.

и 4 переменные:

aPath: string; // каталог, который выбрал пользователь
aSearchRec : TSearchRec; // информация о файле
Pictures : TStringList; // список иллюстраций
r: integer; // номер иллюстрации

Код:
 if SelectDirectory('Выберите каталог', '',aPath) then
  begin
    aPath := aPath + '\';

    // сформировать список иллюстраций
    r := FindFirst(aPath+'*.jpg',faAnyFile,aSearchRec);
    if r = 0 then
      begin
        // в указанном каталоге есть jpg-файл
        Pictures.Clear; // очистить список иллюстраций
        Pictures.Add(aSearchRec.Name); // добавить имя файла в список иллюстраций

      end;

    // получить имена остальных jpg-файлов
    repeat
      r := FindNext(aSearchRec); // получить имя следующего jpg-файла
      if r = 0 then
          Pictures.Add(aSearchRec.Name);
    until ( r <> 0);

    try
       Form1.Image1.Picture.LoadFromFile(aPath + Pictures[n]);
       except on EInvalidGraphic do Form1.Image1.Picture.Graphic := nil;
    end;
  end;
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 20.07.2010 в 01:58. Причина: очепятка
Rin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
беда Морячок Паскаль, Turbo Pascal, PascalABC.NET 3 05.06.2010 15:41
беда на форме lamerk Microsoft Office Access 2 29.11.2009 18:28
Беда не приходит одна! Tayfun Свободное общение 6 30.12.2007 07:58