Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
ЦВЕТ. Как его узнать?
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
Quote (basme)
Так можно?

так нельзя. ну разве что пагин...


Жизнь оказалась не такой уж и забавной, как поначалу...
 
basmeДата: Суббота, 22 Сентября 2007, 09:38 | Сообщение # 5
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
Quote
так нельзя

Жаль. Одна идейка накрылась медным тазом... Ну да ладно.
 
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
Quote (toizy)
так нельзя

Если цвета объектов известны изначально, то разумеется можно.
Если цвет объектам присваивает пользователь, то тем более можно
(кстати, цвет примитивных объектов пользователь изменить может!)

А какие еще проблемы-то?


Да пребудет с вами ММВ!
 
basmeДата: Воскресенье, 23 Сентября 2007, 15:21 | Сообщение # 11
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
Ситуация несколько глубже, чем кажется на первый взгляд. При работе с программой создаются объекты, причём цвет их задаётся самим пользователем, а число не ограничено. На этом этапе, безусловно, можно для каждого объекта создать свою переменную с данными о цвете. А вот потом информация обо всех объектах сохраняется в текстовый файл. Затем её можно опять загрузить и создать объекты командой CreateObject. Но вот только после загрузки у нас уже не будет переменных с данными о цвете, то есть опять сохранить загруженные объекты уже нельзя. Кто-нибудь понял всю ту белиберду, что я понаписал выше? smile
 
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)
А кто тебе мешает, при сохранении объектов, сохранять и их цвет?

Третьим человеком спрашивать одно и тоже не буду smile



Вечная память Андрею Сергееву!
 
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, и сам
довольно продвинутый чел в ММВ. Так что решишь проблему
сам, я совершенно не сомневаюсь smile


Да пребудет с вами ММВ!
 
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)
Массив - элемент_массива[номер_объекта]

Не понял... wacko С массивами у меня вообще туго. Как команду-то дать?
 
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)
Ваще не вижу никаких проблем.

Мне бы так проблем не видеть...
Проблема в том, что сначала создаётся много объектов, возможно, с разными цветами, причём зачастую очень много. И только потом происходит сохранение. Таким образом, мне надо для каждого объекта записать значение цвета в отдельную переменную ещё при его создании, но для этого нужно назначать переменным упорядоченные имена, чтобы потом без гемора их можно было читать, а как сделать так я не знаю. angry
А вот с массивами попробую...
 
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
СОС!!! Кто-нибудь, объясните мне, НУ ПОЧЕМУ ОНО НЕ РАБОТАЕТ?!!!!!!! angry
Речь идёт о Рисовалке, которая была выложена на mmbuilder.ru совсем недавно (респект as-master'у). То, что там уже есть, работает нормально, но, как говорится, дурная голова... не даёт покоя ни рукам, ни ногам, ни всему остальному! Захотелось мне сделать функцию загрузки-сохранения объектов в текстовый файл. Разумеется, не самих объектов, а их месторасположения и цвета. Ну, а потом подгружать их из файла и воссоздавать в проекте. Тема точно такая-же, так как используется именно то, до чего мы договорились десятком постов выше. Суть в чём? При создании объекта данные о нём заносятся в массив, кнопка сохранения выдёргивает по номеру из каждого массива, группирует их в новый массив и записывает в файл. При загрузке из массива элементы выдёргиваются в переменные, которые используются при создании объектов. Сначала я всё это сделал только с точками, и, к моему величайшему удивлению, ОНО ЗАРАБОТАЛО! happy Точки сохранялись и загружались корректно. Потом я решил расширить область загрузки ещё и на прямые линии, и вот здесь меня ждал облом. Конструкция: в массив вводится ещё одна переменная - идентификатор. При загрузке идентификатор считывается вместе с остальными данными объектов, а потом с помощью условных операторов решается, что же создать - точку или линию. Данные-то для них одинаковые - ширина, высота, x, y, и три составляющие цвета. Вот так должно быть. И я совершенно не понимаю, почему этого нет? wacko По идее, всё должно работать нормально. Плиз, если кому не лень, подскажите пожалуйста! Вот файл:
Прикрепления: 80546444.mbd (26.6 Kb)
 
  • Страница 1 из 1
  • 1
Поиск: