Einsteigerfragen zur PROFAN Programmierung
  Suchen
 Zurück zur Übersicht
 AutorThema: noch mal Auswahlbox
Tilo Mayer
Datum:02.06.02 17:57 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (Tilo.Mayer@gmx.de) 


Danke nochmal

jetzt habe ich es verstanden.

Mfg

Tilo


Alexander Schoenfeld
Datum:03.06.02 14:51 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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
Shortwin - denn Glück ist kein Zufall!