Вверх ↑
Этот топик читают: Гость
Ответов: 8923
Рейтинг: 823
#1: 2010-11-02 15:49:10 ЛС | профиль | цитата
Захотелось поставить индикатор на несколько состояний, а в [b]LED[/b] только два цвета, пришлось стряпать схему

Add(ChildPanelEx,8135019,273,84)
{
}
BEGIN_SDK
Add(EditMultiEx,3270911,14,7)
{
WorkCount=#99:doWork= 0-ТёмноКрасный, 1-Красный, 2=Мигающий красный, 3=Зелёный, 4=ЯркоЗелёный, 5=Мигающий зелёный|
Width=384
Height=242
link(doWork,706818:doEvent1,[(28,13)(28,27)])
}
Add(Panel,13011606,91,154)
{
Left=135
Top=10
Width=25
Height=24
}
Add(LED,6147592,315,91)
{
Point(doVisible)
}
Add(LED,3580252,266,112)
{
Visible=1
ColorOn=65280
ColorOff=32768
Point(doVisible)
}
Add(Timer,3760102,91,196)
{
Interval=150
link(onTimer,1560489:doEvent1,[])
}
Add(If_else,16662494,196,175)
{
Op2=Integer(1)
link(onTrue,6147592:doChangeValue,[(247,181)(247,97)])
link(Op1,5826028:Value,[])
}
Add(Memory,5826028,196,63)
{
Default=Integer(1)
}
Add(Memory,7308992,161,133)
{
Default=Integer(1)
}
Add(If_else,10188796,161,203)
{
Op2=Integer(1)
link(onTrue,3580252:doChangeValue,[(254,209)(254,118)])
link(Op1,7308992:Value,[])
}
Add(Hub,706818,35,21)
{
OutCount=3
link(onEvent1,14028326:doOperation,[])
link(onEvent2,3035207:doWork1,[(81,34)])
link(onEvent3,4335848:doEvent,[(76,41)(76,104)])
}
Add(Hub,1560489,133,196)
{
link(onEvent1,16662494:doCompare,[(157,202)(157,181)])
link(onEvent2,10188796:doCompare,[])
}
Add(IndexToChanel,4335848,91,98)
{
Count=6
link(onEvent1,6147592:doOff,[])
link(onEvent2,6147592:doOn,[])
link(onEvent3,5826028:doClear,[(162,118)(162,76)])
link(onEvent4,3580252:doOff,[])
link(onEvent5,3580252:doOn,[])
link(onEvent6,7308992:doClear,[(139,139)(139,146)])
}
Add(Memory,16169332,91,63)
{
Default=Integer(0)
link(onData,11335764:doEvent1,[])
}
Add(Hub,11335764,133,63)
{
link(onEvent1,5826028:doValue,[])
link(onEvent2,7308992:doValue,[(152,76)(152,139)])
}
Add(Math,14028326,91,21)
{
OpType=7
Op2=3
ResultType=0
link(onResult,12127654:doEvent1,[])
}
Add(Math,10796414,266,21)
{
OpType=1
Op1=1
ResultType=0
link(onResult,6147592:doVisible,[(307,27)(307,118)])
}
Add(Hub,12127654,133,21)
{
link(onEvent1,10796414:doOperation,[])
link(onEvent2,3580252:doVisible,[(237,34)(237,139)])
}
Add(Timer,3989427,35,70)
{
Interval=10
AutoStop=1
link(onTimer,3035207:doWork2,[])
}
Add(HubEx,3035207,77,70)
{
link(onEvent,16169332:doClear,[])
}
END_SDK
Add(Button,2276202,175,84)
{
Left=55
Top=10
link(onClick,3713184:doNext,[])
}
Add(Counter,3713184,224,84)
{
Max=5
link(onNext,8135019:doWork,[])
}
, а потом решил, если есть в компоненте свойство - можно легко превратить его (свойство) в точку : LED.ini

@ColorOn=Цвет горящего светодиода|8|clRed
@ColorOff=Цвет потухшего светодиода|8|clMaroon
----------------------------------------------
hiLED.pas
...
//Обозначить в этом разделе две процедуры
public
...
procedure _work_doColorOn(var _Data:TData; Index:word);
procedure _work_doColorOff(var _Data:TData; Index:word);
...
//Внести в отот раздел описание добавленных процедур
implementation
....
procedure THILED._work_doColorOn;
begin
FColors[0]:=ToInteger(_Data);
FBr1:= CreateSolidBrush(FColors[0]);
end;

procedure THILED._work_doColorOff;
begin
FColors[1]:=ToInteger(_Data);
FBr2:= CreateSolidBrush(FColors[1]);
end;
...
и можно программно менять цвета

Add(LED,14713555,357,161)
{
Left=135
Top=55
ColorOn=65280
ColorOff=32768
Point(doColorOn)
Point(doColorOff)
}
Add(Button,11479133,175,161)
{
Left=55
Top=55
Caption="On/Off"
link(onClick,14713555:doChangeValue,[])
}
Add(Button,7905213,175,203)
{
Left=55
Top=85
Caption="Color"
link(onClick,6362323:doOpen,[])
}
Add(ColorDialog,6362323,224,203)
{
link(onSelect,1161367:doEvent1,[])
}
Add(ColorDialog,249670,294,210)
{
link(onSelect,14713555:doColorOff,[(342,216)(342,195)])
}
Add(Hub,1161367,266,203)
{
link(onEvent1,14713555:doColorOn,[(288,209)(288,188)])
link(onEvent2,249670:doOpen,[])
}
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#2: 2010-11-02 16:29:20 ЛС | профиль | цитата
Леонид, юмора не понял
code_21363.txt
А что я без переделок кодов менять программно цвета не могу ?
Не только On, но и Off
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_21363.txt [4.1KB] [336]
Разработчик
Ответов: 26117
Рейтинг: 2126
#3: 2010-11-02 17:04:06 ЛС | профиль | цитата
Это было добавлено еще пес знает когда
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#4: 2010-11-02 17:07:30 ЛС | профиль | цитата
Я потому и, что
Tad писал(а):
юмора не понял
.
Леонид, какая версия HiAsm в работе ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8923
Рейтинг: 823
#5: 2010-11-02 17:18:18 ЛС | профиль | цитата
Во как! 184 без обновлений
(Один араб самостоятельно - пустыня же - изучил арифметику по рваному учебнику для начальной школы, решил, что маловато и развивал математику самостоятельно, вывел интегральное исчисление и решив облагодетельствовать человечество вышел из пустыни. Хотя его ждало разочарование, но тем не менее ОН был гений!
Ребята, не пинайте сильно! )
карма: 19

0
Разработчик
Ответов: 26117
Рейтинг: 2126
#6: 2010-11-02 17:27:35 ЛС | профиль | цитата
[flood]
Леонид писал(а):
184 без обновлений

Ну вот, задали тебе работу
Леонид писал(а):
Ребята, не пинайте сильно!

Гы, гы, гы[/flood]
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#7: 2010-11-02 17:48:25 ЛС | профиль | цитата
Леонид писал(а):
Во как! 184 без обновлений
А мы уже давно сидим на 185-й. Так что извините : Конный пешему не товарищ.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 215
Рейтинг: 45
#8: 2010-11-03 04:59:12 ЛС | профиль | цитата
[flood]
Один араб ...
Вообще-то индиец (тамил) Рамануджан[/flood]
карма: 0

0
Ответов: 8923
Рейтинг: 823
#9: 2010-11-03 12:41:49 ЛС | профиль | цитата
lev, [flood]Значит Гениев было трое [/flood]
карма: 19

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