Страница 1 из 2

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 13:05
ingasoftplus
Вывести картинку в клиентской области Frame

Собственно как? Есть Frame, нужно в нижний правый угол клиентской области вывести лого из граф файла. И чтоб при ресайзе окна (главного фрейма) лого оставалось на месте.

:roll:

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 13:10
Игорь Столяров
Был давным-давно шаблон, который открывал безрамочное MDI окно внутри Frame с Resize FullSize.
Это нужно смотреть программы у которых внутри Frame выводятся поля и кнопки.
Может кто-то помнит его название и автора ?

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 13:40
ingasoftplus
вот шаблон в аттаче - окно выводит. но как сделать все остальное? (нужно в нижний правый угол клиентской области вывести лого из граф файла и чтоб при ресайзе окна (главного фрейма) лого оставалось на месте :roll: )

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 14:04
Игорь Столяров
Вы всегда можете послать в окно Notify и заставить его изменить размер (в т.ч. и с условиями RESIZE).
Но дело в том, что если Вы окрыли развёрнутое MDI окно окно внури FRAME - оно и так изменит размер.

И Вы всегда можете обработать в окне событие DoResize (например что бы изменить размер картинки)
или выполнить:

Код: Выделить всё

  Resizer.Resize()  ! Изменить расположение контролов в окне

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 14:14
finsoftrz
ingasoftplus писал(а): 22 Май 2025, 13:40 вот шаблон в аттаче - окно выводит. но как сделать все остальное? (нужно в нижний правый угол клиентской области вывести лого из граф файла и чтоб при ресайзе окна (главного фрейма) лого оставалось на месте :roll: )
Сохранить в глобальных переменных номер потока, в котором запущено окно, а также высоту и ширину фрейма. Затем на фрейме по событию EVENT:Sized послать в этот поток пользовательское событие типа post(4004,,MySaveThread). А в окне по этому событию изменить PROP:Ypos и PROP:Xpos окна с учетом размеров фрейма и самого окна.

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 14:40
ingasoftplus
finsoftrz писал(а): 22 Май 2025, 14:14 Сохранить в глобальных переменных номер потока, в котором запущено окно, а также высоту и ширину фрейма. Затем на фрейме по событию EVENT:Sized послать в этот поток пользовательское событие типа post(4004,,MySaveThread). А в окне по этому событию изменить PROP:Ypos и PROP:Xpos окна с учетом размеров фрейма и самого окна.
отлично! номер потока уже есть в том шаблоне. Осталось разобраться с позиционированием окна. Т.е. наше окно надо переместить, но я думаю что нужно работать с Клиентской областью Фрейма. есть примеры?

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 14:50
finsoftrz
Да ничего там специфического не надо, только изменить prop:xPos и prop:yPos у окна. А они, соответственно, вычисляются как ширина фрейма минус ширина окна, высота фрейма минус высота окна, если просто в нижнем правом углу.

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 15:02
Ал
может всё проще - нарисовать картинку во весь фрейм с лого в правом нижнем углу подходящего качества и штатным полем wallpaper вывести + Stretched чтобы при изменении размера пересчитывал сам?

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 15:10
ingasoftplus
Ал писал(а): 22 Май 2025, 15:02 может всё проще - нарисовать картинку во весь фрейм с лого в правом нижнем углу подходящего качества и штатным полем вывести + Stretched?
ну это совсем не гибко....

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 15:13
ingasoftplus
кстати, а почему нет эмбеда для EVENT:Sized и самого события нет в главном FRAME?

IMM для окна надо

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 15:23
Ал
ingasoftplus писал(а): 22 Май 2025, 15:10
Ал писал(а): 22 Май 2025, 15:02 может всё проще - нарисовать картинку во весь фрейм с лого в правом нижнем углу подходящего качества и штатным полем вывести + Stretched?
ну это совсем не гибко....
Снимок экрана 2025-05-22 151333.png
Снимок экрана 2025-05-22 151413.png
Снимок экрана 2025-05-22 151510.png
https://www.odata.de/Clarion/colored_ba ... _appframe/

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 16:29
ingasoftplus
кстати, а как из MDI окна узнать размеры клиентской области главного FRAME???

если я делаю

Код: Выделить всё

XPos = 0{PROP:ClientX}; YPos = 0{PROP:ClientY}; Width = 0{PROP:ClientWidth} ; Height = 0{PROP:ClientHeight}
то мне дает размеры текущего окна...

собственно, как "А в окне изменить PROP:Ypos и PROP:Xpos окна с учетом размеров фрейма и самого окна."

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 17:15
finsoftrz
Я сохраняю размеры фрейма в глобальных переменных, они для разных целей используются потом.

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 17:16
Дед Пахом
Сообщение WM_ERASEBKGND в клиентской области самое то.

Вывести картинку в клиентской области Frame?

Добавлено: 22 Май 2025, 17:28
ingasoftplus
finsoftrz писал(а): 22 Май 2025, 17:15 Я сохраняю размеры фрейма в глобальных переменных, они для разных целей используются потом.
так если в рантайм изменим его размеры - то сохраненные будут особо не актуальные...

как знать актуальные размеры фрейма в текущий момент?