|
|
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Товарищи! Кто-нить знает способ выравнивания высоты объектов (в данном случае текст-боксов) по высоте самого "высокого" из них? Имеется ввиду в режиме предпросмотра формы. К примеру, имеется форма на основе какого-то динамического набора записей. На форме три текстовых поля (txt1,txt2,txt3), получающих данные из этой выборки. Допустим, при просмотре формы len(txt1.text)=5, len(txt2.text)=134, len(txt3.text)=15. Так вот поле txt2 растягивается по высоте настолько, сколько требуется для отображения всех 134 символов. Как сделать, что бы и другие два поля при этом растягивались до того же значения высоты? Да еще, чтоб данная зависимость была взаимной для все трех объектов, т.е. расширение по самому "высокому". прим: В режиме конструирования формы есть такая команда для нескольких объектов: Формат\Размер - по самому высокому Вот нужно тоже самое, только автоматическое (опциональное или программное) для режима предпросмотра формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2009, 13:57 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Высоту прямоугольника, занимаемого текстом можно определить с помощью API функции "DrawTextA" (и еще кучи дополнительных). Перед этим нужно правильно определить ширину рабочей области TextBox-a (с учетом отступов, толщины границы, и т.д.), а после этого высчитать его минимальную высоту. Всё это непросто и неточно. В отчете реальную высоту поля можно получить на событии Print раздела и нарисовать границы методом Me.Line, в форме такой возможности нет (ИМХО). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2009, 14:28 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
а .Height чем не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2009, 14:36 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
shkiperа .Height чем не нравится. Поясню скипера. obj1.height = obj2.height Высота станет равной. Ну, а как проверить высота какого объекта больше (по высокому) или меньше (по низкому), я думаю, Вы сообразите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2009, 14:41 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
to alt5000: Все хирьня. Оказывается свойство height показывает высоту объекта в режиме формы, а не в режиме предпросмотра. А в режиме формы высота полей у меня одинаковая (та, что задана при конструировании). Тогда я вообще в тупике! Какое свойство отвечает за высоту в режиме предпросмотра формы??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 10:33 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
а это режим предпросмотра: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 12:34 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
вот таким образом выведены на форму значения свойства Height ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 12:37 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за ошибку в слове Height на форме :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 12:38 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Выведи форму в режиме таблицы и пусть клиент сам раздвигает поля и меняет высоту их по своему вкусу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 12:39 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Beliarвот таким образом выведены на форму значения свойства Height Здесь игра с переводом фокуса совершенно излишняя. Код будет работать и без перевода фокуса И вообще, проще, просто печатать в дебаггер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 12:42 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Надо найти правильное событие. Вот у отчета такие события есть. А у формы, может, и нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 12:59 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Rivkin DmitryВыведи форму в режиме таблицы и пусть клиент сам раздвигает поля и меняет высоту их по своему вкусу Поясняю: форма используется вместо отчета (т.к. есть необходимость в приминении подчиненной формы, чего сделаешь в отчете), но юзеру она будет открываться только в режиме предварительного просмотра, откуда он ее будет распечатывать, других действий с формой и на форме пользователю не требуется. Так вот, в режиме предпросмотра многострочные текстовые поля растягиваются (если в пропертисах указать "расширение - да"). Вот мне и иинтересно, как в VBA называется это свойство и как определить до какой высоты "расширилось" текстовое поле. В режиме формы этого расширения нет (см. скрин) и свойтво height даже при расширении в режиме предпросмотра показывает высоту объекта, заданную при конструировании (т.е. как бы без расширения) Rivkin DmitryЗдесь игра с переводом фокуса совершенно излишняя. Код будет работать и без перевода фокуса И вообще, проще, просто печатать в дебаггер Не правда! Свойсво text у тектового поля изменяется ТОЛЬКО после получения фокуса! т.е. после применения метода SetFocus. [quot Владимир Саныч]...Вот у отчета такие события есть...quot] Можно по-подробней? Какие именно события? Допустим, я сваяю отчет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 13:59 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Beliar, авторНе правда! Свойсво text у тектового поля изменяется ТОЛЬКО после получения фокуса! т.е. после применения метода SetFocus. А нахрена тебе этот text? У контрола есть еще и Value которое можно и не обозначатью txt = Num.Height прекрасно работает! А в чем проблема сделать отчет и в нем подчиненный отчет? Форма не очень хороша для вывода на печать. А репорт можно выводить и на экран и на печать без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 14:40 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
BeliarМожно по-подробней? Какие именно события? Допустим, я сваяю отчет... Ну, там всякие Print и Format. Мне лень проверять, но я надеюсь, что в этих событиях Height показывает то, что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 14:45 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Владимир СанычBeliarМожно по-подробней? Какие именно события? Допустим, я сваяю отчет... Ну, там всякие Print и Format. Мне лень проверять, но я надеюсь, что в этих событиях Height показывает то, что надо. Есть здесь проблема. Дело в том, что CanGrow растягивает высоты представления на печать текстового поля и секции, но при этом Height и секции и поля остаются, как при дизайне. Может быть есть возможность API функциями достать этот размер, но я глубоко сомневаюсь, что с легкостью его можно будет присвоить другим полям. Я предлагаю просто сделать трансполрентными рамки всех текстбоксов. И именно в отчете, а не в форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 16:00 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitryно при этом Height и секции и поля остаются, как при дизайне. Даже в отчете в событиях Print и Format? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2009, 16:46 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitry Я предлагаю просто сделать трансполрентными рамки всех текстбоксов. И именно в отчете, а не в форме. Разъясните, пожалуйста, если не трудно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2009, 10:50 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
BeliarRivkin Dmitry Я предлагаю просто сделать трансполрентными рамки всех текстбоксов. И именно в отчете, а не в форме. Разъясните, пожалуйста, если не трудно. Видимо мой ответ (самый первый) остался незамеченным. Повторюсь: В отчете реальную высоту поля можно получить на событии Print раздела, но изменить высоту других полей там нельзя. Поэтому поля делают без рамок и рисуют линии методом Me.Line. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2009, 11:17 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Анатолий ( Киев ) Видимо мой ответ (самый первый) остался незамеченным. Повторюсь: В отчете реальную высоту поля можно получить на событии Print раздела, но изменить высоту других полей там нельзя. Поэтому поля делают без рамок и рисуют линии методом Me.Line. Ну, до события Print дело вообще может не дойти, к тому же нужно, чтобы просмотр формы или отчета сразу открывался юзеру в надлежащем виде. И на кой мне тогда чертить линии, если, перехватив событие Print, я могу определить значения свойства height, а значит и задать новые значения в этом же событии? Сейчас пойду, конечно, попробую, но мне это не подойдет, потому что, повторюсь, событие Print может вообще быть не вызвано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2009, 14:06 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
видимо опять не внимательно прочли Анатолий ( Киев )В отчете реальную высоту поля можно получить на событии Print раздела, но изменить высоту других полей там нельзя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2009, 15:26 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
в общий модуль сохраняеш процедуру и вызываеш ее в отчетах отчете при печате и будет тебе счастье не я писал и автора непомню, немного доработал по толщине линий, и бывают контролы в области данных надо разместиь но не печатать. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 12:59 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
Несколько замечаний относительно метода Line: 1. Св-во DrawWidth задается в пикселах (1 по умолчанию, т.е. "сверхтонкая"). Пиксел - величина переменная, в данном случае зависящая от разрешающей способности принтера. При значении 4 и более разница в толщине линии будет заметна визуально, особенно, если для горизонтальных линий используются элементы Line. Поэтому желательно применять коэффициент или вычислять кол-во пикселов на пункт. Например, чтоб нарисовать линию в 2 пункта, одинаковую (приблизительно) для разных принтеров, можно сделать так: Код: plaintext 1. 2. 3. 4. 5. 3. Начиная с А2000 справка по методу Line беззастенчиво врет. Вот правильная:Справка А97Метод Line создает в объекте Report при возникновении события Печать (Print) линии и прямоугольники. Синтаксис имяОбъекта.Line [[Step](x1, y1)] - [Step](x2, y2)[, [цвет][, B[F]]] Данный метод можно использовать только в процедурах обработки события или в макросах, указанных в свойствах событий Печать (OnPrint) или Форматирование (OnFormat) раздела отчета или в свойстве события отчета Страница (OnPage). Метод Line использует следующие аргументы. Аргумент Описание имяОбъекта Объект Report, в котором создается линия или прямоугольник. Step Ключевое слово, определяющее, что аргументы x1 и y1 указывают положение начальной точки относительно текущих координат, которые определятся текущими значениями свойств CurrentX и CurrentY объекта имяОбъекта. x1, y1 Значения с плавающей точкой типа Single, определяющие координаты начальной точки. Используемые единицы измерения определятся значением свойств ScaleMode, ScaleLeft, ScaleTop, ScaleHeight и ScaleWidth объекта имяОбъекта. Если данные аргументы опущены, координаты начальной точки линии или прямоугольника определятся текущими значениями свойств CurrentX и CurrentY. Step Ключевое слово, указывающее на то, что координаты конечной точки указаны относительно начальной точки линии. x2, y2 Значения с плавающей точкой типа Single, определяющие координаты конечной точки линии или прямоугольника. Данная пара аргументов является обязательной. цвет Целое значение типа Long, задающее цвет линии или контура прямоугольника в стандарте RGB (красный-зеленый-синий). Если данный аргумент опущен, используется значение свойства ForeColor объекта. Указать цвет позволят также функции RGB или QBColor. B Если указан параметр B, то создается прямоугольник, а координаты его углов задаются начальной и конечной точками. F Параметр F используется только вместе с параметром B. Если параметр B указан, указание параметра F приводит к заливке прямоугольника тем же цветом, который используется для контура прямоугольника. При использовании параметра B без параметра F заливка прямоугольника определяется текущими значениями свойств FillColor и Тип фона (BackStyle). Значением по умолчанию свойства Тип фона (BackStyle) для прямоугольников является «Обычный». Дополнительные сведения При создании ломаных линий необходимо следить за тем, чтобы координаты начала каждого следующего отрезка линии совпадали с координатами конца предыдущего отрезка. Толщина линии определяется значением свойства DrawWidth. Способ создания линии или прямоугольника по отношению к фону определяется значениями свойств DrawMode и DrawStyle. После вызова метода Line свойства CurrentX и CurrentY получат значения координат конечной точки линии или прямоугольника x2 и y2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 15:59 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
to bvmblad: Целый день разглядывал предложенный код, до конца еще так и не понял. К примеру как указать для цикла For Each какие именно контролы перелопачивать? А если у меня в области данных есть еще лэйблы и текст-боксы, размеры которых не нужно менять (или обрамлять линиями)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 09:06 |
|
||
|
Выравнивание высоты !!!
|
|||
|---|---|---|---|
|
#18+
BeliarЦелый день разглядывал предложенный код, до конца еще так и не понял. К примеру как указать для цикла For Each какие именно контролы перелопачивать? А если у меня в области данных есть еще лэйблы и текст-боксы, размеры которых не нужно менять (или обрамлять линиями)?делайте общий признак для группы контролов котрые нужно (или не нужно) обрабатывать и в цикле проверяйте его (например, что-то в Tag им всем записать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 09:13 |
|
||
|
|

start [/forum/topic.php?fid=45&tid=1636759]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 384ms |

| 0 / 0 |
