Autor | Thema: noch mal Auswahlbox | | Datum:02.06.02 17:57 
(Tilo.Mayer@gmx.de) | |
Hallo,
(ich benutze vorerst noch Profan 4.5)
noch mal eine Frage. ich bin jetzt so weit das ich in einer Dialogbox mit 3 Eingabefelder 1 davon zur Augabe und ein Berechnen Button und eine Choicebox habe. Nun möchte ich das wenn jemand in der Choicebox einen bestimmten Text auswählt beim berechnen diesem Text aus der Choisebox eine Zahl zur weiteren Berechnung zugeordnet wird. Ich krieg das irgendwie nicht hin, ich kann zwar mit @gettext den text auslesen weis aber nicht wie ich ihn in eine Zahl umwandeln soll.(das ganze soll allles beim betätigen von dem Button "Berechnen" erfolgen
Für eure Hilfe wäre ich dankbar.
Mfg
Tilo
|
| | Datum:02.06.02 18:29 
(webmaster@rokosoft.de) | |
Ich hoffe, daß ich alles richtig verstanden habe - wenn ja, dann versuch es mal so:
'********************** HINWEISE ********************************
' CODE ERZEUGT MIT ROKO'S OBJECT CREATOR V 2.5
' DATUM 02.06.2002 um 18:21 Uhr
' VERWENDETE PROFANVERSION IST KLEINER ALS 7.0
'********************** DATEN ***********************************
SETTRUECOLOR 1
DECLARE ENDE%
DECLARE DLG&
DECLARE EDIT1%
DECLARE CHOICEBOX1%
DECLARE EDIT2%
DECLARE BUTTON1%
DECLARE ZAHL1%,ZAHL2%,ERGEBNIS%
WINDOW 0,0-0,0
LET DLG&=CREATEDIALOG(%HWND,"Beispiel Addieren",22,20,640,112)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
LET EDIT1% =@CREATEEDIT(DLG&,"",0026,0023,0110,0022)
LET CHOICEBOX1% =@CREATECHOICEBOX(DLG&,"",0172,0024,0120,0240)
LET EDIT2% =@CREATEEDIT(DLG&,"",0319,0024,0110,0022)
LET BUTTON1% =@CREATEBUTTON(DLG&,"Berrechnen",0456,0025,0104,0021)
@AddChoice(CHOICEBOX1%,"10")
@AddChoice(CHOICEBOX1%,"15")
@AddChoice(CHOICEBOX1%,"18")
@AddChoice(CHOICEBOX1%,"20")
@AddChoice(CHOICEBOX1%,"100")
@AddChoice(CHOICEBOX1%,"210")
WHILENOT ENDE%
WAITINPUT
If @EQU(%KEY,2)
LET ENDE%= 1
ELSEIF @GETFOCUS(BUTTON1%) 'Beispiel Berrechnen
zahl1%=@val(@gettext$(edit1%))
zahl2%= @val(@gettext$(choicebox1%))
let ergebnis%=add(zahl1%,zahl2%)
settext Edit2%,@str$(ergebnis%)
ENDIF
WEND
Viel Spaß und Glück
Rolf
|
| | Datum:02.06.02 19:42 
(Tilo.Mayer@gmx.de) | |
Danke für die schnelle Antwort.
Ich meinte das aber anders, in der Choicebox möchte ich keine Zahlen sondern text wie z.B. Material usw stehen haben und diesen dann intern zu einer Zahl umwandeln. Also zur berechnung sollte dann aus Material z.B. 7 werden
|
| | Datum:02.06.02 20:18 
(webmaster@rokosoft.de) | |
Achso ;)
'********************** HINWEISE ********************************
' CODE ERZEUGT MIT ROKO'S OBJECT CREATOR V 2.5
' DATUM 02.06.2002 um 18:21 Uhr
' VERWENDETE PROFANVERSION IST KLEINER ALS 7.0
'********************** DATEN ***********************************
SETTRUECOLOR 1
DECLARE ENDE%
DECLARE DLG&
DECLARE EDIT1%
DECLARE CHOICEBOX1%
DECLARE EDIT2%
DECLARE BUTTON1%
DECLARE ZAHL1%,ZAHL2%,ERGEBNIS%,choice$
WINDOW 0,0-0,0
LET DLG&=CREATEDIALOG(%HWND,"Beispiel Artikel Berechnen",22,20,640,112)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
LET EDIT1% =@CREATEEDIT(DLG&,"",0026,0023,0110,0022)
LET CHOICEBOX1% =@CREATECHOICEBOX(DLG&,"",0172,0024,0120,0240)
LET EDIT2% =@CREATEEDIT(DLG&,"",0319,0024,0110,0022)
LET BUTTON1% =@CREATEBUTTON(DLG&,"Berrechnen",0456,0025,0104,0021)
@AddChoice(CHOICEBOX1%,"Hose")
@AddChoice(CHOICEBOX1%,"Hemd")
@AddChoice(CHOICEBOX1%,"Socken")
@AddChoice(CHOICEBOX1%,"Unterhose")
@AddChoice(CHOICEBOX1%,"BH :)")
@AddChoice(CHOICEBOX1%,"Schlips")
WHILENOT ENDE%
WAITINPUT
If @EQU(%KEY,2)
LET ENDE%= 1
ELSEIF @GETFOCUS(BUTTON1%) 'Beispiel Berrechnen
let choice$=@gettext$(choicebox1%)
case @equ$(choice$,""):let zahl2%=0
case @equ$(choice$,"Hose"):let zahl2%=100
case @equ$(choice$,"Hemd"):let zahl2%=70
case @equ$(choice$,"Socken"):let zahl2%=15
case @equ$(choice$,"Unterhose"):let zahl2%=10
case @equ$(choice$,"BH :)"):let zahl2%=80
case @equ$(choice$,"Schlips"):let zahl2%=30
zahl1%=@val(@gettext$(edit1%))
let ergebnis%=mul(zahl1%,zahl2%)
settext Edit2%,@str$(ergebnis%)
ENDIF
WEND
jetzt klar? :))) Rolf
|
| | Datum:03.06.02 15:08 
(Tilo.Mayer@gmx.de) | |
Danke nochmal
jetzt habe ich es verstanden.
Mfg
Tilo
|
| | Datum:03.06.02 14:51 
(alexander.schoenfeld@chronologic.de) | |
Hallo Tilo,
am besten wäre das ganze mit einem Array zu lösen, hierzu ein Beispiel:
Decimals 0
Dim! 3
List! 0 = 30
List! 1 = 20
List! 2 = 10
AddString "Eintrag 1"
AddString "Eintrag 2"
AddString "Eintrag 3"
Declare String$
Let String$ = @ListBox$("Listbox", 1)
MessageBox("Der Wert von " + Chr$(34) + String$ + Chr$(34) + " ist " + Str$(List!(%GetCurSel)), \
"Ergebnis", 64)
End Das ganze nach Namen zu vergeben wie in Rolf's Beispiel ist zwar eine Möglichkeit, jedoch ein bisschen zu aufwendig, wenn man irgendeinen Namen ändern, geschweige denn hinzufügen möchte... ( Stell dir vor, du hast 100 Einträge... )
Man könnte das ganze auch besser mit Mehrdimensionalen Array's, oder auch mit SubStr ( ala "Eintrag 1~30" ) lösen, jedoch kenne ich nicht den Funktionsumfang von Profan 4.5 :(
Mit freundlichem Gruss / kind regards,
Alexander Schoenfeld
Email: alexander.schoenfeld@chronologic.de
|
| | Datum:03.06.02 20:37 
(Pascalxd@owl-online.de) | |
Hallo Leute!
Es gibt eine sehr praktische Möglichkeit, Einträgen in Choice- oder Listboxen unsichtbar
numerische Werte "anzuhängen", nämlich per Message; dabei ist der Wert mit dem Eintrag
verknüpft und ist von der Position in der Box unabhängig:
window 200,200-300,300
declare Choice%,Index%
Choice%=createchoicebox(%hwnd,"",50,50,100,200)
Index%=addchoice(Choice%,"Test1")
sendmessage(Choice%,337,Index%,123)'CB_SETITEMDATA
Index%=addchoice(Choice%,"Test2")
sendmessage(Choice%,337,Index%,456)'CB_SETITEMDATA
Index%=addchoice(Choice%,"Test3")
sendmessage(Choice%,337,Index%,789)'CB_SETITEMDATA
while 1
waitinput
locate 0,0
Index%=sendmessage(Choice%,327,0,0)'CB_GETCURSEL
print sendmessage(Choice%,336,Index%,0)'CB_GETITEMDATA
endwhile
P.S. Bei Listboxen heissen die Messages LB_SETITEMDATA (=410) und LB_GETITEMDATA (=409)
P.P.S. In der Profan-Hilfe steht immer noch, dass die Rückgabe von AddChoice bzw. AddString
nur eine Erfolgsmeldung ist. Tatsächlich ist es aber die Position, an der der Eintrag
eingefügt wurde (nützlich, wenn der Eintrag automatisch einsortiert wird)
HTH
Pascal
|
| |
|