Вверх ↑
Этот топик читают: Гость
Ответов: 11
Рейтинг: 0
#1: 2020-05-13 19:51:13 ЛС | профиль | цитата
Здравствуйте, уважаемые форумчане.
Есть программа - панель с PAD-кнопками, каждая из которых запускает загруженный музыкальный файл.
В качестве кнопок использовал компонент ButtonRush, так как в программе реализовал возможность изменять цветовую схему кнопок (через MT-поток к точке doSetTheme компонента ButtonRush)
Появилась потребность сохранять цвет каждой кнопки, чтобы при повторном запуске программы можно было загрузить не только музыкальны файл для каждой кнопки, но и цветовую схему.
Может есть какие-нибудь идеи, как это реализовать?
Буду очень признателен.

Редактировалось 1 раз(а), последний 2020-05-13 20:06:26
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 16884
Рейтинг: 1239
#2: 2020-05-13 20:19:33 ЛС | профиль | цитата
ini_файл или БД SQLite.
CREATE TABLE IF NOT EXISTS Theme(
[File] TEXT,
[BackColor] TEXT,
[ColorFrom] TEXT,
[ColorTo] TEXT,
[ColorText] TEXT,
[BorderColor] TEXT,
[ColorShadow] TEXT,
[ColorFromDis] TEXT,
[ColorToDis] TEXT,
[ColorTextDis] TEXT,
[BorderColorDis] TEXT,
[ColorShadowDis] TEXT,
[ColorFromOver] TEXT,
[ColorToOver] TEXT,
[ColorTextOver] TEXT,
[BorderColorOver] TEXT,
[ColorShadowOver] TEXT,
[ColorFromDown] TEXT,
[ColorToDown] TEXT,
[ColorTextDown] TEXT,
[BorderColorDown] TEXT,
[ColorShadowDown] TEXT) ;

Редактировалось 1 раз(а), последний 2020-05-13 20:19:59
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 11
Рейтинг: 0
#3: 2020-05-13 21:05:18 ЛС | профиль | цитата
Спасибо за быстрый ответ.
Итак, если я все правильно понял..
При запуске программы, если нет ini-файла, создаем его (при чем для каждой кнопки отдельный). В нем прописать все цвета по-умолчанию.
Далее, если цвет изменяется пользователем в программе - меняется цвет кнопки и сразу меняются значения цветов в соответствующем ini-файле.
Тогда при следующем запуске программы, буду загружаться те цвета для кнопок, которые использовались при последнем запуске программы.

Но как быть, если сохраненных плей-листов (с музыкальными файлами) несколько, и для каждого нужна своя цветовая схема?
В идеале думал, чтобы и пути для музыкальных файлов и цвета сохранять в одном файле, тогда и путаницы небыло бы...
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#4: 2020-05-13 21:13:17 ЛС | профиль | цитата
Lelekanet, что выше во 2-й строчке написано7

 [File] TEXT, -- это и есть имя (или путь) к музыкальному файлу. 
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 11
Рейтинг: 0
#5: 2020-05-13 21:19:04 ЛС | профиль | цитата
Вы уж извините, не силен я в этом...
То есть, каждый цвет будет прикреплен к определенному музыкальному файлу?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#6: 2020-05-13 21:42:24 ЛС | профиль | цитата
Lelekanet писал(а):
То есть, каждый цвет будет прикреплен к определенному музыкальному файлу?
Можно так, а можно выбирать рандомно. Можно в зависимости от времени суток или от поры года.
Всё зависит от тех тараканов, которые ползают у тебя в голове.

Редактировалось 1 раз(а), последний 2020-05-13 21:44:25
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 16884
Рейтинг: 1239
#7: 2020-05-14 12:03:38 ЛС | профиль | цитата
Мои тараканы подсказывают:
Может быть создать
Синюю
Зелёную
Жёлтую
Красную и т.д.
темы ?

Хотя, зачем это нужно, я не понимаю.

Редактировалось 1 раз(а), последний 2020-05-14 12:05:14
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8887
Рейтинг: 823
#8: 2020-05-14 18:22:53 ЛС | профиль | цитата
Lelekanet, так на картинке? (Запуск по левой кнопке, цвет по правой)
401_songs_from_Vysotsky.jpg
Схема


Add(MainForm,2953706,77,119)
{
Point(onClose)
link(onCreate,8886675:doWork1,[])
link(onClose,8886675:doWork2,[])
}
Add(ChildScrollBox,8886675,133,133)
{
link(onEvent1,3795989:doPlay,[])
}
BEGIN_SDK
Add(EditMulti,14872424,21,21)
{
EventCount=1
WorkCount=2
VarCount=1
Width=503
Height=284
link(doWork1,3252789:doEvent1,[(31,27)(31,104)])
link(doWork2,16161429:doSave,[(72,34)(72,111)])
link(Var1,7372644:FString,[(27,199)(377,199)])
}
Add(ScrollBox,16699449,154,35)
{
Top=30
Width=384
Height=261
Align=5
}
Add(ChildPanelEx,11402050,168,161)
{
Mode=1
link(onMouse,2790051:doEvent,[])
}
BEGIN_SDK
Add(EditMultiEx,8229545,21,21)
{
WorkCount=#5:##add|8:##select|6:doName|7:doColor|
EventCount=#7:onMouse|
VarCount=#12:##eventIndex|
Point(##add)
Point(##select)
Point(##eventIndex)
link(##add,12111087:doSplit,[(53,27)(53,104)])
link(doName,7541162:doWork1,[(137,41)])
link(doColor,4026461:doWork1,[(130,48)])
}
Add(Panel,11596730,35,154)
{
Left=1
Top=1
Width=180
Height=22
Layout="parent.MyButton"
}
Add(BitBtn,13540337,147,98)
{
Left=1
Top=1
Width=178
Point(onMouseDown)
Point(doColor)
link(onMouseDown,8229545:onMouse,[(246,111)(246,27)])
}
Add(MultiStrData,12111087,84,98)
{
link(onPart1,7541162:doWork2,[])
link(onPart2,4026461:doWork2,[])
}
Add(HubEx,7541162,133,98)
{
link(onEvent,13540337:doCaption,[])
}
Add(HubEx,4026461,126,105)
{
link(onEvent,13540337:doColor,[])
}
END_SDK
Add(StrList,16161429,84,70)
{
FileName="MyVysotsky.ini"
Point(onGetString)
Point(doGetString)
link(onGetString,12589699:doSplit,[])
}
Add(GridLayout,12662673,98,203)
{
Name="MyButton"
Space=1
Padding=1
Rows=100
Cols=5
}
Add(Hub,3252789,42,98)
{
link(onEvent1,16161429:doLoad,[])
link(onEvent2,6152100:doEnum,[(63,111)(63,167)])
}
Add(ArrayEnum,6152100,98,161)
{
link(onItem,11402050:##add,[])
link(onEndEnum,12662673:doResize,[(142,174)(142,192)(86,192)(86,209)])
link(Array,5292357:Var2,[])
}
Add(DoData,5348467,273,161)
{
link(onEventData,9824690:doEvent1,[])
link(Data,13396291:Var1,[(279,150)(265,150)])
}
Add(IndexToChanel,2790051,210,161)
{
link(onEvent1,5348467:doData,[])
link(onEvent2,9936760:doData,[(254,174)(254,237)])
}
Add(DoData,9936760,273,231)
{
link(onEventData,16369887:doEvent1,[])
link(Data,10037942:Var2,[])
}
Add(GetDataEx,13396291,259,203)
{
Angle=3
link(Data,11402050:##eventIndex,[(174,208)])
}
Add(Hub,16369887,315,231)
{
OutCount=3
link(onEvent1,13495204:doWork3,[(349,237)])
link(onEvent2,11402050:##select,[(337,244)(337,223)(148,223)(148,174)])
link(onEvent3,15065728:doOpen,[])
}
Add(Hub,9824690,315,161)
{
link(onEvent1,13495204:doWork2,[])
link(onEvent2,14872424:onEvent1,[(427,174)(427,27)])
}
Add(HubEx,13495204,345,161)
{
Angle=3
link(onEvent,16161429:doGetString,[(349,141)(72,141)(72,118)])
}
Add(MultiStrPart,12589699,273,77)
{
link(onSplit,7372644:doString,[])
}
Add(Dir,11047771,371,28)
{
}
Add(FormatStr,7372644,371,77)
{
Mask="%1Data\%2"
Point(FString)
link(Str1,11047771:CurrentDir,[])
link(Str2,15168363:Var1,[(384,68)(335,68)])
}
Add(ColorDialog,15065728,350,245)
{
link(onSelect,9152612:doEvent1,[])
}
Add(Hub,9152612,392,245)
{
link(onEvent1,11402050:doColor,[(418,251)(418,216)(156,216)(156,188)])
link(onEvent2,13652958:doString,[])
}
Add(ArrayRW,16322012,476,245)
{
link(Array,5292357:Var3,[(482,131)])
link(Index,10037942:Var3,[(489,208)])
}
Add(GetDataEx,5292357,98,126)
{
link(Data,16161429:Array,[])
}
Add(GetDataEx,10037942,273,203)
{
Angle=3
link(Data,13396291:Var3,[])
}
Add(FormatStr,13652958,427,252)
{
Mask="%1;%2"
link(onFString,16322012:doWrite,[])
link(Str1,15168363:Var3,[(433,121)])
}
Add(GetDataEx,15168363,329,116)
{
Angle=3
link(Data,12589699:Part1,[(279,121)])
}
END_SDK
Add(ChildPanel,1787229,189,147)
{
link(onEvent1,3795989:doPause,[])
link(onEvent2,3795989:doClose,[(233,160)(233,167)])
}
BEGIN_SDK
Add(EditMulti,11844099,21,21)
{
EventCount=2
WorkCount=1
link(doWork1,2141613:doPosition,[(39,27)(39,34)])
}
Add(Panel,2406175,56,77)
{
Width=384
Height=30
Align=2
}
Add(Button,13466393,105,35)
{
Left=265
Top=5
Width=35
Caption="II"
Data=Integer(0)
Point(doCaption)
link(onClick,11844099:onEvent1,[(229,41)(229,27)])
}
Add(ProgressBar,2141613,56,28)
{
Left=10
Top=7
Width=240
Height=15
Color=32768
Max=1000
ProgressColor=65280
}
Add(Button,16686038,147,42)
{
Left=310
Top=5
Width=35
Caption="XX"
Point(doCaption)
link(onClick,11844099:onEvent2,[(250,48)(250,34)])
}
END_SDK
Add(MediaPlayer,3795989,245,133)
{
Point(doClose)
link(FileName,8886675:Var1,[(251,121)(195,121)(195,177)(139,177)])
}
Add(Timer,1116406,189,189)
{
Interval=50
link(onTimer,23102:doCalc,[])
}
Add(MathParse,23102,245,189)
{
MathStr="%1/(%2+1)*1000"
ResultType=0
link(onResult,1787229:doWork1,[(290,195)(290,183)(177,183)(177,153)])
link(X1,3795989:Position,[])
link(X2,3795989:Length,[])
}

А кто захочет и *.ехе, и схему, и песни Высоцкого, то вот на Яндекс-диске https://yadi.sk/d/WrTEjd8ftvvzaQ 650 Мб
карма: 19

0
Ответов: 1925
Рейтинг: 172
#9: 2020-05-14 18:55:59 ЛС | профиль | цитата
Lelekanet, попробуй так:

Add(ButtonRush,16712247,560,294)
{
Left=25
Top=80
Glyphs=[]
Point(doSetTheme)
}
Add(MainForm,10621626,126,105)
{
Width=356
Height=287
Point(onClose)
link(onCreate,15954208:doEvent1,[])
}
Add(MT_AddData,6719729,385,294)
{
link(onAdd,12699648:doEvent1,[])
}
Add(PointHint,7140123,133,287)
{
Info=#24:Изменение цветовой схемы|
Width=197
link(Event,6719729:doAdd,[(358,303)(358,300)])
}
Add(Hub,12699648,469,294)
{
InCount=2
link(onEvent1,16712247:doSetTheme,[])
link(onEvent2,15923775:doStr,[])
}
Add(Ini,7171377,483,455)
{
FileName="sets.ini"
Section="Цветовые схемы"
Type=1
Point(doSectionData)
Point(onSectionData)
link(Key,4847309:Var,[])
link(Value,15923775:Str,[])
link(onSectionData,10937535:doSplit,[])
}
Add(LineBreak,1719317,441,469)
{
link(Out,7171377:doSectionData,[])
Primary=[10259593,-231,-336]
}
Add(Button,12474359,406,105)
{
Left=25
Top=15
Width=140
Caption="Сохранённые схемы"
link(onClick,2164273:In,[])
AddHint(-102,-24,119,13,Caption)
}
Add(PopupMenu,13359637,623,511)
{
link(onClick,13009423:doRead,[])
}
Add(LineBreak,9116237,581,511)
{
link(Out,13359637:doPopupHere,[])
Primary=[2164273,-133,-406]
}
Add(StrPart,10937535,532,462)
{
Char="="
link(onSplit,681579:doAdd,[(604,468)(604,426)])
link(onPart,13359637:doAddItem,[(594,475)(594,531)])
}
Add(StrList,681579,658,420)
{
}
Add(ArrayRW,13009423,672,511)
{
link(onRead,4453552:In,[])
link(Array,681579:Array,[])
}
Add(Button,8938195,406,147)
{
Left=25
Top=40
Width=140
Caption="Сохранить текущую"
link(onClick,602127:doWork1,[])
AddHint(-146,7,115,13,Caption)
}
Add(MT_String,15923775,504,301)
{
}
Add(ChildForm,602127,462,147)
{
link(onEvent1,10388055:doEvent1,[])
}
BEGIN_SDK
Add(EditMulti,8697951,21,21)
{
EventCount=1
WorkCount=1
VarCount=1
link(doWork1,9661463:doShowModal,[(49,27)(49,104)])
link(Var1,711387:Text,[(27,203)(69,203)])
}
Add(MainForm,9661463,77,70)
{
Left=35
Top=105
Width=246
Height=108
Visible=1
Caption="Введите имя схемы"
Position=1
Point(doShowModal)
}
Add(Edit,711387,63,154)
{
Left=15
Top=10
Width=205
Text="МояСхема"
}
Add(Button,1127326,210,49)
{
Left=100
Top=45
Caption="ОК"
link(onClick,6907414:doEvent1,[])
}
Add(Hub,6907414,259,49)
{
link(onEvent1,8697951:onEvent1,[(299,55)(299,27)])
link(onEvent2,16041593:In,[])
}
Add(LineBreak,12648716,35,91)
{
link(Out,9661463:doClose,[])
Primary=[16041593,252,-35]
}
END_SDK
Add(LineBreak,7549583,406,462)
{
link(Out,7171377:doWrite,[])
Primary=[11799872,133,-315]
}
Add(LineBreak,10734727,462,189)
{
Type=1
link(Data,602127:Var1,[])
Primary=[4847309,35,238]
}
Add(MT_String,9505725,385,343)
{
link(onResult,12699648:doEvent2,[(443,349)(443,307)])
}
Add(LineBreak,5992928,343,350)
{
link(Out,9505725:doMT,[])
Primary=[4453552,371,161]
}
Add(Hub,15954208,182,119)
{
InCount=2
OutCount=3
link(onEvent1,6351240:In,[])
link(onEvent2,15498882:In,[])
link(onEvent3,10259593:In,[])
}
Add(LineBreak,16563105,616,427)
{
link(Out,681579:doClear,[])
Primary=[6351240,-406,-308]
}
Add(LineBreak,403162,581,532)
{
link(Out,13359637:doClear,[])
Primary=[15498882,-371,-406]
}
Add(Hub,10388055,511,147)
{
link(onEvent1,11799872:In,[])
link(onEvent2,5878943:In,[])
}
Add(LineBreak,7736363,126,140)
{
link(Out,15954208:doEvent2,[(169,146)(169,132)])
Primary=[5878943,413,14]
}
карма: 9
0
Ответов: 11
Рейтинг: 0
#10: 2020-05-15 22:33:24 ЛС | профиль | цитата
Tad писал(а):
Мои тараканы подсказывают:
Может быть создать
Синюю
Зелёную
Жёлтую
Красную и т.д.
темы ?

Хотя, зачем это нужно, я не понимаю.

Редактировалось 1 раз(а), последний 2020-05-14 12:05:14


Схемы создал. Так как с их помощью меняю цвета кнопок в программе. А нужно это для того, чтобы было удобно (с помощью разного цвета кнопок) разделить музыкальные отрывки по тематике...

Кстати это натолкнуло на мысль сделать, чтобы при загрузке цвет каждой кнопки брать из цветовых схем (под тем индексом, под которым она была сохранена). Тогда не нужно кучи ini файлов, а индексы схем можно дописать в файл с сохраненными музыкальными отрывками...
Спасибо. Буду пробовать...

Редактировалось 1 раз(а), последний 2020-05-15 22:49:53
карма: 0

0
Ответов: 11
Рейтинг: 0
#11: 2020-05-15 23:57:55 ЛС | профиль | цитата
Друзья, всем большое спасибо за идеи.
Задача реализована путем сохранения/загрузки индексов цветов из цветовой схемы (всего их 8)
Так что теперь и файл сохранения/загрузки один и на музыку и на цвета кнопок (что и хотелось в результате)
И схему пришлось расширить совсем немного.

Еще раз убедился, что одна голова хорошо, а форум - лучше! ))
карма: 0

0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)