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

Вывод текста из переменной в несколько полей

Добавлено: 21 фев 2011, 10:39
vovik
Здравствуйте.
Имеется проблема связанная с выводом значения переменной отчета в несколько полей. В отчете создается два текстовых поля.
В первом поле задается свойство "Выводить в" в качестве значения вводится имя второго поля. В случае когда размер шрифта первого поля превосходит высоту самого поля, то текст выводится только во второе поле. Хотелось бы узнать почему? Почему не вывести текст начиная с первого поля, но с обрезанием по высоте. Если в первом поле стоят значения свойств "Расти в высоту" и "Может расти" действия аналогичные, т.е. в первое поле текст не выводится. И скажите пожалуйста будет ли исправлено то, что описано в документации: что поле которое указывается в которое осуществляется вывод должно быть создано после первого поля в дизайнере.
:ops:

Вывод текста из переменной в несколько полей

Добавлено: 21 фев 2011, 11:21
Aleksey
Здравствуйте,
vovik писал(а):Имеется проблема связанная с выводом значения переменной отчета в несколько полей. В отчете создается два текстовых поля.
В первом поле задается свойство "Выводить в" в качестве значения вводится имя второго поля. В случае когда размер шрифта первого поля превосходит высоту самого поля, то текст выводится только во второе поле. Хотелось бы узнать почему? Почему не вывести текст начиная с первого поля, но с обрезанием по высоте. Если в первом поле стоят значения свойств "Расти в высоту" и "Может расти" действия аналогичные, т.е. в первое поле текст не выводится.
Так и должно быть. В первом поле выводится только целое число строк, влезающих по вертикали. При крупном шрифте таких строк 0, поэтому весь текст и переносится во второе поле.
vovik писал(а):И скажите пожалуйста будет ли исправлено то, что описано в документации: что поле которое указывается в которое осуществляется вывод должно быть создано после первого поля в дизайнере.
Возможно, не совсем точно сформулировано. Данное поле должно находиться ниже в дереве отчета либо создано после первого поля.

Вывод текста из переменной в несколько полей

Добавлено: 21 фев 2011, 11:30
vovik
Скажите пожалуйста, а как насчет свойств "Расти в высоту"? Почему поле не увеличивается в соответсвии с содержимым?

Вывод текста из переменной в несколько полей

Добавлено: 22 фев 2011, 03:49
Aleksey
Здравствуйте,

Все правильно. При установке свойства "Выводить в" (Render To) свойства "Расти в высоту" и "Может расти" игнорируются, так как это взаимоисключающие свойства по логике их работы.

Спасибо.

Вывод текста из переменной в несколько полей

Добавлено: 22 фев 2011, 09:55
vovik
Добрый день.

Получается следующая ситуация (если рассматривать вывод значения переменной в несколько полей):
1. При выводе в два поля значение переменной, если первое поле по высоте меньше чем текст выводимый указанным шрифтом то вывод текста осуществляется только во второе поле.
2. В случае когда значение переменной выводится в три поля, и в случае когда все поля меньше по высоте указанного шрифта, значение не выводится ни в одно поле.
Я понимаю, что это у вас так работает репорт, но можно это изменить, потому как это нелогично? Возможно ли в обоих ситуациях выводить текст и в первое поле и в последующие, но с обрезанием текста по высоте, чтоб оператору работающему с репортом было видно его ошибку? Это поведение репорта было бы логичнее, чем его поведение сейчас. Я уж не говорю про то чтобы была возможность совместить свойства "Расти в высоту" и "Выводить в", которые не являются взаимоисключающими по логике своей работы, но которые взаимоисключающие у вас.

Вывод текста из переменной в несколько полей

Добавлено: 23 фев 2011, 04:39
Ivan
Здравствуйте.
vovik писал(а):Получается следующая ситуация (если рассматривать вывод значения переменной в несколько полей):
1. При выводе в два поля значение переменной, если первое поле по высоте меньше чем текст выводимый указанным шрифтом то вывод текста осуществляется только во второе поле.
В документации четко указано: "в первом компоненте будет выведено только целое количество полностью видимых строк".
Также неясно: зачем делать размер шрифта такой большой, что не помещается даже одна строка текста?
vovik писал(а):2. В случае когда значение переменной выводится в три поля, и в случае когда все поля меньше по высоте указанного шрифта, значение не выводится ни в одно поле.
Неверно. Если у последнего поля не установлено RenderTo, то в него выводится весь оставшийся текст.
vovik писал(а):Я понимаю, что это у вас так работает репорт, но можно это изменить, потому как это нелогично? Возможно ли в обоих ситуациях выводить текст и в первое поле и в последующие, но с обрезанием текста по высоте, чтоб оператору работающему с репортом было видно его ошибку? Это поведение репорта было бы логичнее, чем его поведение сейчас.
При вашем варианте существует одна серьёзная проблема: если сделать высоту текстбокса например 1 полная строка + 1 пиксель, то первая строка текста будет выведена полностью, а от второй строки будет видна только одна полоска высотой в 1 пиксель (в подавляющем большинстве случаев пустая). Третья строка будет выведена уже в следующий текстбокс. Оператор даже не заметит сразу, что вторая строка потерялась. И такие ситуации встречаются на каждом шагу.
Единственный вариант решения этой проблемы - отображать только целое количество строк.
vovik писал(а):Я уж не говорю про то чтобы была возможность совместить свойства "Расти в высоту" и "Выводить в", которые не являются взаимоисключающими по логике своей работы, но которые взаимоисключающие у вас.
Как должен себя вести большой текст, если установлены оба свойства "Расти в высоту" и "Выводить в" ?

Спасибо.

Вывод текста из переменной в несколько полей

Добавлено: 24 фев 2011, 05:32
vovik
Добрый день.
Ivan писал(а):Здравствуйте.
vovik писал(а):Получается следующая ситуация (если рассматривать вывод значения переменной в несколько полей):
1. При выводе в два поля значение переменной, если первое поле по высоте меньше чем текст выводимый указанным шрифтом то вывод текста осуществляется только во второе поле.
В документации четко указано: "в первом компоненте будет выведено только целое количество полностью видимых строк".
Также неясно: зачем делать размер шрифта такой большой, что не помещается даже одна строка текста?
Не надо делать размер шрифта настолько большим чтоб ничего не помещалось, достаточно чтобы высота шрифта была на 1 пиксель больше высоты поля в которое оно выводится.
Ivan писал(а):
vovik писал(а):2. В случае когда значение переменной выводится в три поля, и в случае когда все поля меньше по высоте указанного шрифта, значение не выводится ни в одно поле.
Неверно. Если у последнего поля не установлено RenderTo, то в него выводится весь оставшийся текст.
У последнего поля не установлено свойство RenderTo, можете попробовать, поведение именно такое как я описал.
Ivan писал(а):
vovik писал(а):Я понимаю, что это у вас так работает репорт, но можно это изменить, потому как это нелогично? Возможно ли в обоих ситуациях выводить текст и в первое поле и в последующие, но с обрезанием текста по высоте, чтоб оператору работающему с репортом было видно его ошибку? Это поведение репорта было бы логичнее, чем его поведение сейчас.
При вашем варианте существует одна серьёзная проблема: если сделать высоту текстбокса например 1 полная строка + 1 пиксель, то первая строка текста будет выведена полностью, а от второй строки будет видна только одна полоска высотой в 1 пиксель (в подавляющем большинстве случаев пустая). Третья строка будет выведена уже в следующий текстбокс. Оператор даже не заметит сразу, что вторая строка потерялась. И такие ситуации встречаются на каждом шагу.
Единственный вариант решения этой проблемы - отображать только целое количество строк.
Как вы указали вариант выводить целое число строк, но не меньше одной. Поле же есть на экране и в большинстве случаев необходимо чтобы текст выводился сначало в первое поле и только затем во второе.
Ivan писал(а):
vovik писал(а):Я уж не говорю про то чтобы была возможность совместить свойства "Расти в высоту" и "Выводить в", которые не являются взаимоисключающими по логике своей работы, но которые взаимоисключающие у вас.
Как должен себя вести большой текст, если установлены оба свойства "Расти в высоту" и "Выводить в" ?
В случае если установлено свойство "Расти в высоту" и "Выводить в" необходимо: если в выводимое поле текст по высоте не помещается расширять поле по высоте, но только для одной строки. Если по высоте размер шрифта не превосходит поля, то ничего не делать. Если у поля стоит свойство "Выводить в",
как я выше и писал, то необходимо выводить в первое поле только одну строку, не более, если конечно выводимое поле не расширено до полных двух-N-строк.

Если такая доработка репорта невозможна, напишите пожалуйста.

Вывод текста из переменной в несколько полей

Добавлено: 24 фев 2011, 06:39
Ivan
Здравствуйте.
vovik писал(а):Не надо делать размер шрифта настолько большим чтоб ничего не помещалось, достаточно чтобы высота шрифта была на 1 пиксель больше высоты поля в которое оно выводится.
Зачем делать такую высоту шрифта, чтобы строка текста не помещалась целиком?
vovik писал(а):В случае когда значение переменной выводится в три поля, и в случае когда все поля меньше по высоте указанного шрифта, значение не выводится ни в одно поле.
У последнего поля не установлено свойство RenderTo, можете попробовать, поведение именно такое как я описал.
Проверили несколько раз. Весь оставшийся текст выводится в третье поле. Если это не так - вышлите пожалуйста пример отчета, который воспроизводит проблему.
vovik писал(а):Как вы указали вариант выводить целое число строк, но не меньше одной. Поле же есть на экране и в большинстве случаев необходимо чтобы текст выводился сначало в первое поле и только затем во второе.
Естественный вариант решения проблемы - установить адекватный размер шрифта. Это сразу решает все проблемы.

Также обращаем ваше внимание, что это соответствует политике Microsoft.
Стандартные средства .Net для вывода текста могут вывести текст не полностью или вообще не вывести, если область для вывода текста недостаточна по высоте.
Довольно часто встречаются ситуации, что в строке, обрезанной по высоте, не выводится несколько слов. Это особенность Net, которую исправить невозможно.

Поэтому мы приняли решение в случае RenderTo работать только с целыми строками. Это поведение описано в документации. Решение принято уже давно, и никакие изменения мы вносить не планируем.

Спасибо.

Вывод текста из переменной в несколько полей

Добавлено: 24 фев 2011, 08:59
vovik
файл репорта в котором текст не выводится
http://www.asmail.spb.ru/files/ggg.mrt

Вывод текста из переменной в несколько полей

Добавлено: 24 фев 2011, 11:21
Ivan
Здравствуйте.

Проблема обнаружена и исправлена.
Патч будет включен в следующий предрелизный билд.

Спасибо.