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