Seite 1 von 1

Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Verfasst: 24.07.2017 19:14
von NicknameFJ
Hallo zusammen,

ich habe folgendes Problem bei dem ich nicht weiterkomme.

Ich habe eine Eingabemaske mit 5 Stringgadgets. Beim Anspringen mit der TAB-Taste werden diese in der richtigen Reihenfolge (= Reihenfolge in der die Gadgets erzeugt wurden) angesprungen.

Das dritte Stringgadget wird während des Programmablaufes durch ein ComboBox-Gadget (an der gleichen Screen Position) mit der selben ID ersetzt. Das Stringgadget ist dadurch "gefreed".

Jetzt wird beim Anspringen mit der Tab-Taste Stringgadget 1, dann 2, 4,5 und dann erst die ComboBox angesprungen anstatt Stringgadget1, 2 ComboBox, Stringgadget 4,5.


Wie kann ich die "richtige" Reihenfolge wieder einrichten.

Danke im Voraus.

NicknameFJ

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Verfasst: 24.07.2017 19:16
von GPI
Das besagte Stringgadget und Combogadget unterschiedliche IDs geben und mittels DisableGadget und HideGadget verstecken.

Generell würde ich Gadgets immer unterschiedliche IDs geben, besser mit #pb_any arbeiten.

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Verfasst: 24.07.2017 19:22
von NicknameFJ
Danke GPI.

Das hätte ich auch so gemacht aber ......

mein Programm ist schon sehr weit und ich habe das mit der ComboBox erst nachträglich eingebaut.

Habe noch eine eigene Routine die mit der ENTER Taste die Gadgets durchgeht. Da brauche die selbe Gadgetnummer. Habe auch ein Autovervollständigen mit Drin usw. das an allen Stellen anzupassen ist ne Menge Arbeit.

Dachte es wäre einfacher dem OS die neue Reihenfolge beizubringen an der Stelle wo die Combobox eingeblendet wird.

Hat jemand eine Idee wie ich die Reihenfolge dem OS beibringen kann sonst muss ich in den saueren Apfel beißen und die Fleißarbeit erledigen.

NicknameFJ

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Verfasst: 24.07.2017 21:20
von HeX0R

Code: Alles auswählen

Procedure ChangeTabOrder(List Gadgets.i())

	
	If LastElement(Gadgets())
		Repeat
			If IsGadget(Gadgets())
				SetWindowPos_(GadgetID(Gadgets()), 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE)
			EndIf
		Until PreviousElement(Gadgets()) = 0
	EndIf

EndProcedure


If OpenWindow(0, 0, 0, 222, 200, "ButtonGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	ButtonGadget(0, 10, 10, 200, 20, "Eins")
	ButtonGadget(1, 10, 40, 200, 20, "Zwei")
	ButtonGadget(2, 10, 70, 200, 20, "Drei")
	ButtonGadget(3, 10, 100, 200, 60, "Vier")
	ButtonGadget(4, 10, 170, 200, 20, "Change TabOrder")
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
				Break
			Case #PB_Event_Gadget
				If EventGadget() = 4
					NewList G.i()
					AddElement(G()) : G() = 2 : SetGadgetText(2, "Eins")
					AddElement(G()) : G() = 4 : SetGadgetText(4, "Zwei")
					AddElement(G()) : G() = 0 : SetGadgetText(0, "Drei")
					AddElement(G()) : G() = 3 : SetGadgetText(3, "Vier")
					AddElement(G()) : G() = 1 : SetGadgetText(1, "Fuenf")
					ChangeTabOrder(G())
				EndIf
		EndSelect
	ForEver
	
EndIf

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Verfasst: 24.07.2017 21:24
von NicknameFJ
Hallo HeXOR,

danke für Deine Antwort.

Ich teste dies mal.

Über kurz oder lang muss ich die Fleißarbeit mal angehen aber erstmal ist es gut wenn ich da nicht ran muss.

NicknameFJ

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Verfasst: 24.07.2017 21:38
von HeX0R
Ich hab mir das nochmal durchgelesen, das was Du willst geht ja noch viel einfacher:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 222, 200, "ButtonGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	ButtonGadget(0, 10, 10, 200, 20, "Eins")
	ButtonGadget(1, 10, 40, 200, 20, "Zwei")
	ButtonGadget(2, 10, 70, 200, 20, "Drei")
	ButtonGadget(3, 10, 100, 200, 60, "Vier")
	ButtonGadget(4, 10, 170, 200, 20, "Lösche Drei und erstelle neu")
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
				Break
			Case #PB_Event_Gadget
				If EventGadget() = 4
					FreeGadget(2)
					UseGadgetList(WindowID(0))
					ButtonGadget(2, 10, 70, 200, 20, "Drei")
					SetWindowPos_(GadgetID(2), GadgetID(1), 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE)
				EndIf
		EndSelect
	ForEver
	
EndIf

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Verfasst: 24.07.2017 22:23
von NicknameFJ
Danke HeXOR,

funktioniert sehr gut.

Ich baue das erstmal in mein Programm ein.

NicknameFJ