ЦВЕТ. Как его узнать?
|
|
basme | Дата: Четверг, 20 Сентября 2007, 19:14 | Сообщение # 1 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Можно ли, и, если можно, то как узнать цвет выбранного объекта в формате RGB? Оч. нужно.
|
|
| |
Dordex | Дата: Пятница, 21 Сентября 2007, 11:09 | Сообщение # 2 |
Группа: Удаленные
| Не совсем понятно что ты хочешь, если ты имеешь в виду Restangle-объекты, то это очень легко: Ставишь какой-нибудь Restangle, щелкаешь по нему два раза, увидишь список "цвет", открываешь, нажимаешь внизу на кнопочку "More Colors", после чего открываешь вкладку "Заказные" и внизу найдёшь то, что тебе надо, если я правильно понял что тебе надо.
|
|
| |
basme | Дата: Пятница, 21 Сентября 2007, 18:46 | Сообщение # 3 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Да, я имею ввиду Rectangl'ы и Circle'ы, но цвет нужно получать именно во время работы скомпилированной программы, а не на этапе разработки. Так можно?
|
|
| |
toizy | Дата: Пятница, 21 Сентября 2007, 20:59 | Сообщение # 4 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| так нельзя. ну разве что пагин...
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
basme | Дата: Суббота, 22 Сентября 2007, 09:38 | Сообщение # 5 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Жаль. Одна идейка накрылась медным тазом... Ну да ладно.
|
|
| |
Alex3A | Дата: Суббота, 22 Сентября 2007, 14:40 | Сообщение # 6 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Вообще то можно, ты ведь знаешь, какие цвета у тебя изначально, заведи переменные, и при каждом изменении цвета объекта заноси вних новое значение.
|
|
| |
toizy | Дата: Суббота, 22 Сентября 2007, 15:54 | Сообщение # 7 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (Alex3A) и при каждом изменении цвета объекта если речь о 4,9,7, то я не знаю, как...
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
basme | Дата: Суббота, 22 Сентября 2007, 15:58 | Сообщение # 8 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Во-первых, речь идёт о 4,9,8 но, насколько я его поизучил, ничего в этом плане там не расширилось, во всяком случае, в beta. А во-вторых, в том-то и дело, что неизвестно а) сколько объектов будет б) какой у них цвет будет изначально (они добавляются динамически)
|
|
| |
YURIY | Дата: Суббота, 22 Сентября 2007, 23:05 | Сообщение # 9 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (basme) б) какой у них цвет будет изначально (они добавляются динамически) Неправда ваша, батенька. Если вы создаёте кнопку, то вы прекрасно знаете, что изначально у неё цвет будет серый, а если вы хотите изменить её цвет, то делать будете это через команду Code SetObjectParam("obj","BGCOLOR=R,G,B") Так какие проблемы? Внимательно изучите проект create_objects.mbd, идущий в комплекте с новой beta-версией.
Вечная память Андрею Сергееву!
|
|
| |
as-master | Дата: Воскресенье, 23 Сентября 2007, 01:56 | Сообщение # 10 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Если цвета объектов известны изначально, то разумеется можно. Если цвет объектам присваивает пользователь, то тем более можно (кстати, цвет примитивных объектов пользователь изменить может!) А какие еще проблемы-то?
Да пребудет с вами ММВ!
|
|
| |
basme | Дата: Воскресенье, 23 Сентября 2007, 15:21 | Сообщение # 11 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Ситуация несколько глубже, чем кажется на первый взгляд. При работе с программой создаются объекты, причём цвет их задаётся самим пользователем, а число не ограничено. На этом этапе, безусловно, можно для каждого объекта создать свою переменную с данными о цвете. А вот потом информация обо всех объектах сохраняется в текстовый файл. Затем её можно опять загрузить и создать объекты командой CreateObject. Но вот только после загрузки у нас уже не будет переменных с данными о цвете, то есть опять сохранить загруженные объекты уже нельзя. Кто-нибудь понял всю ту белиберду, что я понаписал выше?
|
|
| |
De_Cadanz | Дата: Воскресенье, 23 Сентября 2007, 15:43 | Сообщение # 12 |
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 1
Награды: 0
Статус: Offline
| а кто мешает из файла и переменные с данными о цвете грузить?
Quod licet Iovi non licet bovi
|
|
| |
Alex3A | Дата: Воскресенье, 23 Сентября 2007, 15:44 | Сообщение # 13 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| А кто тебе мешает, при сохранении объектов, сохранять и их цвет?
|
|
| |
YURIY | Дата: Воскресенье, 23 Сентября 2007, 17:05 | Сообщение # 14 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (De_Cadanz) а кто мешает из файла и переменные с данными о цвете грузить? Quote (Alex3A) А кто тебе мешает, при сохранении объектов, сохранять и их цвет? Третьим человеком спрашивать одно и тоже не буду
Вечная память Андрею Сергееву!
|
|
| |
basme | Дата: Воскресенье, 23 Сентября 2007, 21:11 | Сообщение # 15 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (Alex3A) А кто тебе мешает, при сохранении объектов, сохранять и их цвет? Тут такая вещь. При сохранении используется цикл, причём точно известно число объектов каждого типа (прямоугольники, линии, эллипсы). Имя каждого объекта при создании формируется по маске "идентификатор+номер", где идентификатор для каждого типа объектов разный. Дальше в цикле получаются свойства объектов, такие, как положение и размер, с помощью функций, где в качестве параметров используется идентификатор+число повторений цикла. И так по одному циклу для каждого типа объектов. Таким образом можно получить все данные об объектах по порядку, кроме цвета. Если записывать данные о цвете для каждого объекта, то как мне связать имя переменной, содержащей цвет, и номер объекта, цвет которого эта функция содержит? Quote (basme) На этом этапе, безусловно, можно для каждого объекта создать свою переменную с данными о цвете. Эта идея накрылась медным тазом по причинам, указанным выше, просто написал я это не проверив идею на практике, прошу прощения за оплошность.
|
|
| |
toizy | Дата: Воскресенье, 23 Сентября 2007, 22:43 | Сообщение # 16 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (basme) о как мне связать имя переменной, содержащей цвет, и номер объекта Массив - элемент_массива[номер_объекта]
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
as-master | Дата: Понедельник, 24 Сентября 2007, 00:33 | Сообщение # 17 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| А по-моему, всё это решаемо. Просто лично мне напрягаться не хочется - неинтересно. Тем более, что прекрасно вижу, что ты, basme, и сам довольно продвинутый чел в ММВ. Так что решишь проблему сам, я совершенно не сомневаюсь
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Понедельник, 24 Сентября 2007, 13:15 | Сообщение # 18 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote Таким образом можно получить все данные об объектах по порядку, кроме цвета Это ключевая фраза, Эсли ты сохраняешь и считываещь по порядку, то номер этого порядка может служить указателем на цвет. Если такого порядка нету, у тебя есть идентификаторы объектов, что тоже однозначно для определения, и назначения цвета.
|
|
| |
as-master | Дата: Понедельник, 24 Сентября 2007, 16:19 | Сообщение # 19 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (basme) Таким образом можно получить все данные об объектах по порядку, кроме цвета Кстати, да! А почему, собственно, кроме цвета? Чем он хуже других переменных?
Да пребудет с вами ММВ!
|
|
| |
basme | Дата: Понедельник, 24 Сентября 2007, 19:43 | Сообщение # 20 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (as-master) Чем он хуже других переменных? Хуже только тем, что нет для него функции. Quote (toizy) Массив - элемент_массива[номер_объекта] Не понял... С массивами у меня вообще туго. Как команду-то дать?
|
|
| |
as-master | Дата: Понедельник, 24 Сентября 2007, 23:53 | Сообщение # 21 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (basme) Хуже только тем, что нет для него функции. У меня такое ощущение, что мы говорим на разных языках. Какая еще к черту функция? Юзер выбирает цвет для объекта, в это время программа "знает" значение цвета, та как он попадает в константу CBK_SelColor. Как происходит выбор юзером цвета, например, для прямоугольника? Вот так: ColorPicker() color$=CBK_SelColor SetObjectParam("Rectangle","BGCOLOR=color$") Теперь цвет этого прямоугольника находится у тебя в переменной color$. Вот и сохраняй её! Ваще не вижу никаких проблем. Можешь выводить эту переменную каждый раз, чтобы посмотреть :) Message("Выбран цвет","color$")
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Вторник, 25 Сентября 2007, 18:37 | Сообщение # 22 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote Не понял... С массивами у меня вообще туго. Как команду-то дать? С массивами все очень просто, считай что имя массива - это название книги, а номер - номер страницы. Массив (книга) book$, [1] -номер страницы. book$ [1] ='первая страница' - на первой у тебя написано 'первая страница' book$ [2] ='вторая страница' - на второй 'вторая страница' Номер страницы можно описать переменой. nomer=2 book$ [nomer] даст тебе то что написано на второй странице, поменяв номер получишь то что у тебя написано на странице с соответствующим номером(откроешь книгу на соответствующей странице..)
|
|
| |
basme | Дата: Вторник, 25 Сентября 2007, 20:12 | Сообщение # 23 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (as-master) Ваще не вижу никаких проблем. Мне бы так проблем не видеть... Проблема в том, что сначала создаётся много объектов, возможно, с разными цветами, причём зачастую очень много. И только потом происходит сохранение. Таким образом, мне надо для каждого объекта записать значение цвета в отдельную переменную ещё при его создании, но для этого нужно назначать переменным упорядоченные имена, чтобы потом без гемора их можно было читать, а как сделать так я не знаю. А вот с массивами попробую...
|
|
| |
Alex3A | Дата: Вторник, 25 Сентября 2007, 21:49 | Сообщение # 24 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Как раз для этого массивы и предназначены! Типа имя объекта name$[1] = color[1]= zizeX[1]= zizeY[1]= И так далее, выбрав номер объекта получим все его свойства. Узнать цвет - cvet=color[X], где X-номер объекта. Причем объекты могут быть любыми.
|
|
| |
as-master | Дата: Вторник, 25 Сентября 2007, 23:31 | Сообщение # 25 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Да, именно с массивами и надо всё сохранять. Суть в следующем. Ты будешь сохранять в текстовый файл столько строк, сколько у тебя объектов. Для каждого объекта - отдельная строка. А сама строка уже будет представлять собой массив из переменных, разделенных делимитером #. Выглядеть это будет так: String1#String2#String3#String4#String5#String6# это строка массива для шести переменных. Каждая переменная описывает свой параметр.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Среда, 26 Сентября 2007, 00:00 | Сообщение # 26 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote String1#String2#String3#String4#String5#String6# Незапугать бы....
|
|
| |
as-master | Дата: Среда, 26 Сентября 2007, 03:48 | Сообщение # 27 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Alex3A) Незапугать бы.... А там и пугать особо нечем. Чтобы записать такую строку в файл, надо сложить все переменные, вставив между ними делимитеры. Примерно это выглядит так: string$=String1$+'#'+String2$+'#'+String3$+'#'+String4$+'#'+String5$+'#'+String6$+'#' А чтобы "выдернуть" потом все переменные из файла, надо применить такой сценарий: Code For i=1 To NOL(file$) string$=StrFromFile(file$,i,1) String1$[i]=GetArrayItem(string$,#,1) String2$[i]=GetArrayItem(string$,#,2) String3$[i]=GetArrayItem(string$,#,3) String4$[i]=GetArrayItem(string$,#,4) String5$[i]=GetArrayItem(string$,#,5) String6$[i]=GetArrayItem(string$,#,6) Next i После этого в памяти окажутся все переменные для всего числа i объектов. А дальше - применяй на здоровье :)
Да пребудет с вами ММВ!
|
|
| |
basme | Дата: Среда, 26 Сентября 2007, 22:33 | Сообщение # 28 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (as-master) Да, именно с массивами и надо всё сохранять. Спасибо, попробую, когда время будет.
|
|
| |
basme | Дата: Четверг, 04 Октября 2007, 20:30 | Сообщение # 29 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| СОС!!! Кто-нибудь, объясните мне, НУ ПОЧЕМУ ОНО НЕ РАБОТАЕТ?!!!!!!! Речь идёт о Рисовалке, которая была выложена на mmbuilder.ru совсем недавно (респект as-master'у). То, что там уже есть, работает нормально, но, как говорится, дурная голова... не даёт покоя ни рукам, ни ногам, ни всему остальному! Захотелось мне сделать функцию загрузки-сохранения объектов в текстовый файл. Разумеется, не самих объектов, а их месторасположения и цвета. Ну, а потом подгружать их из файла и воссоздавать в проекте. Тема точно такая-же, так как используется именно то, до чего мы договорились десятком постов выше. Суть в чём? При создании объекта данные о нём заносятся в массив, кнопка сохранения выдёргивает по номеру из каждого массива, группирует их в новый массив и записывает в файл. При загрузке из массива элементы выдёргиваются в переменные, которые используются при создании объектов. Сначала я всё это сделал только с точками, и, к моему величайшему удивлению, ОНО ЗАРАБОТАЛО! Точки сохранялись и загружались корректно. Потом я решил расширить область загрузки ещё и на прямые линии, и вот здесь меня ждал облом. Конструкция: в массив вводится ещё одна переменная - идентификатор. При загрузке идентификатор считывается вместе с остальными данными объектов, а потом с помощью условных операторов решается, что же создать - точку или линию. Данные-то для них одинаковые - ширина, высота, x, y, и три составляющие цвета. Вот так должно быть. И я совершенно не понимаю, почему этого нет? По идее, всё должно работать нормально. Плиз, если кому не лень, подскажите пожалуйста! Вот файл:
|
|
| |