01. december 2002 - 09:50Der er
10 kommentarer og 1 løsning
farve i textbox afhængig af tal
jeg skal bruge noget til at vise en væskestand, alt afhængig af literantal, jeg forstiller mig at jeg skal bruge en textbox, hvis jeg har en tank på 50.000 liter, og jeg indtaster at der er 25.000 liter, så skal halvdelen farves rød. Er der en som har et bud, eller en mere smart måde at gribe sagen an
Smid en picturebox (Picture1), en textbox (text1) og en knap (command1) på din form. Sørg for, at picture1 er 5000 høj!
Kopier følgende kode:
Private Sub Command1_Click() 'Tjekker, at det indtastede tal er "lovligt" If Val(Text1.Text) > 50000 Then MsgBox "Indtast et tal mellem 0 og 50000", vbOKOnly, "Fejl" End If 'Kalder optegnings-procedure OptegnPicture1 End Sub
Private Sub Form_Load() Text1.Text = "25000" Command1.Caption = "Optegn" End Sub
Sub OptegnPicture1() 'Optegner Picture1 afhængigt af hvad der står i text1
Picture1.Cls Picture1.FillStyle = vbFSSolid 'Skifter farve afhængig af vædskestand 'Jo mere vædske, jo mørkere Select Case Val(Text1.Text) Case Is < 1 Exit Sub Case Is < 25000 Picture1.FillColor = vbBlue Case Is < 45000 Picture1.FillColor = vbRed Case Else Picture1.FillColor = &H80& 'Som du ser, kan du også vælge hexidecimale farvekoder End Select
'Tegner vædsken Picture1.Line (Picture1.Width, Picture1.Height - Round(Val(Text1.Text) / 10)) _ -(0, Picture1.Height), , B End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer) 'Procedure der kun tillader tal (samt backspace m.v.) som input Select Case KeyAscii Case vbKeyReturn 'Enter-tast SendKeys "{tab}" 'Enter virker på samme måde som tab Case vbKeyBack 'Backspace Case 48 To 57 'Tallene 0-9 Case Else 'Alle andre tastetryk KeyAscii = 0 End Select End Sub
PS: For at gejle helt, kan du lave Picture1.FillColor direkte afhængig af text1.text, ved at lade text1.text indgå som en del af farvekoden - så kan den helt "trinløst" gå fra lyserød ved min vandstand til mørkerød ved max vandstand ;o)
Dat var da en god ide, jeg fik i ovenstående kommentar: Skift Sub OptegnPicture1() ud med nedenstående - det er meget enklere uden den select-case, og nu varierer farven fra 100% rød ved lavt land til 100% sort ved højt vand, varierende i 256 trin :oD
Næ - om koden kører videre eller ej giver ingen fejl! Men en "Exit Sub" giver en mere pæn og korrekt kode, så den skulle mr. truck da ta og smide ind :o)) Og hvoddn stiller man egentligt en progress-bar på højkant?
If Val(Text1.Text) > 50000 Then MsgBox "Indtast et tal mellem 0 og 50000", vbOKOnly, "Fejl" Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) Picture1.Cls Exit Sub End If
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.