Keyboard auf Gadget
Keyboard auf Gadget
Hallo,
gibt es eine Möglichkeit keyboard ereignisse die auf Objekten(Gadgets: ListIconGadget) angewendet werden zu "lesen" ?
Da bei Tastendruck bei mir kein Event ausgelöst wird...
z.b. ich habe eine gefülle Liste und will per Enter,Space o.ä. in einer selectieren Zeile mir den Inhalt anzeigen lassen um Änderungen durchzuführen.
(Gibt es Enter als Konstante im Zusammenhang mit KeyboardExamine() ?)[/code]
gibt es eine Möglichkeit keyboard ereignisse die auf Objekten(Gadgets: ListIconGadget) angewendet werden zu "lesen" ?
Da bei Tastendruck bei mir kein Event ausgelöst wird...
z.b. ich habe eine gefülle Liste und will per Enter,Space o.ä. in einer selectieren Zeile mir den Inhalt anzeigen lassen um Änderungen durchzuführen.
(Gibt es Enter als Konstante im Zusammenhang mit KeyboardExamine() ?)[/code]
Re: Keyboard auf Gadget
SuFu benutzen!
Hatten wir erst vor einer Woche: http://www.purebasic.fr/german/viewtopic.php?t=13867
Grüße ... Kiffi
Hatten wir erst vor einer Woche: http://www.purebasic.fr/german/viewtopic.php?t=13867
Grüße ... Kiffi
a²+b²=mc²
Ja habe ich genutzt...
Aber ich finde damit eh nie was.... vielleicht geb ich zuviel ein ...
-------------
Aber das bezieht sich doch eher auf OpenScreen usw.
Ich brauch das doch für Windows Anwendungen...
Funzen nicht.... es kann ja wohl nicht nur diese Api als Lösung existieren... Wieso funzt das nicht mit irgend Eventtype oder Event kram... wenn ich irgend ne Taste auf irgendwas "wirke" dann wird ja wohl ein Event ausgelöst. In fast jeder "vernünftigen" Sprache gibts sogar Events wie KeyboardPress() bzw. Down oder Up() die sich auf sogut wie jedes Objekt anwenden lassen.
Oder ist sowas in PB wieder nicht von Haus aus eingebaut ?
Aber ich finde damit eh nie was.... vielleicht geb ich zuviel ein ...
-------------
Aber das bezieht sich doch eher auf OpenScreen usw.
Ich brauch das doch für Windows Anwendungen...
Code: Alles auswählen
Repeat
ExamineKeyboard()
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
Select EventGadget
Case ListIconGadget
if eventtype = KeyboardReleased(#pb_key_space)
; bzw. if keyboardreleased(#pb_key_space)
....
....
....
Oder ist sowas in PB wieder nicht von Haus aus eingebaut ?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> In fast jeder "vernünftigen" Sprache
würde ich dann einfach nutzen
würde ich dann einfach nutzen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> wenn ich irgend ne Taste auf irgendwas "wirke" dann wird ja wohl ein Event ausgelöst.
eben nur bei wenigen objekten, jedenfalls platform-übergreifend.
Fred baut nicht unbedingt absolut Windows-spezifische geschichten als native befehle ein,
eben weil die komplette API sich ohne irgendwelchen zusatzaufwand ansprechen läßt.
wenn du veränderungen in einem Gadget registrieren willst,
gibt es den EventType() #PB_EventType_Change.
wirklich einzelne tastendrücke auf irgendeinem gadget registrieren zu wollen,
ist in keiner sprache trivial, eben weil man es nicht braucht.
...oder wozu sollte man das brauchen?
und wenn man dann wirklich so nen ausnahmefall hat, dann greift man halt auf Get(Async)Keystate zurück.
eben nur bei wenigen objekten, jedenfalls platform-übergreifend.
Fred baut nicht unbedingt absolut Windows-spezifische geschichten als native befehle ein,
eben weil die komplette API sich ohne irgendwelchen zusatzaufwand ansprechen läßt.
wenn du veränderungen in einem Gadget registrieren willst,
gibt es den EventType() #PB_EventType_Change.
wirklich einzelne tastendrücke auf irgendeinem gadget registrieren zu wollen,
ist in keiner sprache trivial, eben weil man es nicht braucht.
...oder wozu sollte man das brauchen?
und wenn man dann wirklich so nen ausnahmefall hat, dann greift man halt auf Get(Async)Keystate zurück.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Hallo,
mir ging es "damals" ja nur darum die Entertaste für die Gadgets(Buttons) fähig zu machen.
Darum dachte ich, ich poste mal den Code damit andere vielleicht das ebenso nutzen können und vorallem das man mich zurecht weißen kann und mir meine "Fehler" vor die Augen führen kann.
Das folgende ist doch sicher nur Windows tauglisch oder weil das #WM_Keyup zur Windows Api gehört ?!
Habe das jetzt so aufgebaut um doppelten Code zu vermeiden oder Proceduren einbauen zu müssen.
Wollte mal Fragen obs bessere Methoden gibt. Da ich ja quasi einen Schleifendurchlauf warte ...
mir ging es "damals" ja nur darum die Entertaste für die Gadgets(Buttons) fähig zu machen.
Darum dachte ich, ich poste mal den Code damit andere vielleicht das ebenso nutzen können und vorallem das man mich zurecht weißen kann und mir meine "Fehler" vor die Augen führen kann.
Das folgende ist doch sicher nur Windows tauglisch oder weil das #WM_Keyup zur Windows Api gehört ?!
Code: Alles auswählen
If key_enter = 0
Event = WaitWindowEvent()
EndIf
Select Event
Case #WM_KEYUP
If EventwParam() = 13
EventGadget = GetActiveGadget()
If GetActiveGadget() > 0
key_enter = 1
Event = #PB_Event_Gadget
EndIf
EndIf
Case #PB_Event_Gadget
If key_enter = 0
EventGadget = EventGadget()
EndIf
EventType = EventType()
key_enter = 0
Select EventGadget
Case Button1
;.........
Case Button2
;.........
Case Button3
;.........
Case #PB_Event_Menu
EventMenu = EventMenu()
key_enter = 0
...
...
Wollte mal Fragen obs bessere Methoden gibt. Da ich ja quasi einen Schleifendurchlauf warte ...
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
AddKeyboardShortcut()
Return zum Anzeigen eines Eintrags, Escape zum Beenden.
@Kiff, ts-soft, Kaeru Gaman: Schämt euch! 
Return zum Anzeigen eines Eintrags, Escape zum Beenden.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 320, 240, "Keyboard-Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
ListViewGadget(0, 0, 0, 320, 240)
For a = 1 To 100
AddGadgetItem(0, a - 1, Str(a))
Next
AddKeyboardShortcut(0, #PB_Shortcut_Return, 0)
AddKeyboardShortcut(0, #PB_Shortcut_Escape, 1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Menu
Select EventMenu()
Case 0 ;Return
If GetActiveGadget() = 0
a = GetGadgetState(0)
If a >= 0
MessageRequester("Info", GetGadgetItemText(0, a, 0))
SetActiveGadget(0)
EndIf
EndIf
Case 1 ;Escape
Break
EndSelect
EndSelect
ForEver
CloseWindow(0)
EndIf
EndIf

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> @Kiff, ts-soft, Kaeru Gaman: Schämt euch!
Wenn jemand PureBasic als unvernünftige Sprache bezeichnet,
gibts keine andere Antwort, als meine obige
Ausserdem, da bereits hunderte (etwas weniger
)
Beispiele mit AddKeyboardShortcut gepostet wurden, gehe
ich also davon aus, diese Lösung ist nicht akzeptabel ist, weils in "vernünftigen"
Sprachen auch anders geht
Werde mich keinesfalls schämen!

Wenn jemand PureBasic als unvernünftige Sprache bezeichnet,
gibts keine andere Antwort, als meine obige

Ausserdem, da bereits hunderte (etwas weniger

Beispiele mit AddKeyboardShortcut gepostet wurden, gehe
ich also davon aus, diese Lösung ist nicht akzeptabel ist, weils in "vernünftigen"
Sprachen auch anders geht

Werde mich keinesfalls schämen!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Problem ist nur das ich diese Sprache nicht als unvernüftig bezeichnet habe...Wenn jemand PureBasic als unvernünftige Sprache bezeichnet
Ich habe nur gesagt: "In fast jeder (anderen) "vernünftigen" Sprache..."
Da steht weder das PB schlecht oder unvernünftig ist ...
Außerdem wer etwas mag der "meckert" darüber ...
--------------
Auch wenn ich fündig geworden bin poste ich trotzdem.. weil ich dann einen "eigenen" Theard habe indem ich alle Fragen über z.b. Keyboard reinschreiben kann. Dafür eröffne ich theards wirklich nur, wenn mein wissen nicht ausreicht im moment oder ich die anderen nicht verstehe (oder ich mal auf dem schlauch stehe)...Ausserdem, da bereits hunderte (etwas weniger Mr. Green )
Beispiele mit AddKeyboardShortcut gepostet wurden ..
Außerdem steht es nicht umsonst in der Anfänger Ecke ... und ich bin einer der das relativ getrennt haben will also keine GadgetTastaturEvents in einem EventMenu... Das ist für mich wie Schnee und Feuer...
Aber trotzdem danke NicTheQuick nun weiß ich wie ...