Delphi:Вопрос-Ответ
| |
TimKruz | Дата: Понедельник, 05 Ноября 2012, 14:28 | Сообщение # 261 |
старожил
Сейчас нет на сайте
| Quote (Destroy) чтобы при при перетаскивании одного изображения на другое Ты перетаскиваешь TImage'ы что ли? Quote (Destroy) процесс столкновения Просто сравниваешь относительные координаты и размеры TImage'в. Как-то так: Code if ((image1.top<image2.top-image1.height) //Сравниваем координаты компонентов and (image1.top>image2.top+image2.height)) //по вертикали (top - расстояние от верхнего края формы) and ((image1.left<image2.left-image1.width) //и по горизонтали (left - расстояние от левого края формы) and (image1.left>image2.left+image2.width)) //с учётом их размеров (height - высота, width - ширина) then showmessage('блаблабла'); Ну код из головы написал, может не работать, а проверять лень, так что поэкспериментируй с этими переменными и их сравнением сам, если вдруг что-то не получится.
|
|
| |
Destroy | Дата: Понедельник, 05 Ноября 2012, 15:54 | Сообщение # 262 |
постоянный участник
Сейчас нет на сайте
| Quote (TimKruz) Ты перетаскиваешь TImage'ы что ли? да при перетаскивании 1 на 2, 1 застревает и никак его не взять. а сообщение все так же не вылазиет.Добавлено (05.11.2012, 15:54) --------------------------------------------- может как нибудь через координаты х,у?
|
|
| |
TimKruz | Дата: Понедельник, 05 Ноября 2012, 20:51 | Сообщение # 263 |
старожил
Сейчас нет на сайте
| Quote (Destroy) при перетаскивании 1 на 2, 1 застревает и никак его не взять. а сообщение все так же не вылазиет. Покажи, что ли, код, что ты там такого понаписал... Наверное, у тебя обработка перемещения работает только до столкновения. Quote (Destroy) может как нибудь через координаты х,у? Какие X и Y? У визуальных (отображаемых на форме) компонентов Delphi координата X (относительно левого верхнего угла формы) - это переменная left компонента, а Y - это top.
Сообщение отредактировал TimKruz - Понедельник, 05 Ноября 2012, 20:52 |
|
| |
Destroy | Дата: Понедельник, 05 Ноября 2012, 21:02 | Сообщение # 264 |
постоянный участник
Сейчас нет на сайте
| все тоже самое что и ты написал
|
|
| |
Anifest | Дата: Понедельник, 05 Ноября 2012, 21:07 | Сообщение # 265 |
почетный гость
Сейчас нет на сайте
| а как в дельфи открыть содержимое файла в текстовое поле? Или дельфи не может такое?
Почему люди, которые не любят правду, считают ее оффтопом???
|
|
| |
TimKruz | Дата: Понедельник, 05 Ноября 2012, 21:33 | Сообщение # 266 |
старожил
Сейчас нет на сайте
| Quote (Anifest) а как в дельфи открыть содержимое файла в текстовое поле? Стандартными функциями компонентов TMemo (простое текстовое поле) или TRichEdit (расширенное текстовое поле): Code Memo1.Lines.LoadFromFile('имя_файла'); RichEdit1.Lines.LoadFromFile('имя_файла'); Либо считывай точно так же, как в любом языке: Code AssignFile(файловая_переменная, 'имя_файла'); Open(файловая_переменная); Read(файловая_переменная, текстовая_перменная); CloseFile(файловая_переменная);
Quote (Destroy) все тоже самое что и ты написал Действительно, сейчас проверил - не работает. Просто я перепутал знаки "<" и ">". Вот так работает: Code var Form1: TForm1; img1dragging:boolean; //Флаг перетаскивания 1-ой картинки lastpos:tpoint;
implementation
{$R *.dfm}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin img1dragging:=true; lastpos.x:=mouse.CursorPos.x-image1.left; lastpos.y:=mouse.CursorPos.y-image1.Top; end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if img1dragging then begin if (image1.top >(image2.top -image1.height)) and (image1.top <(image2.top +image2.height)) and (image1.left>(image2.left-image1.width)) and (image1.left<(image2.left+image2.width)) then begin showmessage('текст'); //Вот тут нужно либо вернуть картинку на предыдущую позицию, //либо сместить куда-нибудь, чтобы она снова не задевала вторую картинку image1.Top:=10; image1.Left:=10; end else begin image1.Top:=mouse.CursorPos.Y-lastpos.Y; image1.Left:=mouse.CursorPos.X-lastpos.X; end; end; end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin img1dragging:=false; end; Ну это только один из способов решения задачи, самый простой и без дополнительных проверок, просто я не знаю, зачем тебе это нужно.
|
|
| |
Anifest | Дата: Понедельник, 05 Ноября 2012, 21:35 | Сообщение # 267 |
почетный гость
Сейчас нет на сайте
| Ого, я думал нельзя так. Ну спасибо
Почему люди, которые не любят правду, считают ее оффтопом???
|
|
| |
Destroy | Дата: Пятница, 16 Ноября 2012, 16:48 | Сообщение # 268 |
постоянный участник
Сейчас нет на сайте
| Quote (TimKruz) Ну это только один из способов решения задачи, самый простой и без дополнительных проверок, просто я не знаю, зачем тебе это нужно. biggrin игру типа стратегии делаю
Quote //либо сместить куда-нибудь, чтобы она снова не задевала вторую картинку image1.Top:=10; image1.Left:=10;
можно сдать так image1.visible:=false а так спасибо большое, как всегда помог))Добавлено (16.11.2012, 16:48) --------------------------------------------- возникла проблема при компиляции delphi: out of memory while expanding memory stream. из за чего? похоже что дело в памяти. в проекте использовал 4 формы, после того как добавил 5 вот такое вылезло
Сообщение отредактировал Destroy - Вторник, 06 Ноября 2012, 15:47 |
|
| |
TimKruz | Дата: Пятница, 16 Ноября 2012, 19:05 | Сообщение # 269 |
старожил
Сейчас нет на сайте
| Quote (Destroy) возникла проблема при компиляции delphi: out of memory while expanding memory stream. из за чего? похоже что дело в памяти. в проекте использовал 4 формы, после того как добавил 5 вот такое вылезло Правильно, Делфи не хватает памяти... Делфи кушает много памяти, особенно если система типа Win7 - баг такой; связано, наверное, с совместимостью старой Делфи с механизмами распределения памяти новых Виндоус...
У меня на Win7 Delphi7 при каждом запуске программы из-под среды (F9) съедает дополнительные мегабайты памяти и почему-то не возвращает обратно, поэтому я теперь все программы сначала компилирую (F9+ctrl) без запуска, а потом запускаю из проводника Windows - так Delphi не тратит память и тестируемая программа запускается быстрее; правда, тут недоступны возможности отладчика, но он обычно не нужен.
Вообще, после запуска Делфи использует где-то 50 МБ оперативной памяти, потом может увеличиваться до бесконечности, если проявляется этот глюк. Помогает перезагрузка Делфи или... или запуск чего-нибудь тяжёленького, типа игры какой-нибудь - новая программа забирает всё необходимое ей пространство, при этом Windows отбирает лишнюю память у других программ (или перемещает в файл подкачки), т.е. после этого у Делфи остаётся 20-30 МБ, которые восполняются до необходимого ей объёма, но не более (ну у меня так много раз было); правда, после этого память снова будет утекать, если запускать программы из-под самой Delphi... Ещё можно поставить на комп больше оперативной памяти.
Наверняка у современных версий Delphi таких проблем нет...
|
|
| |
Aspire | Дата: Понедельник, 26 Ноября 2012, 16:38 | Сообщение # 270 |
был не раз
Сейчас нет на сайте
| Есть один вопрос... Но глобальный в моем понимании... Не мог бы ли кто-нибудь подтянуть меня в Delphi... Очень нужны знания по этому языку, но достойного руководства в просторах интернета не нашел... Прошу отписаться в личку тех, кто смог бы мне помочь в этом...
Aspire... LacostaPerson... Lacosta...
|
|
| |
karuy | Дата: Понедельник, 26 Ноября 2012, 18:05 | Сообщение # 271 |
заслуженный участник
Сейчас нет на сайте
| Quote (Aspire) но достойного руководства в просторах интернета не нашел Не искал значит или можешь перечислить руководства которые ты зачислил в недостойные и сказать почему?
|
|
| |
Destroy | Дата: Понедельник, 26 Ноября 2012, 18:24 | Сообщение # 272 |
постоянный участник
Сейчас нет на сайте
| Quote (Aspire) достойного руководства в просторах интернета не нашел я вот например в программировании вообще ничего толком не мог понять, пока в один день учитель по информатике не начал обучать паскалю. Тогда все стало предельно понятно, и в дальшейшем помогло начать осваивать дельфи. может стоит подождать 9 или 10 класс когда будет в программе школы программирование? а то самому начинать то, о чем понятия не имеешь мне кажется очень тяжело
|
|
| |
Aspire | Дата: Понедельник, 26 Ноября 2012, 19:15 | Сообщение # 273 |
был не раз
Сейчас нет на сайте
| Quote (Destroy) может стоит подождать 9 или 10 класс когда будет в программе школы программирование Я бы с радостью послушал разъяснения учителя по паскалю, но в нашей школе (я в 10 классе) до сих пор не преподавали программирование - поэтому я и решил начинать сам... Но естественно, что мне будет легче и приятнее изучать программирование с хорошим наставником...
Quote (karuy) Не искал значит или можешь перечислить руководства которые ты зачислил в недостойные и сказать почему Возможно я неправильно выразился. Я имел ввиду, что сухое чтение руководств недостаточно полно описывает все возможности применения языка. К тому же можно рассчитывать на опыт обучающего программиста и уточнить у него недостаточно понятные действия.
Aspire... LacostaPerson... Lacosta...
Сообщение отредактировал Aspire - Понедельник, 26 Ноября 2012, 19:16 |
|
| |
TimKruz | Дата: Понедельник, 26 Ноября 2012, 20:15 | Сообщение # 274 |
старожил
Сейчас нет на сайте
| Quote (Aspire) Я бы с радостью послушал разъяснения учителя по паскалю, но в нашей школе (я в 10 классе) до сих пор не преподавали программирование Да, в некоторых школах наплевательски относятся к информатике... Зато часто можно найти в городе специальные курсы по программированию, или в интернете видео-курсы... Вещь на любителя, но кому-то ведь помогает...
Возьми какой-нибудь самоучитель "для чайников" по Паскалю или Делфи, там хотя бы основы программирования описаны. Потом можно настоящее руководство взять, но там уже серьёзней. Если совсем нифига о программировании не знаешь - скачай школьный учебник, в котором описываются теоретические основы программирования, алгоритмы и т.д. Потом должно быть проще изучать самоучитель или руководство. Можно ещё уроки в интернете поискать, но это, на мой взгляд, хуже книги.
Quote (Aspire) сухое чтение руководств недостаточно полно описывает все возможности применения языка А зачем тебе ВСЕ возможности применения языка? Большинство современных языков универсальны. Да и потом. Ты же не одно руководство прочитаешь, а несколько, из каждого почерпнёшь новые знания, дополнишь... Естественно, нужно не сухо читать умные книжки, а пробовать новые знания на практике, закреплять теорию практикой... Quote (Aspire) К тому же можно рассчитывать на опыт обучающего программиста и уточнить у него недостаточно понятные действия. Заходишь на любой форум, где есть программисты - спрашиваешь, что нужно, в теме или в личных сообщениях...
Quote (Aspire) достойного руководства в просторах интернета не нашел... Вот, например, поищи: "Стив Тейксейра, Ксавье Пачеко - Delphi 5. Руководство разработчика" (ещё для Delphi 6 обновленная версия есть). Руководство старое, но, на мой взгляд, хорошее. Авторы работали в Borland и, кажется, участвовали в разработке Delphi.
Сообщение отредактировал TimKruz - Понедельник, 26 Ноября 2012, 20:24 |
|
| |
Aspire | Дата: Понедельник, 26 Ноября 2012, 22:01 | Сообщение # 275 |
был не раз
Сейчас нет на сайте
| Quote (TimKruz) А зачем тебе ВСЕ возможности применения языка? На изучение языков программирование меня сподвигла игра R2Farming. Я хотел бы сделать подобный проект, но другой тематики... Мне кажется для этого проекта не достаточно школьных знаний.
Quote (TimKruz) Заходишь на любой форум, где есть программисты - спрашиваешь, что нужно, в теме или в личных сообщениях... Хорошо, что на этом форуме нашлись люди, которые готовы мне помочь.
Quote (TimKruz) Вот, например, поищи: "Стив Тейксейра, Ксавье Пачеко - Delphi 5. Руководство разработчика" (ещё для Delphi 6 обновленная версия есть). Спасибо за совет - обязательно найду, прочитаю и попытаюсь понять.
Aspire... LacostaPerson... Lacosta...
|
|
| |
Bahamamam | Дата: Воскресенье, 02 Декабря 2012, 22:43 | Сообщение # 276 |
был не раз
Сейчас нет на сайте
| // Проблема решена
Сообщение отредактировал Bahamamam - Воскресенье, 02 Декабря 2012, 23:12 |
|
| |
Destroy | Дата: Среда, 05 Декабря 2012, 20:37 | Сообщение # 277 |
постоянный участник
Сейчас нет на сайте
| есть у кого пример реализации изометрии или хотя бы какие соображения по этому поводу?
|
|
| |
karuy | Дата: Среда, 05 Декабря 2012, 21:14 | Сообщение # 278 |
заслуженный участник
Сейчас нет на сайте
| Quote (Destroy) или хотя бы какие соображения по этому поводу? OpenGL если много времени лишнего или любая надстройка над OpenGL, если нет желания свои костыли строчить.
|
|
| |
Destroy | Дата: Четверг, 06 Декабря 2012, 14:08 | Сообщение # 279 |
постоянный участник
Сейчас нет на сайте
| то что тут глсцена нужна это понятно)) а примерный алгоритм или еще какие нибудь действия?
|
|
| |
karuy | Дата: Четверг, 06 Декабря 2012, 17:45 | Сообщение # 280 |
заслуженный участник
Сейчас нет на сайте
| Quote (Destroy) а примерный алгоритм или еще какие нибудь действия? Примерный алгоритм изометрии? - Ставишь камеру под углом: вот и изометрия.
|
|
| |
|