Seite 1 von 1

Button deaktivieren und aktivieren

Verfasst: 21.04.2005 15:49
von Klaus
Hallo,

ich will den Butten 17 nur wieder aktivieren, wenn etwas verändert wurde.
Mit dem Stringgadget funktionert es mit dem Editorgadget leider nicht.

Über #PB_EventType_LeftClick auf dem Editorgadget konnte ich den Button nicht aktivieren, deshalb ist das auskommentiert.
Jetzt bekomme ich aber einen Event über das SetGadgetText und aktiviere immer den Button.

Hat jemand eine Idee? Wenn möglich sollte das ganze auch unter Linux funktionieren.

Gruß

Klaus



Code: Alles auswählen

If OpenWindow(1, 300, 10, 250, 340,  #PB_Window_WindowCentered, "Datensatz")
  If CreateGadgetList(WindowID())
    StringGadget(14, 90, 100, 150, 20, "")
    TextGadget(21, 10, 100, 70, 20, "Kundennr.", #PB_Text_Border)
    EditorGadget(15, 10, 130, 230, 170)
    ButtonGadget(17, 170, 310, 70, 20, "Abbrechen")
    ButtonGadget(16, 10, 310, 70, 20, "Speichern")
  EndIf
EndIf
SetGadgetText(15, "Testeintrag")
DisableGadget(16, 1)

;Dadurch wird ein Event ausgelösst und der Schalter wieder aktiviert

Repeat
  Event = WaitWindowEvent()
  Select Event 
    Case #PB_Event_Gadget 
      
      If EventGadgetID() = 14
        If EventType() = #PB_EventType_Change
          DisableGadget(16, 0)
        EndIf
        
      ElseIf EventGadgetID() = 15
        ;- "speichern enablen"
        ;If EventType() = #PB_EventType_LeftClick
          DisableGadget(16, 0)
        ;EndIf 
      
      ElseIf EventGadgetID() = 16
        
      ElseIf EventGadgetID() = 17 
        CloseWindow(1)
      EndIf
      
  EndSelect
  
Until Event = #PB_Event_CloseWindow 

Verfasst: 21.04.2005 15:55
von 125
fürs Editor Gadget hätte ich jetzt nur eine WinApi Lösung.
Habs jetzt durch ein MultiLine StringGadget ersetzt:

Code: Alles auswählen

If OpenWindow(1, 300, 10, 250, 340,  #PB_Window_WindowCentered, "Datensatz") 
  If CreateGadgetList(WindowID()) 
    StringGadget(14, 90, 100, 150, 20, "") 
    TextGadget(21, 10, 100, 70, 20, "Kundennr.", #PB_Text_Border) 
    StringGadget(15, 10, 130, 230, 170,"",#PB_String_MultiLine) 
    ButtonGadget(17, 170, 310, 70, 20, "Abbrechen") 
    ButtonGadget(16, 10, 310, 70, 20, "Speichern") 
  EndIf 
EndIf 
SetGadgetText(15, "Testeintrag") 
DisableGadget(16, 1) 

;Dadurch wird ein Event ausgelösst und der Schalter wieder aktiviert 

Repeat 
  Event = WaitWindowEvent() 
  Select Event 
    Case #PB_Event_Gadget 
    
    Select EventGadgetID()
     
     Case 14
        If EventType() = #PB_EventType_Change 
          DisableGadget(16, 0) 
        EndIf 
        
      Case 15 

        If EventType() = #PB_EventType_Change 
          DisableGadget(16, 0) 
        EndIf 
      
     Case 16
        
     Case 17
        CloseWindow(1) 
    EndSelect        
  EndSelect 
  
Until Event = #PB_Event_CloseWindow

Verfasst: 21.04.2005 22:34
von walker
Hi,

die Frage ist, warum überhaupt String oder EditorGadget...??

Wenn Du das nur zum "Aufbewahren" Deiner Informationen brauchst, dann ist ein Listicon oder ListviewGadget auf jeden Fall besser geeignet:

Code: Alles auswählen

If OpenWindow(1, 300, 10, 250, 340,  #PB_Window_WindowCentered, "Datensatz")
    If CreateGadgetList(WindowID())
        StringGadget(14, 90, 100, 150, 20, "")
        TextGadget(21, 10, 100, 70, 20, "Kundennr.", #PB_Text_Border)
        ListIconGadget(15, 10, 130, 230, 170,"Kundennummer",200,#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect)
        ButtonGadget(17, 170, 310, 70, 20, "Abbrechen")
        ButtonGadget(16, 10, 310, 70, 20, "Speichern")
    EndIf
EndIf
DisableGadget(16, 1)
ActivateGadget(14)
;Dadurch wird ein Event ausgelösst und der Schalter wieder aktiviert

Repeat
    Event = WaitWindowEvent()
    Select Event
        Case #PB_Event_Gadget
            
            Select EventGadgetID()
                
                Case 14
                    If EventType() = #PB_EventType_Change
                        DisableGadget(16, #False)
                    EndIf
                    
                Case 15
                   
                Case 16
                    ; wenn Du nun auf Speichern drückst, wird der eingegebene Text dem Listicongadget
                    ; hinzugefügt und dann der Button wieder disabled
                    AddGadgetItem(15,-1,GetGadgetText(14))
                    SetGadgetText(14,"")
                    ActivateGadget(14)
                    DisableGadget(16, #True)
                Case 17
                    CloseWindow(1)
            EndSelect       
    EndSelect
    
Until Event = #PB_Event_CloseWindow
Verwende am besten #True und #False anstatt 0 und 1 (der Code wird lesbarer) und versuche auch die Gadgetnummern mit Konstanten zu versehen.....
(und das geht auch unter Linux)

cu
Ulf