Einsteigerfragen zur PROFAN Programmierung

| Suchen
| Zurück zur Übersicht

Autor | Thema: noch mal Auswahlbox
Tilo Mayer
| 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
Rolf Koch
| 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
Tilo Mayer
| 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
Rolf Koch
| 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
Tilo Mayer
| Datum:03.06.02 15:08 (Tilo.Mayer@gmx.de) |
Danke nochmal jetzt habe ich es verstanden. Mfg Tilo
Alexander Schoenfeld
| 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
Uwe ''Pascal'' Niemeier
| 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
Alexander Schoenfeld
| Datum: 04.06.02 07:58 (alexander.schoenfeld@chronologic.de) |
Man lernt nie aus ;)) Mit freundlichem Gruss / kind regards, Alexander Schoenfeld Email: alexander.schoenfeld@chronologic.de

| Zurück zur Übersicht

| Ein kostenloses WebMart Forum WebMart Homepage Tools kostenlos |