|
|
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Delphi 10.2.3. Если форма уже создана (autocreate) то компоненты размещаются на ней масштабированными. Если форма динамически создана, то компоненты НЕ масштабированы. Почему и что делать? Исходники Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 14:48 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Скрин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 14:48 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Исходники этого примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 14:52 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
авторПочему и что делать? ЧЯДНТ ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 15:06 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
shmelina, это не масштабирование, это привязки у тебя поехали. Хотя, по логике, не должны. Попробуй привязывать компоненты, расположенные справа и снизу, к компонентам сверху и слева. зы. в Лазаре это реализовано через специальный редактор и свойства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 15:35 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
DimaBr, Вы скомпилируйте проект, измените масштабирование, и запустите экзешник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 16:10 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
при создании формы: Form.Scaled:=False; а потом ScaleBy() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 16:40 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
rgreat, это все можно начать пробовать, но можем все просто решается? Ведь на статичной форме контролы масштабируются, а на динамичной не хотят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 16:42 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
shmelina, контролы не в OnShow создавай, а в OnCreate, ты же их уже после масштабирования формы создаёшь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 17:56 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Методом тыка выяснил для динамической формы следующее: - игнорирует свойство Scaled. - масштабирует только шрифт (высота TEdit изменятся от шрифта). Координаты и размеры контролов игнорируются. - функции типа ScaleBy и ScaleForPPI меняют только шрифт... см. предыдущий пункт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 18:21 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Причем применение функций типа ScaleBy приводит к двойному масштабированию шрифта, т.к. динамическая форма уже увеличила шрифт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 18:27 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Написал код, который масштабирует координаты и размеры контролов. Шрифт не трогаю, он уже увеличен. Получилось почти как на первой форме, разница в пиксель терпима. код Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 18:31 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Но вопрос остается. Почему на статической форме (auto-create) динамически созданные контролы масштабируются, а на динамической форме не хотят (только шрифт). Баг? Для примера смотрите исходники и картинки в начале топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 18:53 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Смотри сорцы VCL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 19:12 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
shmelina, это 10.3 ? посмотри что вот в этом свойстве у контрола Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 19:25 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
shmelinaНо вопрос остается. Почему на статической форме (auto-create) динамически созданные контролы масштабируются, а на динамической форме не хотят (только шрифт). Баг? Возможно потому что autocreate формы создаются через Application.CreateForm(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 19:35 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
alekcvpВозможно потому что autocreate формы создаются через Application.CreateForm().Не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 11:22 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), 10.2.3 ScalingFlags = [sfLeft,sfTop,sfWidth,sfHeight] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 11:30 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
shmelina, включи отладочные модули, протрейсь TControl.ChangeScale, TWinControl.ChangeScale( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 12:43 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Запустил среду и отлаживаю в масштабе 125. При создании компонент на первой форме происходит вызов ChangeScale(120, 96, True). При создании компонент на второй форме вызов ChangeScale не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 14:15 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
Удалось выяснить, что при присвоении компоненту родителя, компонент масшабируется согласно родительскому FCurrentPPI. Для первой формы он 120, для второй 96. Пока не могу разобраться почему он разный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 14:53 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
shmelina, можешь в dfm посмотреть. скорее всего они сохранены с разным dpi: PixelsPerInch = 96 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 17:49 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
makhaon, Вторая форма динамически создается. Первая 96 dpi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 18:16 |
|
||
|
Масштабирование компонент на динамической форме
|
|||
|---|---|---|---|
|
#18+
shmelina, так она наверно с dpi=120 и создаётся. попробуй её создать из dfm'а, в котором точно 96 будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 04:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39741872&tid=2040014]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 510ms |

| 0 / 0 |
