Что за ерунда с символом табуляции "\t" ? - страница 3

 
Meat:

Да не пишите глупости! Делать через объекты - это делать через ж... Заводить пару сотен объектов просто ради того чтобы вывести текст на экран, в то время как предусмотрена специальная функция Comment для вывода этого текста (подчёркиваю: ТЕКСТА, а не отдельных надписей, для которых предназначен объект Label). Такая куча объектов помимо неудобства будет ещё жрать ресурсы, особенно когда советник запущен на нескольких чартах. Поэтому думайте немного, прежде чем давать тут свои советы. Да и вообще хотелось бы услышать ответа от разработчиков. Мой вопрос был к ним адресован.

А насчёт "графических компонентов", не совсем понятно что вы имели ввиду под этим понятием. Текстовые редакторы - это ведь программы, а не графические компоненты. Другое дело что если программа использует компонент, поддерживающий многострочный вывод теста, то и табуляция там тоже используется. Например объект Memo.


Глупости все пишут. Но некоторые этого просто не понимают. Я не про Сергеева, я про Вас
 

В чём конкретно видите здесь глупость? Насчёт пары сотен объектов я даже преуменьшил, у меня там выводятся 10-15 колонок, и 20-30 строк. Итого понадобятся 200-400 обектов на одном чарте. И таких чартов может быть открыто много.

 
Meat:

В чём конкретно видите здесь глупость?


Глупостью является не умение или не желание услышать чужой опыт. Не более
 
Vinin:

Глупостью является не умение или не желание услышать чужой опыт. Не более


Дело всё в том, как это опыт преподносится, и к месту ли. Вы прочитайте как несколькими постами ранее этот человек в снисходительной форме предлагал табуляцию заменить на 4 пробела. Что говорит о явном непонимании им, что такое табуляция вообще. А потом ещё вспомнил моноширинные шрифты, в то время как к обсуждаемой функции это не относится. Так где вы тут увидели опыт?

А так я только рад, если кто-то действительно поделится своим опытом.

 

"Вам шашечки или ехать?"

Посмотрите тут https://www.mql5.com/ru/forum/122586 . Может быть найдёте своё решение.

 

sergeev: Мы же вроде все здесь не глупые и понимаем что в Comment не моноширный шрифт.

Meat: Да не пишите глупости!

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

Meat: Делать через объекты - это делать через ж...

жопу, вы это хотели сказать? не стесняйтесь, здесь все свои.

Заводить пару сотен объектов просто ради того чтобы вывести текст на экран

не надо так преувеличивать. Вы хотите сказать что у вас на экране помещается 100 строк выводимого текста Comment? ой как я в этом сомневаюсь!

Вам всего-то необходимо:

- вывести текст по-строчно в формате label объектов.
- воспользоваться моноширным шрифтом в этих label
- заменить табуляцию на пробелы.

Такая куча объектов помимо неудобства будет ещё жрать ресурсы,

а вы думаете функция Comment работает в щадящем режиме? Она жрёт ресурсы не меньше чем вывод объектов. Так как обновляет чарт. А это немало. Можете порезвиться на досуге с подсчетом времени.

PS (в снисходительной форме)

Благодарности не надо. Табуляции в Comment (тем более в МТ4) вы будете ждать долго.
Поэтому если оно вам действительно так надо, то воспользуетесь моим советом.
У кого есть желание - ищет возможности, у кого нет - ищет причину. аминь.

 
sergeev:


У кого есть желание - ищет возможности, у кого нет - ищет причину.

А кто ищет причину - тот, по сути, ищет виноватых. А вовсе не решение. И это ни разу не эффективно.

// Вот буду время от времени это повторять. Снова и снова. Чисто для оздоровнения атмосферы форума. Похоже до некоторых таки доходит постепенно..

 
Ерунда какая то получается - вроде и полнолуние далеко, а вот, подиж ты сразу два обострения на форуме....
 
Meat:


Дело всё в том, как это опыт преподносится, и к месту ли. Вы прочитайте как несколькими постами ранее этот человек в снисходительной форме предлагал табуляцию заменить на 4 пробела. Что говорит о явном непонимании им, что такое табуляция вообще. А потом ещё вспомнил моноширинные шрифты, в то время как к обсуждаемой функции это не относится. Так где вы тут увидели опыт?

А так я только рад, если кто-то действительно поделится своим опытом.


Терпение и труд всё перетрут! :)

Достаточно один раз сделать в виде функции и пользоваться внося изменения по мере необходимости.

 

То что на данный кроме Label других вариантов нет, это я и сам прекрасно понимаю. Я ведь задавал вопрос не "как мне сделать табуляцию?", а "почему бы разработчикам её не реализовать в Comment?" Но что-то ответа от них так и не дождался. А вместо этого куча прдложений типа: Да зачем тебе апельсин? Съешь яблоко.

Но вообще есть у меня ещё одна идейка касаемо немоноширинных шрифтов, это относится и к Comment, и к большинству шрифтов Label. Надо как-то получить ширину каждого символа в этом шрифте. Тогда можно будет без проблем расчитать количество пробелов, необходимых для подгонки колонок к одному уровню. Разумеется подгонка получится не точной, с погрешностью в 1-3 пикселя, но это не страшно. Если кто подскажет, как можно узнать ширину символов, то буду очень признателен. И вообще, какой шрифт используется в Comment? Подозреваю что Arial, но хотелось бы знать конкретно.

Я пытался найти решение с помощью функций winapi, нашёл такую функцию GetTextExtentPoint32, она даёт ширину любой строки текста в пикселях, ну и также там есть ещё похожие функции для ширины конкретных символов, суть та же. Вроде бы всё ок, но получаемая ширина относится к шрифту System. Насколько я понимаю, этот шрифт задан по умолчанию для текущего display device context (DC) нашего окна, в котором выводится текст (я его предварительно задаю с помощью функции GetDC). Но текст в Comment выводится явно в другом шрифте, с другими размерами символов. Это заметно например в пропорциях ширины букв "i" и "w". В общем вопрос в том, можно ли как-то задать другой шрифт для текущего DC, либо создать свой DC с определённым шрифтом? Может кто сталкивался с этим. Я всё перерыл, но так и не разобрался.

Причина обращения: