![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
svarogik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Представьте себе матрицу, 20Х20, теперь представьте числа внутри матрицы, от 1 до 16, я хочу чтоб у меня по матрице строилось изображение(ну это просто canvas и прочие методы) но теперь я хочу щелкнуть мышью на одну из этих прорисованных штучек и чтоб у меня в какую то переменную записалось число матрицы соответствующего этой клеточке, как это лучше реализовать, пока словами расскажите, может пойму. Да и еще если на соответствующей области изображение прорисованное не умещается я бы хотел чтоб была возможность прокрутки , но прокручивая я также мог достать значения матрицы которые соответствуют клеточкам. У меня пока в мыслях только как сделать прорисову без прокрутки, а как перехват мышью и прокрутку совершенно не представляю
|
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Название темы должно отражать её суть!
Вот что сказано в SDK:
Добавлено @ 22:07 И вообще, юзай WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_RBUTTONDOWN. Вопрос неоднократно обсуждался. Воспользуйся поиском по этим сообщениям. -------------------- Ll 2 |
|||
|
||||
svarogik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Скажешь мое название не отражает??? я спрашиваю как захватывать обьекты, точнее принцип захвата, и как он работает, СЛОВАМИ!! код мне пока не нужен, я хочу в этом разобраться, потом кодить
Добавлено @ 22:11 бать может координаты мышки проверяются на форме, типатого , иф координата у = координата у обьекта энд координата х = координата х обьекта, зен реад своиство обекта и присвоить переменнаь обьект.его клетка |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Попробуйте компонент TDrawGrid
у него и прокрутка есть и события onDrawCell onMouseDown также удобный метод DrawGrid1.MouseToCell(); - по координатам определить номер ячейки также DrawGrid1.CellRect(); координаты и размеры указанной ячейки -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
svarogik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
А картинки можно поставить в ячейки? и еще можно убрать серые поля?, и если можно в двух словах об основных методах расскажите
Добавлено @ 08:28 и вообще о всем обьекте, Как у каждой ячейки проверять? там ведь только весь обьект целиком! если картинки в ячейки вставлять нельзя, то мне не подойдет |
|||
|
||||
svarogik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
А вообще как в ДЕлфи прога выполняется? в паскале все понятно там код, ну из юнитов чето иногда грузится, а в делфи я поля основной программы незаметил, там сразу юниты, если я к примеру хочу чтоб в процедуре проверялась какая то переменная глобальная, и по этой переменной в процедуре делалось то или иное действие, я пробую над процедурой(относящейся к кнопке событие онклик, главная форма) присвоить переменной тру или фолз, но ошибка, так как это юнит я это собственно и сам понимаю, но не знаю как переменной присвоить значение, есть мысль что по событию формы Oncreate надо этой переменной присвоить значение, так чтоли?
Добавлено @ 09:08 но все же непонятно где код программы который не в юнитах Добавлено @ 09:20 относится ко всей теме. Если можете помоч то учтите. Я пытаюсь сделать аналог графического редактора, с крупными "пикселями", где каждым "цветом" выступает определенная картинка (подгружаемая из файла *.bmp). То что нарисовали должно быть сохранено в файле. Была бы матрица по которой строится изображение, точнее матрицу то я сделать могу , но потом чтоб её вывести это проблема , и предположим выбрал я элемент домик, а на построенном по матрице изображении в ячейке 4по горизонт,5по верт травка, щелкнул бы по этому элементу, предварительно выбрав элемент карандаш(или кисть) и вместо травки бы получился домик, и в матрице значение элемента( 4по горизонт,5по верт ) бы поменялось с 1 на 2, и на изображении графически я бывсе это увидел. |
|||
|
||||
Alexeis |
|
||||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
в Project1.exe svarogik - ОДИН ВОПРОС ОДНА ТЕМА !!!
fixedcols -> 0 fixedrows -> 0
что проверять?
Там же вам передаются все параметры каждой ячейки - прямоугольник т.е. rect рисуйте в указаной области на canvase drawgrida любой рисунок. У drawgrida - есть куча событий на перерисовку - в них и отрисовывайте все ваши картинки. Почитайте справку! OnColumnMoved OnDrawCell OnRowMoved OnSelectCell OnMouseDown OnMouseUp OnClick -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||||
|
|||||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
svarogik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Тогда я делаю не графический редактор, а редактор карт для игры, теперь понятно зачем? а где события смотреть для каждой ячейки?
Добавлено @ 12:11 и можно сделать типа цикла,
код плохо представляю пока только принцип |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
svarogik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
у DrawGrid1.MouseToCell(); первыми формальными параметрами что делать?
Добавлено @ 12:21 если нет событий как по щелчку изменить цвет отдельной ячейки? |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Как же нет MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
просто в MouseDown пишем
после вызова в Col, Row - будут нужные значения строки и столбца -куда нажали -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
svarogik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
вот что получилось остановился курсор после mousetocell(x,y,col, и вот что говорит
[Hint] MapEditor.pas(110): Variable 'buff' is declared but never used in 'TEditor.N4Click' [Hint] MapEditor.pas(155): Variable 'buff' is declared but never used in 'TEditor.N3Click' ну на это можно забить, [Error] MapEditor.pas(205): Types of actual and formal var parameters must be identical [Error] MapEditor.pas(41): Unsatisfied forward or external declaration: 'TEditor.DrawGrid1Click' [Error] MapEditor.pas(42): Unsatisfied forward or external declaration: 'TEditor.MouseToCell' [Fatal Error] Map_Editor.dpr(7): Could not compile used unit '..\MapEditor.pas' Добавлено @ 12:52 я понимаю что типы должны быть разные, почему ты сделал разными? Добавлено @ 12:53 тоесть одинаковые, зачем сделал разные? |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
svarogik, А это компилятор капризничает
ладно тогда так
это называется строгая проверка типов, формально Longint и Cardinal разные типы, реально на 100% тоже самое! Добавлено @ 12:56 что касается
так не надо ж было с заголовком копировать! у меня он просто называется drwgrd1 вместо обычного DrawGrid1! -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
svarogik |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
а это что за лажа [Error] MapEditor.pas(194): Undeclared identifier: 'MouseToCell'
Добавлено @ 13:05
спокойно, с этим я разобрался сам Добавлено @ 13:12 а если я добавлю
Добавлено @ 13:14 и говорит вот че [Error] MapEditor.pas(42): Unsatisfied forward or external declaration: 'TEditor.MouseToCell' [Fatal Error] Map_Editor.dpr(7): Could not compile used unit '..\MapEditor.pas' |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |