Учёба. Классы. Нужна помощь. - страница 5

 
Vitaly Murlenko #:

Меняете название шрифта и пропорции сторон кнопки летят к чертям. Есть шрифты, у которых размер, например, 10, по высоте у одного икс пикселов, у другого игрек, значительно отличающийся от икса. Чтоб этого не было придётся описывать размеры каждого типа шрифта. Это гемор. Я задаю стартовые размеры кнопки. Затем в коде просто расширяю или сужаю по мере необходимости стартовые размеры.

Сдвиг по вертикали для каждой строки лейблов тоже идёт на стандартный шаг. Если увеличил шрифт и строки налазят друг на друга, я просто увеличиваю шаг (меняю значение одной переменной, меняю 1 раз) и всё становится нормально.

То же самое для координаты икс. Есть стартовая позиция. Если в строке, скажем кнопка и поле ввода, то для поля ввода нужен сдвиг на размер кнопки + зазор. После отрисовки поля возвращаем икс в исходное и всё. Короче, могу дать код - всё увидите. А то так на пальцАх плохо видно. Сделать? Дать код?

Виталий, похоже что я тут зря распинаюсь. Вместо того, чтобы разобраться в моём коде вы мне рассказываете как вы неправильно делаете. Мне ваш код совершенно не нужен. Проблема у вас, а не у меня.

 
Alexey Viktorov #:

Виталий, похоже что я тут зря распинаюсь. Вместо того, чтобы разобраться в моём коде вы мне рассказываете как вы неправильно делаете. Мне ваш код совершенно не нужен. Проблема у вас, а не у меня.

Не обижайтесь. Посмотрю код. Обязательно посмотрю. Просто навалилось сейчас всего. А за пояснения спасибо.
 
Vitaly Murlenko #:

А вот тут у меня пока что пробел в знаниях. Если описание может быть обычной функцией, то нужно создавать файл, который мы кладём в Libraries. Описание класть в инклудники (как делают некоторые - кладут туда готовые функции) мне не нравится. В этом случае заголовочный файл превращается в мешанину кода.

Скажите, что если в инклуднике без объявления функции просто написать :

Сработает это? Можно будет после подключения инклудника к советнику сразу создавать экземпляр класса?

И такой же вопрос про файл библиотеки. Можно ли таким же образом (без объявления функции) просто создавать класс в файле библиотеки? Создавать вне подпрограммы?

Как подключается файл описано тут. Подключение файла никак не говорит о классах или о файлах размещённых там. Если там просто пользовательская функция, то к ней после подключения файла можно обращаться как к любой функции своего кода.

Документация по MQL5: Основы языка / Препроцессор / Включение файлов (#include)
Документация по MQL5: Основы языка / Препроцессор / Включение файлов (#include)
  • www.mql5.com
Командная строка #include может встречаться в любом месте программы, но обычно все включения размещаются в начале файла исходного текста. Формат...
 
Vitaly Murlenko #:
Не обижайтесь. Посмотрю код. Обязательно посмотрю. Просто навалилось сейчас всего. А за пояснения спасибо.

Обижаться — удел горничных.

Я пересмотрел тот код и понял, что там полезного для вас только одна строка

TextGetSize(text, w, h);

Используя полученные значения ширины и высоты текста вы можете назначить ширину и высоту рисуемого объекта добавив к этим значениям для красоты несколько пикселей.

И соответственно по самому длинному тексту определяете размер всех кнопок и лейблов. Потом в зависимости от количества объектов в строке определяете ширину прямоугольника, по количеству строк определяете высоту прямоугольника и нарисовав прямоугольник рисуете объекты…

 
Alexey Viktorov #:

Как подключается файл описано тут. Подключение файла никак не говорит о классах или о файлах размещённых там. Если там просто пользовательская функция, то к ней после подключения файла можно обращаться как к любой функции своего кода.

Не, я не про то, как подключается файл спросил. У меня уже давно из года в год переходит не один десяток собственноручно написанных библиотек функций для разных надобностей.

Я спросил о том, можно ли объявить в файле библиотеки или в файле инклудника класс, не объявляя при этом ни какой функции?

Поясняю. Можно написать в файле вот так:

void MyFunction(){
        class MyClass{}
}
Можно ли при этом не создавать 
void MyFunction()

а сразу сделать

class MyClass{}
 
Vitaly Murlenko #:

Не, я не про то, как подключается файл спросил. У меня уже давно из года в год переходит не один десяток собственноручно написанных библиотек функций для разных надобностей.

Я спросил о том, можно ли объявить в файле библиотеки или в файле инклудника класс, не объявляя при этом ни какой функции?

Поясняю. Можно написать в файле вот так:

Можно ли при этом не создавать 

а сразу сделать

если код не одностраничный, то классы всегда в Include описывают, 

внутри функции если будете писать, то он и принадлежать(работать) будет только внутри этой функции, т.е. НЕ глобально

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

 
lynxntech #:

если код не одностраничный, то классы всегда в Include описывают, 

внутри функции если будете писать, то он и принадлежать(работать) будет только внутри этой функции, т.е. НЕ глобально

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

Ясно, спасибо. Плохо, что в разделе справки, которая объясняет классы, этого нет.

 
Alexey Viktorov #:

Обижаться — удел горничных.

Я пересмотрел тот код и понял, что там полезного для вас только одна строка

Используя полученные значения ширины и высоты текста вы можете назначить ширину и высоту рисуемого объекта добавив к этим значениям для красоты несколько пикселей.

И соответственно по самому длинному тексту определяете размер всех кнопок и лейблов. Потом в зависимости от количества объектов в строке определяете ширину прямоугольника, по количеству строк определяете высоту прямоугольника и нарисовав прямоугольник рисуете объекты…

Внимательно посмотрел Ваш код. Та самая строка не оказалась полезной. Я из Вашего кода другие уроки извлёк - как-то ранее не приходило даже и в голову использовать где-то в середине кода объявление ENUM-переменной. Вот за это отдельное спасибо.

 
Vitaly Murlenko #:

Внимательно посмотрел Ваш код. Та самая строка не оказалась полезной. Я из Вашего кода другие уроки извлёк - как-то ранее не приходило даже и в голову использовать где-то в середине кода объявление ENUM-переменной. Вот за это отдельное спасибо.

А какая разница какой тип переменной? Объявляешь где угодно, как угодно… Всё зависит от фантазии… ENUM_ это тип переменной как int или uint. Вот создать пользовательское перечисление, это другое.

 
JRandomTrader #:

одновременная работа нескольких роботов на одном символе при неттинге

так и должно быть