Topic: Screen определённой области, с сохранением в базе

Добрый день.
Появилась необходимость сохранять часть области в виде картинки в самой базе, но не могу понять как сделать.
Смысл в том, что на форме есть главная картинка, и куча мелких, которые перемещаются мышкой, (что то вроде блок схемы), а вот конечный результат нужно сохранить в виде одной картинки, чтоб потом её выдать в отчёт. Самое простое по моему это делать скрин определённого участка формы с сохранением в базу и последующего вывода в отчёт.

Re: Screen определённой области, с сохранением в базе

Хотел прикрепить пример, но форум не даёт, пишет что большой объем, zip архив на 5,25мБ

Re: Screen определённой области, с сохранением в базе

Sfinks_M wrote:

Хотел прикрепить пример, но форум не даёт, пишет что большой объем, zip архив на 5,25мБ

у далите файлы dll и exe

Re: Screen определённой области, с сохранением в базе

Ок, удалил

Post's attachments

Attachment icon Pic.zip 17.92 kb, 311 downloads since 2019-02-25 

Re: Screen определённой области, с сохранением в базе

Задачу легко можно было бы решить с помощью метода TCustomForm.GetFormImage(); но в TAForm он недоступен....

Визуальное программирование: блог и телеграм-канал.

Re: Screen определённой области, с сохранением в базе

Думаю будет лучше сохранять координаты расположения элементов, а не рисунок, иначе база будет слишком большой. Доработал ваш проект.

Post's attachments

Attachment icon Pic_fixed.zip 33.12 kb, 293 downloads since 2019-02-25 

Dmitry.

7 (edited by Sfinks_M 2019-03-11 09:07:08)

Re: Screen определённой области, с сохранением в базе

Ну не просто получается, цель скрипта была - уменьшение кода, мне в отчёт нужно выводить, т.е. позиции картинок в коде отчёта ещё прописывать пришлось smile Ну смысл я понял, буду таким образом решать.
Может кому пригодится, добавил сам отчёт с расстановкой в пример.

Post's attachments

Attachment icon Pic_fixed2.zip 35.38 kb, 290 downloads since 2019-02-26 

Re: Screen определённой области, с сохранением в базе

DriveSoft wrote:

Думаю будет лучше сохранять координаты расположения элементов, а не рисунок, иначе база будет слишком большой. Доработал ваш проект.

Хороший пример, только нужно ещё ограничить перемещение изображений в пределах формы или фонового изображения, чтобы случайно не утащить за пределы окна, примерно так:

procedure instr_w1_OnMouseMove
.....
if (instr.w1.Left+x-x0) < instr.Image1.Left then instr.w1.Left := instr.Image1.Left else if (instr.w1.Left+x-x0) > instr.Image1.Width+10 then instr.w1.Left := instr.Image1.Width+10 else instr.w1.Left:=instr.w1.Left+x-x0; // Изменяем позицию левого края
if (instr.w1.Top+y-y0) < instr.Image1.Top then instr.w1.Top := instr.Image1.Top else if (instr.w1.Top+y-y0) > instr.Image1.Height then instr.w1.Top := instr.Image1.Height else instr.w1.Top:=instr.w1.Top+y-y0; // Изменяем позицию верхнего края