Seite 2 von 2
Verfasst: 16.09.2007 00:32
von edel
FGK hat geschrieben:@Edel
Ok - dank deinem Hinweis senden wir nun mit einer "0"
den richtigen Verarbeitungscode.
Trotzdem bleibt der Schönheitsfehler daß das eingegebne
Zeichen noch kurz zu sehen ist.
Hast du dazu noch ne Idee? Damit wir Aspirant ne zufrieden
stellende Lösung bieten können.
Gruß FGK
Ich komme nicht ganz hinter den Gedanken von Aspirant.
Aber wenn du #wm_keyup mit #wm_char ersetzt und auf
Gross- und Kleinschreibung achtest wird nichts mehr angezeigt
Code: Alles auswählen
If #WM_CHAR = msg
Select wParam
Case #VK_A,#VK_A+32 ; 'a', 'A'
SetGadgetText(0,"")
ProcedureReturn 0
EndSelect
EndIf
Code: Alles auswählen
Procedure SetCallbackEx(hwnd.l, Proc.l)
Protected OldProc = SetWindowLong_(hwnd, #GWL_WNDPROC, Proc)
If OldProc
SetWindowLong_(hwnd, #GWL_USERDATA, OldProc)
EndIf
ProcedureReturn OldProc
EndProcedure
Procedure Callback(hwnd,msg,wParam,lParam)
Protected OldProc = GetWindowLong_(hwnd, #GWL_USERDATA)
If #WM_CHAR = msg
Select wParam
Case #VK_A,#VK_A+32
SetGadgetText(0,"")
ProcedureReturn 0
EndSelect
EndIf
ProcedureReturn CallWindowProc_(OldProc, hwnd, msg, wParam, lParam)
EndProcedure
OpenWindow(0, 100, 100, 120, 50, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
StringGadget(0, 8, 10, 100, 20, "", #PB_String_UpperCase)
SetCallbackEx(GadgetID(0), @Callback())
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Verfasst: 16.09.2007 02:15
von Aspirant
Hallo,
@ edel
der gedanke ist einfach;
im string Gadget gebe ich ich eine Artikel nummer ein, mit druck auf enter wird eine SQL datenbank danach befragt, welche mir Preis Mwst. den Namen und EAN liefert
diese wird in einer linklist gehalten und ihn einem listicon gadget angezeit in dem immer der letzte eintrag makiert wird.
so weit geht alles
ein druck auf "+" erhöht die menge um +1
ein druck auf "-" verringert sie um -1
ein druck auf "UP" oder "DOWN" schiebt den zeilen select rauf oder runter
ein druck auf "DEL"löscht den aktuellen Eintrag
und so weiter
eine Sinnvolle tastur bedinnung geht scheller als mouseclicks
ich hoffe das macht den sin klar und auch warum ich bei diesen Tasten druck nicht im String Gadget haben möchte
@Kaeru Gaman
deine Idee brachte kei erfolg leider
ach ich möchte wenn es geht auf API funktionen verzichten damit ich das Prog auch auf Linux laufen lassen kann, wes wegen meine erste lösung auch mist ist
Verfasst: 16.09.2007 02:22
von Kaeru Gaman
> deine Idee brachte kei erfolg leider
solltest aber trotzdem drauf achten, EventMenu() nur bei Event : Case #PB_Event_Menu auszuführen.
mach mal zusätzliche buttons, die die "+", "-", etc. funktionen haben...
können buttons nicht auch hotkeys haben?
hm...
soll dann nicht auch nach dem tastendruck etwas anderes im gadget stehen als ""?
Verfasst: 16.09.2007 19:29
von Aspirant
Hallo,
Klar können die Die Hotkeys auch Button haben das wäre bzw. ist ja auch nicht das Problem sonders das ich es nicht raffe wie ich sicher stellen kann das der Hootkey Event nur einmal verarbeiten wird
ich habe es ja mit Select Event() versucht doch Event ohne zusatz nicht geht.
das ist mein neuster endwurf
#hallo =10
OpenWindow(0, 100, 100, 300, 100, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
StringGadget(#hallo, 8, 10, 306, 20, "", #PB_String_UpperCase)
AddKeyboardShortcut(0, #PB_Shortcut_Add, 12)
AddKeyboardShortcut(0, #PB_Shortcut_A, 20)
AddKeyboardShortcut(0, #PB_Shortcut_1, 40)
AddKeyboardShortcut(0, #PB_Shortcut_Pad1, 40)
AddKeyboardShortcut(0, #PB_Shortcut_Subtract, 11)
Repeat
ereignis.l = WaitWindowEvent()
;If ereignis.l = #WM_KEYDOWN
Debug EventwParam()
If EventwParam() <> kontroll
Select EventwParam()
Case 107
Debug "Plus"
kontroll = 107
Case 109
Debug "Minus"
kontroll = 109
Case 38
Debug "Hoch"
kontroll = 38
Case 40
Debug "Runter"
kontroll = 40
Default
kontroll = 0
EndSelect
EndIf
Until ereignis.l = #PB_Event_CloseWindow
Durch das AddKeyboardShortcut(0, #PB_Shortcut_Add, 12) wir die anzeige im String Gadget verhindert
also eigentlich was ich will
wenn auch sicher nicht die Bestelösung
MFG Aspi