Seite 4 von 5

Verfasst: 16.10.2005 19:18
von ts-soft
Ja, dann bekommt es einen dickeren Rahmen :wink:
Ich sehe gerade, er hat ja nur einen Button, dann sollte er den Shortcut benutzen

Verfasst: 16.10.2005 19:24
von Kaeru Gaman
wieso? o_O

Verfasst: 16.10.2005 19:29
von ts-soft
Weil der Button unter Windows nur durch die Leertaste ausgelöst wird, wenn er den Fokus hat. Nur Dialoge (Requester) verhalten sich anders.

Und wieso ist da kein Löffel?

Verfasst: 16.10.2005 19:35
von Kaeru Gaman
ich verstehs immer noch nicht...

meinst du, wenn ich den button aus default setze, dann bekommt er nur nen dickeren rahmen, wird aber nicht durch return ausgelöst?

...das kenn ich aber anders...


-----

versuch nicht, den löffel zu verbiegen, das ist nämlich nicht möglich.
stell dir einfach die wahrheit vor, und du wirst sehen,
daß nicht der löffel sich verbiegt, sondern daß du selbst dich verbiegst.

Verfasst: 16.10.2005 19:42
von ts-soft
Das kennst Du nur deshalb anders, weil Du in Fenstern mit vielen Button ja nie Return benutzen würdest. Machst Du autom. nur bei Dialogfenstern, mit nur 1-3 Button. Dialogfenster reagieren auch meist auf Escape, normale Fenster nicht.

Verfasst: 17.10.2005 15:37
von Zerosurf
Eigentlich hab ich ja 2 Buttons;
Wenn ich im Conzcalc-Programm bin sollte der Button ID 15 mit Return "betätigt" werden können und das selbe gilt für das Doseconv-Programm - Button ID 41!

Wie mach ich denn das jetzt am besten?

mfg. Zerosurf

Verfasst: 17.10.2005 15:46
von ts-soft
Mit AddKeyBoardShortcut, Return abfangen, erzeugt dann ein Menüereignis
Wenn dieses ereignis Eintritt, mit If GetFocus_() = GadgetID(15)) feststellen welcher Button den Focus hat und entsprechend reagieren.
Wenns nicht klappt, dann frag nochmal!

Verfasst: 17.10.2005 16:48
von Zerosurf
Sorry ts-soft, aber irgendwie versteh ich´s nicht!

Hast Du ein Codebeispiel woran ich mich orientieren kann?

Vielen Dank für Deine Hilfe!

mfg. Zerosurf

Verfasst: 17.10.2005 17:15
von ts-soft

Code: Alles auswählen

If OpenWindow(0, #CW_USEDEFAULT, #CW_USEDEFAULT, 90, 80, #PB_Window_SystemMenu, "Test")
  AddKeyboardShortcut(0, #PB_Shortcut_Return, 0)
  If CreateGadgetList(WindowID(0))
    ButtonGadget(1, 10, 10 , 60, 30, "Button1", #PB_Button_Default)
    ButtonGadget(2, 10, 40 , 60, 30, "Button2")
    ActivateGadget(1)
  EndIf
  Repeat
    EventID  = WaitWindowEvent()
    MenuID   = EventMenuID()
    GadgetID = EventGadgetID()
    Select EventID
      Case #PB_Event_Menu
        Select MenuID 
          Case 0 ;Return
            Select GetFocus_()
              Case GadgetID(1)
                Debug "Button1"
              Case GadgetID(2)
                Debug "Button2"
            EndSelect
        EndSelect
      Case #PB_Event_Gadget
        Select GadgetID
          Case 1
            Debug "Button1"
          Case 2
            Debug "Button2"
        EndSelect
    EndSelect
  Until EventID = #PB_Event_CloseWindow
EndIf
Ich hoffe das hilft :wink: Kannst ja mal mit TAB zwischen den Button hin und herspringen

Verfasst: 17.10.2005 21:21
von Zerosurf
Das Problem bei der Sache ist, daß ich 2 Buttons habe, wovon ich einen immer verstecke.

Hier ist noch einmal der Code:

Code: Alles auswählen

Procedure.s MakeTimeString(tdec.f)
  Protected time.l, dd.w, hh.w, ii.w, ss.w, hs.w, out.s
  time = Round(tdec * 360000, 1)
  hs = time % 100 : time / 100
  ss = time % 60  : time / 60
  ii = time % 60  : time / 60
  hh = time % 24  : time / 24
  dd = Int(time)
  out = RSet(Str(dd), 2, "0") + " Tage " 
  out + RSet(Str(hh), 2, "0") + " h "
  out + RSet(Str(ii), 2, "0") + " min "
  out + RSet(Str(ss), 2, "0") + " sec " 
  ProcedureReturn out
EndProcedure

 If OpenWindow(0, 216, 0, 400, 300,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Medcal")
    If CreateMenu(0, WindowID())
      MenuTitle("Programme")
      MenuItem(1, "Conzcalc")
      MenuItem(2, "Doseconv")
      MenuBar()
      MenuItem(3, "Ende")
      MenuTitle("Hilfe")
      MenuItem(4, "Conzcalc")
      MenuItem(5, "Doseconv")
      MenuBar()
      MenuItem(6, "Visit Website")
      MenuItem(7, "About")
    EndIf
    If CreateGadgetList(WindowID())
        Frame3DGadget(2, 10, 10, 380, 30, "", #PB_Frame3D_Single) 
        Frame3DGadget(0, -5, -5, 410, 310, "")
        Frame3DGadget(1, 10, 50, 380, 220, "")
        ProgressBarGadget(3, 20, 157, 360, 10, 1, 5000, #PB_ProgressBar_Smooth)
        TextGadget(12, 170, 18, 60, 20, "Conzcalc", #PB_Text_Center)
        TextGadget(20, 60, 70, 140, 20, "Gewünschte Menge:")
        TextGadget(4, 60, 100, 140, 20, "Ausgangskonzentration:")
        TextGadget(5, 60, 130, 140, 20, "Gewünschte Konzentration:")
        StringGadget(6, 240, 67, 70, 20, "", #PB_Text_Right)
        StringGadget(7, 240, 97, 70, 20, "", #PB_Text_Right)
        StringGadget(8, 240, 127, 70, 20, "", #PB_Text_Right)
        TextGadget(9, 315, 100, 30, 20, "in %")
        TextGadget(10, 315, 130, 30, 20, "in %")
        TextGadget(11, 315, 70, 30, 20, "in ml")
        TextGadget(13, 60, 180, 170, 20, "Menge der Ausgangskonzentration:")
        TextGadget(14, 60, 210, 160, 20, "Menge des Lösungsmittels:")
        ButtonGadget(15, 160, 240, 80, 20, "Berechnen", #PB_Button_Default)
        TextGadget(16, 315, 180, 20, 20, "ml")
        TextGadget(17, 315, 210, 20, 20, "ml")
        TextGadget(18, 240, 177, 70, 20, "", #PB_Text_Right | #PB_Text_Border)
        TextGadget(19, 240, 207, 70, 20, "", #PB_Text_Right | #PB_Text_Border)
        TextGadget(21, 170, 18, 60, 20, "Doseconv", #PB_Text_Center)
        TextGadget(22, 60, 70, 140, 20, "Körpergewicht:")
        TextGadget(23, 60, 100, 140, 20, "Gewünschte Dosierung:")
        TextGadget(24, 60, 130, 140, 20, "Medikamentenkonzentration:")
        StringGadget(25, 240, 67, 70, 20, "", #PB_Text_Right)
        StringGadget(26, 240, 97, 70, 20, "", #PB_Text_Right)
        StringGadget(27, 240, 127, 40, 20, "", #PB_Text_Right)
        StringGadget(28, 310, 127, 40, 20, "", #PB_Text_Right)
        TextGadget(29, 315, 70, 30, 20, "kg")
        TextGadget(30, 315, 100, 65, 20, "µg/kgKG/min")
        TextGadget(31, 285, 130, 25, 20, "mg/")
        TextGadget(32, 355, 130, 20, 20, "ml")
        TextGadget(33, 60, 180, 170, 20, "Flußrate:")
        TextGadget(34, 60, 210, 70, 20, "Infusionsdauer")
        TextGadget(45, 132, 210, 93, 20, "")
        TextGadget(46, 235, 210, 15, 20, "")
        TextGadget(35, 235, 180, 25, 20, "ml/h")
        TextGadget(36, 335, 180, 25, 20, "mg/h")
        TextGadget(37, 355, 210, 25, 20, "")
        TextGadget(38, 170, 177, 60, 20, "", #PB_Text_Right | #PB_Text_Border)
        TextGadget(39, 270, 177, 60, 20, "", #PB_Text_Right | #PB_Text_Border)
        TextGadget(40, 235, 210, 135, 20, "")
        ButtonGadget(41, 160, 240, 80, 20, "Berechnen", #PB_Button_Default)
        TextGadget(42, 130, 18, 140, 20, "Bitte Programm auswählen:", #PB_Text_Center)
        ButtonGadget(43, 70, 140, 100, 30, "Conzcalc")
        ButtonGadget(44, 230, 140, 100, 30, "Doseconv")
      EndIf
      
      For a=3 To 41
        HideGadget(a,1)
      Next
      HideGadget(45,1)
      HideGadget(46,1) 
       
      Repeat 
        EventID = WaitWindowEvent()
        If EventID = #PB_Event_CloseWindow 
          Quit = 1 
        ElseIf EventID = #PB_EventMenu
          If EventMenuID()=6
            RunProgram("http://www.marcotorskyj.com")
          EndIf
          If EventMenuID()=4
            MessageRequester("Über Conzcalc","Conzcalc - Conzentration-Calculator" + Chr(10) + Chr(10) + "Dieser Rechner hilft beim Umrechnen von Lösungen mit höheren Konzentrationen" + Chr(10) + "zu Lösungen mit niedrigeren Konzentrationen." + Chr(10) + Chr(10) + "Beispiel:" + Chr(10) + "Ein 2 prozentiges Medikament soll in eine 1,5 prozentige Lösung umgewandelt werden." + Chr(10) + "Die gewünschte Menge der 1,5 prozentigen Lösung soll 50ml betragen." + Chr(10) + Chr(10) + "Wieviel ml benötigt man von der 2 prozentigen Lösung und wieviel Lösungsmittel" + Chr(10) + "wird benötigt um eine 1,5 prozentige - 50ml Lösung herzustellen?", #MB_ICONASTERISK) 
          EndIf
          If EventMenuID()=5
            MessageRequester("Über Doseconv","Doseconv - Dose-Converter" + Chr(10) + Chr(10) + "Dieser Rechner hilft beim Umrechnen von µg/kgKG/min in ml/h bzw. in mg/h." +Chr(10) + "Es wird auch die Dauer der Infusion ausgerechnet.", #MB_ICONASTERISK)
          EndIf
          If EventMenuID()=7
            MessageRequester("Thanks...", "for using Medcal v1.00" + Chr(10) + Chr(10) + "Written by Marco TORSKYJ" + Chr(10) + Chr(10) + "Supported by Dr. Andreas MAYER" + Chr(10) + "and Dr. Karl-Heinz STADLBAUER" + Chr(10) + Chr(10) + "Copyright © 2005 Marco TORSKYJ" + Chr(10) + "All rights reserved.", #MB_ICONASTERISK)
          EndIf
          
          If EventMenuID()=3
            Quit = 1
          EndIf 
          If  EventMenuID()=1
            SetGadgetText(6,"")
            SetGadgetText(7,"")
            SetGadgetText(8,"")
            SetGadgetText(18,"")
            SetGadgetText(19,"")
            SetGadgetText(25,"")
            SetGadgetText(26,"")
            SetGadgetText(27,"")
            SetGadgetText(28,"")
            SetGadgetText(45,"")
            SetGadgetText(38,"")
            SetGadgetText(39,"")
            SetGadgetText(40,"")
            For a=3 To 20
              HideGadget(a,0)
            Next
            For a=21 To 46
              HideGadget(a,1)
            Next
            ActivateGadget(15) 
          EndIf
          If  EventMenuID()=2
            SetGadgetText(6,"")
            SetGadgetText(7,"")
            SetGadgetText(8,"")
            SetGadgetText(18,"")
            SetGadgetText(19,"")
            SetGadgetText(25,"")
            SetGadgetText(26,"")
            SetGadgetText(27,"")
            SetGadgetText(28,"")
            SetGadgetText(45,"")
            SetGadgetText(38,"")
            SetGadgetText(39,"")
            SetGadgetText(40,"") 
            HideGadget(3,0)
            For a=4 To 20
              HideGadget(a,1)
            Next
            For a=21 To 46
              HideGadget(a,0)
            Next
            For a=42 To 44
              HideGadget(a,1)
            Next
            ActivateGadget(41) 
          EndIf
          
        EndIf
        
        If EventID = #PB_Event_Gadget
          If EventGadgetID()=43
            SetGadgetText(6,"")
            SetGadgetText(7,"")
            SetGadgetText(8,"")
            SetGadgetText(18,"")
            SetGadgetText(19,"")
            SetGadgetText(25,"")
            SetGadgetText(26,"")
            SetGadgetText(27,"")
            SetGadgetText(28,"")
            SetGadgetText(45,"")
            SetGadgetText(38,"")
            SetGadgetText(39,"")
            SetGadgetText(40,"")
            For a=3 To 20
              HideGadget(a,0)
            Next
            For a=21 To 46
              HideGadget(a,1)
            Next
            ActivateGadget(15) 
          EndIf
          If EventGadgetID()=44
            SetGadgetText(6,"")
            SetGadgetText(7,"")
            SetGadgetText(8,"")
            SetGadgetText(18,"")
            SetGadgetText(19,"")
            SetGadgetText(25,"")
            SetGadgetText(26,"")
            SetGadgetText(27,"")
            SetGadgetText(28,"")
            SetGadgetText(45,"")
            SetGadgetText(38,"")
            SetGadgetText(39,"")
            SetGadgetText(40,"") 
            HideGadget(3,0)
            For a=4 To 20
              HideGadget(a,1)
            Next
            For a=21 To 46
              HideGadget(a,0)
            Next
            For a=42 To 44
              HideGadget(a,1)
            Next
            ActivateGadget(41) 
          EndIf
          
          If EventGadgetID()=15
            SetGadgetText(18,"")
            SetGadgetText(19,"")
            
            gm.f = ValF(ReplaceString(GetGadgetText(6), ",", ".", 2))
            ak.f = ValF(ReplaceString(GetGadgetText(7), ",", ".", 2))
            gk.f = ValF(ReplaceString(GetGadgetText(8), ",", ".", 2))
            
            If gm = 0
              MessageRequester("Achtung!","Keine Angabe der gewünschten Menge!", #MB_ICONEXCLAMATION)
            ElseIf ak = 0
              MessageRequester("Achtung!","Keine Angabe der Ausgangskonzentration!", #MB_ICONEXCLAMATION)
            ElseIf ak >= 100
              MessageRequester("Achtung!","Ausgangskonzentration muß kleiner als 100 sein!", #MB_ICONEXCLAMATION)
            ElseIf gk = 0
              MessageRequester("Achtung!","Keine Angabe der gewünschten Konzentration!", #MB_ICONEXCLAMATION)
            ElseIf gk > ak
              MessageRequester("Achtung!","Gewünschte Konzentration muß kleiner sein!", #MB_ICONEXCLAMATION)
            Else
              
              mdak.f = (gm * gk) / ak
              mdlm.f = gm - mdak
              
              result1$ = ReplaceString(StrF(mdak,2), ".", ",", 2) 
              result2$ = ReplaceString(StrF(mdlm,2), ".", ",", 2) 
              
              For a=1 To 5000
                SetGadgetState(3,a)
              Next 
              
              SetGadgetText(18,result1$)
              SetGadgetText(19,result2$)
            EndIf
          EndIf
          If EventGadgetID()=41
            
            SetGadgetText(38,"")
            SetGadgetText(39,"")
            SetGadgetText(40,"")
            
              kg.f = ValF(ReplaceString(GetGadgetText(25), ",", ".", 2))
              gd.f = ValF(ReplaceString(GetGadgetText(26), ",", ".", 2))
              mkmg.f = ValF(ReplaceString(GetGadgetText(27), ",", ".", 2))
              mkml.f = ValF(ReplaceString(GetGadgetText(28), ",", ".", 2))
              
              If kg = 0
                MessageRequester("Achtung!","Keine Angabe des Körpergewichtes!", #MB_ICONEXCLAMATION)
              ElseIf gd = 0
                MessageRequester("Achtung!","Keine Angabe der gewünschten Dosierung!", #MB_ICONEXCLAMATION)
              ElseIf mkmg = 0
                MessageRequester("Achtung!","Keine Angabe der Medikamentenkonzentration (mg)!", #MB_ICONEXCLAMATION)
              ElseIf mkml = 0
                MessageRequester("Achtung!","Keine Angabe der Medikamentenkonzentration (ml)!", #MB_ICONEXCLAMATION)
              Else
                
                frmlh.f = (kg * gd * 0.06) / (mkmg / mkml)
                frmgh.f = (mkmg / mkml) * frmlh
                rz.f = mkml / frmlh
                m.f = mkml
                
                result3$ = ReplaceString(StrF(frmlh,2), ".", ",", 2) 
                result4$ = ReplaceString(StrF(frmgh,2), ".", ",", 2) 
;                result5$ = ReplaceString(StrF(rz,2), ".", ",", 2) 
;                result5$ = FormatDate("%dd Tage %hh h %ii min %ss sec", Round(rz * 3600, 1))
                result6$ = ReplaceString(StrF(m,2), ".", ",", 2) 
                
                For a=1 To 5000
                  SetGadgetState(3,a)
                Next 
                
                SetGadgetText(38,result3$)
                SetGadgetText(39,result4$)
                SetGadgetText(40, MakeTimeString(rz))
                SetGadgetText(45,"mit " + result6$ + " ml:")
              EndIf
            EndIf
        EndIf
      Until Quit=1
    EndIf
    End
Wo fang ich da am besten an?

mfg. Zerosurf