Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Beitrag 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
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Beitrag 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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Beitrag 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
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Beitrag 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
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Beitrag 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
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Beitrag 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
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: Gadgetreihenfolge beim Anspringen mit der TAB-Taste

Beitrag von NicknameFJ »

Danke HeXOR,

funktioniert sehr gut.

Ich baue das erstmal in mein Programm ein.

NicknameFJ
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Antworten