Seite 4 von 6

Verfasst: 27.02.2005 13:11
von sharkpeter
@TS-Soft, (hi Thomas), warum denn aber nicht hierbei:
aus der PB-Hlfe:

Die folgenden EventType() werden vom ButtonGadget unterstützt, wenn AdvancedGadgetEvents() vor dem Erstellen des Gadgets aktiviert wird.
#PB_EventType_LeftClick : Klick mit linker Maustaste
#PB_EventType_RightClick : Klick mit rechter Maustaste
#PB_EventType_LeftDoubleClick : Doppelklick mit linker Maustaste
#PB_EventType_RightDoubleClick : Doppelklick mit rechter Maustaste
#PB_EventType_Focus : Schalter erhielt den Fokus für die Eingabe
#PB_EventType_LostFocus : Schalter verlor den Fokus für die Eingabe
mit einfügen, wäre doch sicher sinnvoll und wie schon gesagt einfach schön,
weil auch für Nicht-Profi-Progger besser beherschbar. Gleiches gilt für
den von Kiffi angesprochenen Cancel mit ESC, hätte glatt von mir sein
können. Außerdem ist es ja auch nur ein Wunsch :)

Gruß Jens

Verfasst: 27.02.2005 15:15
von Kaeru Gaman
also, ich erinnere mich 'dunkel' an meine VB zeiten, und wenn ich mich recht entsinne,

betätigt ENTER den Button mit dem Flag IS_DEFAULT
und ESC den Button mit dem Flag IS_CANCEL

ausserdem wird der default button durch den dickeren Rand hervorgehoben.

egal wie das Fenster ansonsten aussieht.

natürlich wird in kaum einer Anwendung ein fenster mit 100 Buttons
einen Default und einen Cancel button haben, aber es geht...

Verfasst: 27.02.2005 15:31
von computerkranker
Kleinen Fehler habe ich gefunden(glaube ich :mrgreen: )

Code: Alles auswählen

#AW_ACTIVATE=$20000
#AW_CENTER=$10
CreateImage(0,20,20)
OpenWindow(0,0,0,500,100,#PB_Window_ScreenCentered|#WS_VISIBLE,"test")
CreateGadgetList(WindowID(0))
For t=0 To 20
  ImageGadget(t,0+(t*21),0,0,0,UseImage(0))
Next
AnimateWindow_(WindowID(0),2000,#AW_ACTIVATE|#AW_CENTER)
;RedrawWindow_(WindowID(0),0,0,#RDW_INVALIDATE); damit ist es natürlich wieder da, aber leider erst nach der Animation
Repeat
Until WindowEvent()=#PB_Event_CloseWindow
vorher ging der Aufbau ohne probs.

Verfasst: 27.02.2005 15:40
von AndyX
bluejoke hat geschrieben:Der SmartUpdater macht keine Beta-Updates, der ist nur für die Gamma-Teile da :D
:lol:

:mrgreen:

Ich weiß. Hab ich ja auch aber nicht per SmartUpdate versucht.

Mfg,
AndyX

Verfasst: 27.02.2005 17:29
von nco2k
@Kaeru Gaman
natürlich wird in kaum einer Anwendung ein fenster mit 100 Buttons
einen Default und einen Cancel button haben, aber es geht...
doch kann schon vorkommen... wenn ein button den focus erhält, sollte dieser dann als default gesetzt werden. wenn man dann enter drückt, sollte der momentane als default gesetzte button ausgelöst werden. wenn das fenster inaktiv wird, wird der default button wieder "normal" und wenn das fenster wieder aktiv wird, wird der letzte als gesetzte default button, wieder als default markiert, es sei den man klickt einen anderen button an, dann wird logischerweise der neue button als default gesetzt. so einfach ist das. :wink:

beim pb-editor und co, hat man einfach nur einen default button hingeklatscht, welcher nicht auf den dafür vorgesehenen verhaltensregeln aufbaut. schlimmer wirds, wenn eine anwendung gleich mehrere default buttons hat. :roll: ist einfach nicht "korrekt" aber jedem das seine.

c ya,
nco2k

Verfasst: 27.02.2005 17:38
von AndyX
Ähhhm Kann mir jetzt jemand sagen wieso das nicht geht?

Mfg,
AndyX

Verfasst: 27.02.2005 17:49
von nco2k
@AndyX
nö.

du solltest schon die sache näher erläutern. es kann an tausend verschiedenen sachen liegen. einfach so in die runde zu schreien, es geht nicht, warum geht es nicht? bringt dich auch nicht weiter. zur not deinstallierst du einfach pb und installierst es neu, darfst nur nicht vergessen das pb3.93b3 keine vollversion ist, sondern nur ein update und du davor die pb3.92 vollversion installieren musst.

c ya,
nco2k

Verfasst: 27.02.2005 21:10
von Falko
Hallo Andy,
mach nochmal Smartupdate zu 3.92 und prüfe ob alles läuft. Dann gehst du
hin und kopierst den kompletten PB-Ordner z.B. in einen Ordner Namens
PurebasicBeta. Jetzt hast du 2 PB's die du getrennt starten kannst. Wenn du
die BetaVersion 3.93 Beta 3 direkt von Purebasic.com runtergeladen hast,
und auf deinem Rechner entpackt hast, kannst du das Installprogramm
ausführen. Wichtig, ändere den Pfad darin jetzt auf dein
PurebasicBeta-Verzeichnis. Sollte da was nicht starten, entferne erstmal alle
userlibrarys die du dir sicherst, und probiere es nocheinmal. Jetzt kannst du
nach und nach die einzelnen libs nachundnach reinkopieren und
zwischendurch ausprobieren. Damit weist du dann, fals eine Lib mit dem
neuen PB nicht richtig arbeitet.

MfG Falko

Verfasst: 27.02.2005 21:52
von sharkpeter
nco2k hat geschrieben:@Kaeru Gaman
natürlich wird in kaum einer Anwendung ein...
- doch kann schon vorkommen...
- wenn ein button den focus erhält, sollte ...
- beim pb-editor und co, hat man einfach nur einen ...

c ya,
nco2k
Da es ja nun so aussieht, das da mehrere Interesse dran haben, wie wäre es
denn, wenn sich mal freak oder Andre dazu äußern könnten, einfach nur als
Information warum es so nicht ist oder nicht geht oder ob es demnächst mit
eingeplant ist sowas zu machen.

Und nun bitte nicht gleich wieder auf mich draufhauen, habe es freundlich und
formvollendet formuliert.

Gruß Jens

Verfasst: 27.02.2005 22:10
von nco2k
@sharkpeter
ich vermute mal, weil nicht jeder das so haben will. die sache an sich, ist aber kein problem. das lässt sich mit einem callback ganz simpel lösen. :wink:

hier ganz auf die schnelle, ein beispiel wie man es in etwa hinkriegen könnte. der code ist sicherlich noch verbesserungswürdig, aber es zeigt deutlich das prinzip auf was man achten sollte.

Code: Alles auswählen

;/ Default-Button Example by nco2k

#Button_A = 0
#Button_B = 1
#Button_Exit = 2

#Shortcut_Escape = 0
#Shortcut_Return = 1

Global DefaultButton.l

Procedure WndProc(hWnd, Msg, wParam, lParam)
  If Msg = #WM_ACTIVATE
    If hWnd = WindowID(0)
      If (wParam & $FFFF) = #WA_INACTIVE
        SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, 0, #True)
        SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, 0, #True)
        SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, 0, #True)
      Else
        If DefaultButton = #Button_A
          SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
        ElseIf DefaultButton = #Button_B
          SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
        ElseIf DefaultButton = #Button_Exit
          SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
        EndIf
      EndIf
    EndIf
  EndIf
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 320, 95, #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Default-Button Example")
  If CreateGadgetList(WindowID(0))
    AdvancedGadgetEvents(#True)
    ButtonGadget(#Button_A, 110, 5, 100, 25, "A")
    ButtonGadget(#Button_B, 110, 35, 100, 25, "B", #PB_Button_Default)
    DefaultButton = #Button_B
    ActivateGadget(#Button_B)
    ButtonGadget(#Button_Exit, 110, 65, 100, 25, "Exit")
  EndIf
  AddKeyboardShortcut(0, #PB_Shortcut_Escape, #Shortcut_Escape)
  AddKeyboardShortcut(0, #PB_Shortcut_Return, #Shortcut_Return)
  SetWindowCallback(@WndProc())
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Menu
      Select EventMenuID()
        Case #Shortcut_Escape
          End
        Case #Shortcut_Return
          If DefaultButton = #Button_A
            Debug "A"
          ElseIf DefaultButton = #Button_B
            Debug "B"
          ElseIf DefaultButton = #Button_Exit
            End
          EndIf
      EndSelect
    Case #PB_Event_Gadget
      Select EventGadgetID()
        Case #PB_Event_Gadget
          Case #Button_A
            Select EventType()
              Case #PB_EventType_Focus
                SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, 0, #True)
                SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, 0, #True)
                SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
                DefaultButton = #Button_A
              Case #PB_EventType_LeftClick
                Debug "A"
            EndSelect
          Case #Button_B
            Select EventType()
              Case #PB_EventType_Focus
                SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, 0, #True)
                SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, 0, #True)
                SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
                DefaultButton = #Button_B
              Case #PB_EventType_LeftClick
                Debug "B"
            EndSelect
          Case #Button_Exit
            Select EventType()
              Case #PB_EventType_Focus
                SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, 0, #True)
                SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, 0, #True)
                SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
                DefaultButton = #Button_Exit
              Case #PB_EventType_LeftClick
                End
            EndSelect
      EndSelect
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver

End
hoffe nur, daß keine bugs drin sind. hab grad nicht so viel zeit um mich darum zu kümmern. ansonsten viel spass! :wink:

c ya,
nco2k