Verfasst: 14.03.2009 16:48
ja unübersichtlich ist das schon. ossy sollte sich mal die Hilfe anschauen.
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
Declare CreateBitmap(nr,farbe)
Declare CreateWiderstand()
Declare Mit4ringe()
Declare Mit5ringe()
Declare SchreibeDaten()
Declare StartWertesetzen()
; ****************************************************
; * Widerstand-Farbcode *
; * von *
; * Wolfgang Drescher *
; * Version 1.0 vom 01.03.2009 *
; * übersetzt von HJBremer 2009 *
; ****************************************************
Structure Widerstandswerte
r1.l
r2.l
r3.l
r4.l
r5.l
start.l
wertr1$
wertr2$
wertr3$
wertr4$
multi$
kohm.f
mohm.f
wwert.f
tol$
windowbr.l
windowhh.l
butimgbr.l
butimghh.l
wdsimgbr.l
wdsimghh.l
infimgbr.l
infimghh.l
backcolor.l
vierringe.l
fuenfringe.l
schwarz.l
braun.l
rot.l
orange.l
gelb.l
gruen.l
blau.l
violet.l
grau.l
weiss.l
silber.l
gold.l
hg.l
farblos.l
EndStructure
Global wd.Widerstandswerte
LoadFont(0,"Arial",9)
#opgadgetvierringe = 1
#opgadgetfuenfringe = 2
#imggadgettxtinfo = 3
#imggadgetwiderstand = 4
StartWertesetzen()
CreateBitmap(10, wd\schwarz)
CreateBitmap(11, wd\braun)
CreateBitmap(12, wd\rot)
CreateBitmap(13, wd\orange)
CreateBitmap(14, wd\gelb)
CreateBitmap(15, wd\gruen)
CreateBitmap(16, wd\blau)
CreateBitmap(17, wd\violet)
CreateBitmap(18, wd\grau)
CreateBitmap(19, wd\weiss)
CreateBitmap(20, wd\silber)
CreateBitmap(21, wd\gold)
CreateBitmap(22, wd\farblos)
titel$ = "Widerstands-Farbcode by Wolfgang Drescher"
OpenWindow(0, 0, 0, wd\windowbr, wd\windowhh, titel$, #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
CreateGadgetList(WindowID(0))
SetWindowColor(0, wd\backcolor)
TextGadget(#PB_Any, 95, 10, 220, 40, "", #SS_SUNKEN)
OptionGadget(#opgadgetvierringe, 130, 20, 60, 20, "4-Ringe")
OptionGadget(#opgadgetfuenfringe, 230, 20, 60, 20, "5-Ringe")
ImageGadget(#imggadgetwiderstand, 0, 50, 0, 0, 0)
SetGadgetState(#opgadgetvierringe, 1) ; erste Option als aktiv
;Erster Ring
sp = 50: ze = 140: nr = 10
For j = 100 To 109
ButtonImageGadget(j,sp,ze,wd\butimgbr,wd\butimghh,ImageID(nr))
ze + wd\butimghh: nr + 1
Next
HideGadget(100,1)
;Zweiter Ring
sp = 110: ze = 140: nr = 10
For j = 200 To 209
ButtonImageGadget(j,sp,ze,wd\butimgbr,wd\butimghh,ImageID(nr))
ze + wd\butimghh: nr + 1
Next
;Driter Ring
sp = 170: ze = 140: nr = 10
For j = 300 To 311
ButtonImageGadget(j,sp,ze,wd\butimgbr,wd\butimghh,ImageID(nr))
ze + wd\butimghh: nr + 1
Next
;vierter Ring
sp = 230: ze = 140: nr = 10
For j = 400 To 411
ButtonImageGadget(j,sp,ze,wd\butimgbr,wd\butimghh,ImageID(nr))
ze + wd\butimghh: nr + 1
Next
;fünfter Ring
sp = 320: ze = 140: nr = 10
For j = 500 To 512
ButtonImageGadget(j,sp,ze,wd\butimgbr,wd\butimghh,ImageID(nr))
ze + wd\butimghh: nr + 1
Next
HideGadget(500,1):HideGadget(503,1):HideGadget(504,1):HideGadget(509,1)
ze + wd\butimghh
ImageGadget(#imggadgettxtinfo, 0, ze, 0, 0, 0)
; Widerstand ausgeben
SchreibeDaten()
Mit4Ringe()
Repeat
With wd.Widerstandswerte
EventID = WaitWindowEvent()
If eventid = #PB_Event_Gadget
GadgetNummer = EventGadget()
Select GadgetNummer
Case #opgadgetvierringe
Mit4Ringe()
\vierringe = 0
Case #opgadgetfuenfringe
Mit5ringe()
\vierringe = 1
Case 101: \r1 = \braun: \wertr1$="1"
Case 102: \r1 = \rot: \wertr1$="2"
Case 103: \r1 = \orange: \wertr1$="3"
Case 104: \r1 = \gelb: \wertr1$="4"
Case 105: \r1 = \gruen: \wertr1$="5"
Case 106: \r1 = \blau: \wertr1$="6"
Case 107: \r1 = \violet: \wertr1$="7"
Case 108: \r1 = \grau: \wertr1$="8"
Case 109: \r1 = \weiss: \wertr1$="9"
Case 200: \r2 = \schwarz:\wertr2$="0"
Case 201: \r2 = \braun: \wertr2$="1"
Case 202: \r2 = \rot: \wertr2$="2"
Case 203: \r2 = \orange: \wertr2$="3"
Case 204: \r2 = \gelb: \wertr2$="4"
Case 205: \r2 = \gruen: \wertr2$="5"
Case 206: \r2 = \blau: \wertr2$="6"
Case 207: \r2 = \violet: \wertr2$="7"
Case 208: \r2 = \grau: \wertr2$="8"
Case 209: \r2 = \weiss: \wertr2$="9"
Case 300: \r3 = \schwarz:\wertr3$="0": If \vierringe=0: \multi$="10": EndIf
Case 301: \r3 = \braun: \wertr3$="1": If \vierringe=0: \multi$="000": EndIf
Case 302: \r3 = \rot: \wertr3$="2": If \vierringe=0: \multi$="0000": EndIf
Case 303: \r3 = \orange: \wertr3$="3": If \vierringe=0: \multi$="00000": EndIf
Case 304: \r3 = \gelb: \wertr3$="4": If \vierringe=0: \multi$="000000": EndIf
Case 305: \r3 = \gruen: \wertr3$="5": If \vierringe=0: \multi$="0000000": EndIf
Case 306: \r3 = \blau: \wertr3$="6": If \vierringe=0: \multi$="00000000": EndIf
Case 307: \r3 = \violet: \wertr3$="7": If \vierringe=0: \multi$="000000000": EndIf
Case 308: \r3 = \grau: \wertr3$="8": If \vierringe=0: \multi$="0000000000": EndIf
Case 309: \r3 = \weiss: \wertr3$="9": If \vierringe=0: \multi$="00000000000": EndIf
Case 310: \r3 = \silber: \wertr3$="": If \vierringe=0: \multi$="": EndIf
Case 311: \r3 = \gold: \wertr3$="": If \vierringe=0: \multi$="0": EndIf
Case 400: \r4 = \schwarz:\multi$="00"
Case 401: \r4 = \braun: \multi$="000"
Case 402: \r4 = \rot: \multi$="0000"
Case 403: \r4 = \orange: \multi$="00000"
Case 404: \r4 = \gelb: \multi$="000000"
Case 405: \r4 = \gruen: \multi$="0000000"
Case 406: \r4 = \blau: \multi$="00000000"
Case 407: \r4 = \violet: \multi$="000000000"
Case 408: \r4 = \grau: \multi$="0000000000"
Case 409: \r4 = \weiss: \multi$="00000000000"
Case 410: \r4 = \silber: \multi$=""
Case 411: \r4 = \gold: \multi$="0"
Case 501: \r5 = \braun: \tol$="+/- 1%"
Case 502: \r5 = \rot: \tol$="+/- 2%"
Case 505: \r5 = \gruen: \tol$="+/- 0,5%"
Case 506: \r5 = \blau: \tol$="+/- 0,25%"
Case 507: \r5 = \violet: \tol$="+/- 0,1%"
Case 508: \r5 = \grau: \tol$="+/- 0,05%"
Case 510: \r5 = \silber: \tol$="+/- 10%"
Case 511: \r5 = \gold: \tol$="+/- 5%"
Case 512: \r5 = \hg: \tol$="+/- 20%"
EndSelect
SchreibeDaten()
EndIf
EndWith
Until EventID = #PB_Event_CloseWindow ; Wenn das Schliessen Button gedrückt wird, Programm beenden.
End ; Programm ende
Procedure Mit4ringe()
HideGadget(400, 1)
HideGadget(401, 1)
HideGadget(402, 1)
HideGadget(403, 1)
HideGadget(404, 1)
HideGadget(405, 1)
HideGadget(406, 1)
HideGadget(407, 1)
HideGadget(408, 1)
HideGadget(409, 1)
HideGadget(410, 1)
HideGadget(411, 1)
HideGadget(308, 1)
HideGadget(309, 1)
HideGadget(310, 0)
HideGadget(311, 0)
wd\r4 = wd\hg ; Hindergrundfarbe vom 4. Ring
EndProcedure
Procedure Mit5ringe()
HideGadget(310, 1)
HideGadget(311, 1)
HideGadget(308, 0)
HideGadget(309, 0)
HideGadget(400, 0)
HideGadget(401, 0)
HideGadget(402, 0)
HideGadget(403, 0)
HideGadget(404, 0)
HideGadget(405, 0)
HideGadget(406, 0)
HideGadget(407, 0)
HideGadget(408, 1)
HideGadget(409, 1)
HideGadget(410, 0)
HideGadget(411, 0)
EndProcedure
Procedure SchreibeDaten()
CreateWiderstand()
With wd.Widerstandswerte
CreateImage(1, \infimgbr, \infimghh)
StartDrawing(ImageOutput(1))
If \vierringe = 0 Or \start = 1
wwert$ = \wertr1$ + \wertr2$ + \multi$
\start = 0
\wwert = ValD(wwert$)
\wwert = \wwert / 100
\kohm = \wwert / 1000
\mohm = \kohm / 1000
ohm$ = StrF(\wwert,1)
kohm$ = StrF(\kohm, 3)
mohm$ = StrF(\mohm, 6)
EndIf
If \vierringe = 1
wwert$=\wertr1$+\wertr2$+\wertr3$+\wertr4$+\multi$
\start = 0
\wwert = ValD(wwert$)
\wwert = \wwert / 100
\kohm = \wwert / 1000
\mohm = \kohm / 1000
ohm$ = StrF(\wwert,1)
kohm$ = StrF(\kohm, 3)
mohm$ = StrF(\mohm, 6)
EndIf
Box(0, 0, \infimgbr, \infimghh, \backcolor)
FrontColor(#Blue)
DrawingMode(#PB_2DDrawing_Transparent)
DrawText( 30,5,"Ohm")
DrawText(130,5,"Kiloohm")
DrawText(220,5,"Megaohm")
DrawText(320,5,"Toleranz")
DrawingFont(FontID(0))
FrontColor(#Black)
DrawText( 30,20, ohm$)
DrawText(130,20, kohm$)
DrawText(220,20, mohm$)
DrawText(320,20, \tol$)
StopDrawing()
SetGadgetState(#imggadgettxtinfo,ImageID(1))
EndWith
EndProcedure
Procedure StartWertesetzen()
; startausgabe für 100 Ohm ausgeben
With wd.Widerstandswerte
\schwarz = RGB(10,10,10)
\braun = RGB(128,60,0)
\rot = RGB(255,0,0)
\orange = RGB(255,130,0)
\gelb = RGB(255,255,0)
\gruen = RGB(0,128,0)
\blau = RGB(0,0,255)
\violet = RGB(160,18,95)
\grau = RGB(128,128,128)
\weiss = RGB(255,255,255)
\silber = RGB(192,192,192)
\gold = RGB(128,128,0)
\hg = RGB(50,220,200) ; Widerstands Grundfarbe
\farblos = 0 ; ????
\r1 = \braun
\r2 = \schwarz
\r3 = \braun
\r4 = \hg
\r5 = \gold
\start = 1
\wertr1$="1"
\wertr2$="0"
\multi$="000"
\kohm=0
\mohm=0
\tol$="+/- 5%"
\windowbr = 400
\windowhh = 400
\butimgbr = 50
\butimghh = 15
\wdsimgbr = 400
\wdsimghh = 80
\infimgbr = 400
\infimghh = 50
\backcolor= $F5D68E
\vierringe = 1
\fuenfringe = 0
EndWith
EndProcedure
Procedure CreateBitmap(nr,farbe)
CreateImage(nr, wd\butimgbr, wd\butimghh)
StartDrawing(ImageOutput(nr))
Box(0,0,wd\butimgbr, wd\butimghh, farbe)
StopDrawing()
EndProcedure
Procedure CreateWiderstand()
With wd.Widerstandswerte
CreateImage(0, \wdsimgbr, \wdsimghh)
StartDrawing(ImageOutput(0))
Box(0,0,\wdsimgbr, \wdsimghh, \backcolor)
;Widerstand malen
Box( 29,34,347, 4, #White)
Box( 29,36,347, 2, #Gray)
Box( 99, 9,217,62, $E6E6EE)
Box( 99,12,214,59, #Gray)
Box(102,12,212,57, RGB( 50,220,200))
;Ringe malen
x=120
Box(x+ 0,12,15,57, \r1) ; 1. Ring
Box(x+ 30,12,15,57, \r2) ; 2. Ring
Box(x+ 60,12,15,57, \r3) ; 3. Ring
Box(x+ 90,12,15,57, \r4) ; 4. Ring
Box(x+160,12,15,57, \r5) ; 5. Ring
StopDrawing()
SetGadgetState(#imggadgetwiderstand,ImageID(0))
EndWith
EndProcedure