SetActiveGadget

Anfängerfragen zum Programmieren mit PureBasic.
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

SetActiveGadget

Beitrag von enigma »

Hallo,
nach langer erfolgloser Suche hier im Forum und auch mit Google muss ich mich mal wieder melden.
Mein Problem: Bei Programmstart öffne ich drei Fenster in der Reihenfolge CoverWindow - ProtokollWindow - MainWindow. Das CoverWindow und das ProtokollWindow werden mit HideWindow versteckt. Im MainWindow ist ein StringGadget das den Fokus bekommen soll um dort direckt eine Texteingabe machen zu können ohne erst in das Fenster zu klicken. SetActiveGadget und SetActiveWindow lösen mein Problem nicht. Das Beispiel in der Hilfe zu SetActiveGadget läuft. Liegt das an meinen versteckten Fenstern?

Schon mal vielen Dank im Vorraus
Enigma
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SetActiveGadget

Beitrag von RSBasic »

In der Regel sollte es funktionieren, aber da ich dein Code nicht kenne und nicht sehen kann, kann ich dir leider nicht helfen.
Ich kann höchstens ein Beispielcode posten:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(1, 10, 10, 100, 20, "", 0)
  
  If OpenWindow(1, 0, 0, 300, 200, "SubWindow 1", #PB_Window_WindowCentered, WindowID(0))
  EndIf
  If OpenWindow(2, 0, 0, 200, 100, "SubWindow 2", #PB_Window_WindowCentered, WindowID(0))
  EndIf
  
  ;SetActiveWindow(0);Ist glaube ich nicht erforderlich
  SetActiveGadget(1)
  
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Kannst du versuchen, dein Code als Kopie auf minimale Größe zu reduzieren, damit du diesen Code posten kannst? Eventuell findest du sogar beim Reduzieren des Codes den Fehler.
Ansonsten kann man ohne Code nicht viel sagen. Es könnte vielleicht sein, dass ein anderes Fenster erst später erstellt oder sichtbar gemacht wird und dann den Fokus bekommt, weiß ich nicht.
Oder vielleicht verwendest du woanders SetActiveGadget() oder SetActiveWindow()? Such mal in deinem Code nach solchen Funktionen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: SetActiveGadget

Beitrag von enigma »

Danke RSBasic für die schnelle Antwort.
Dein Code macht genau das was ich wollte, auch wenn ich die beiden SubWindows verstecke.
Ich habe den Code durchsucht keine weiteren SetActiveGadget() oder SetActiveWindow() gefunden.
Werde versuchen den entsprechenden Codeteil zu reduzieren und dann hier posten.

Besten Dank
Enigma
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: SetActiveGadget

Beitrag von enigma »

RSBasic hat geschrieben: Es könnte vielleicht sein, dass ein anderes Fenster erst später erstellt oder sichtbar gemacht wird und dann den Fokus bekommt
Das wars :oops:

Nochmals besten Dank für die schnelle Hilfe :allright:

Gruß
Enigma
Antworten