Frage zum String Gadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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


Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag 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
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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 ""?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag 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
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Antworten