Seite 2 von 3
Verfasst: 13.11.2007 22:06
von edel
Pb versagt ueberhaupt nicht, PB erstellt normale Fenster
und keine Dialoge.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 110, "OptionGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
OptionGadget(0, 30, 20, 60, 20, "Option 1")
OptionGadget(1, 30, 45, 60, 20, "Option 2")
OptionGadget(2, 30, 70, 60, 20, "Option 3")
SetGadgetState(1, #True)
While GetMessage_( msg.MSG, #Null, 0, 0 )
If IsDialogMessage_(WindowID(0),msg) = 0
TranslateMessage_(msg)
DispatchMessage_(msg)
EndIf
Wend
EndIf
EndIf
Verfasst: 13.11.2007 22:18
von AND51
Interessant!
Was bewirken denn deine Message-Befehle?
Ich habe es gerade mal mit
PanelGadget() getestet, denn Andere Fenster unterstützen Ctrl+Tab um durch die Registerkarten zu wechseln. Mit deinem Code funktioneirt das nicht.
Kannst du das vielleicht nen bisschen erklären?
Verfasst: 13.11.2007 22:28
von Little John
AND51 hat geschrieben:Richtig: Innerhalb der Option-Gruppe wird mit Pfeiltasten gewählt!
Das ist ja unstrittig. Deshalb will ich das ja auch in mein Programm einbauen.
AND51 hat geschrieben:Deshalb ist es nicht nötig, dafür extra Code zu schreiben.
Falsch, denn ohne extra Code funktioniert es in PB nicht.
AND51 hat geschrieben:Habe es jedoch gerade überprüft: PureBasic versagt mal wieder.
Eben, und das hatte ich schon im Vorfeld festgestellt, sonst gäbe es nämlich diesen ganzen Thread gar nicht ...
Mit dem Code von Thomas ist das Problem in meinem Programm gelöst.
Gruß, Little John
Verfasst: 13.11.2007 23:57
von Kurzer
AND51 hat geschrieben:...Andere Fenster unterstützen Ctrl+Tab um durch die Registerkarten zu wechseln.
Ist das eigentlich genau so ein Standard, wie das Navigieren mit den Pfeiltasten (also ohne selbst dafür Eventroutinen schreiben zu müssen)?
Ich stelle nach Lesen dieses Threads nämlich auch fest, daß ich die Tabs in meinem derzeitigen Projekt nicht mit Strg-Tab wechseln kann - was ich nicht so super finde.
Verfasst: 14.11.2007 00:42
von AND51
> Ich stelle nach Lesen dieses Threads nämlich auch fest, daß ich die Tabs in meinem derzeitigen Projekt nicht mit Strg-Tab wechseln kann - was ich nicht so super finde.
In PB-Programmen ist dies NICHT Standard. Warum kann ich nicht sagen. Ich weiß nur: Andere Programme unterstützen dies automatisch und in gleicher Weise.
Entweder gibt es dafür wirklich einen Extra-Code, was ich mir aber irgendwie nicht vorstellen kann, oder es gibt irgend einen Faktor, der PB-Programme negativ beeinflusst, sodass dies in eigenen Programmen nicht geht. Ich erinnere mich an mein altes Projekt, indem ich extra einen AddKeyboardShortcut() anlegen musste, nur um mir das Registerkarten-Wechseln selbst zu ermöglichen.
Andererseits hat es auch seinen Vorteil, dass dies nicht automatisch geht: So kann man die Tastenkombination Strg+Tab beliebig selbst benutzen oder auch andere Tastenkombinationen selbst wählen, mit denen das gehen soll.
Hinweis: Das Springen von Gadget zu Gadget mit Tab und das anschließende verändern durch Pfeil rauf/runter z. B. gerade bei OptionGadget() funktioniert nun wirklich in ALLEN Programmen. Teilweise auch in PB. In PB funzt leider nur TAB, wenn ich wie hier gewünscht OptionGadget() ändern will brauch ich wieder extra Code.
PB bietet dahingehend also nix halbes und nix ganzes, wie man so schön sagt. Daher finde ich das etwas unzuverlässig, was ich mit dem Ausdruck "PB hat versagt" zur Geltung bringen wollte.
Verfasst: 14.11.2007 00:57
von Kurzer
AND51 hat geschrieben:...In PB funzt leider nur TAB, wenn ich wie hier gewünscht OptionGadget() ändern will brauch ich wieder extra Code...
Wenn ich Edels Beitrag richtig interpretiert habe, dann liegt das daran, daß sowas nur in Dialogen (von allein) funktioniert und nicht in Fenstern. Kann das ein Delphi/C/C++/sonstwas-Entwickler evtl. bestätigen?
Verfasst: 14.11.2007 01:05
von AND51
AUßer dem Internet Explorer fallen mir gerade keine weiteren Programme spontan ein. Und der Internet Explorer ist doch auch ein Fenster, oder hat der wohl auch extra Code drin? Und wie sieht das mit Firefox und den anderen Browsern aus?
// Edit:
Ah, zum Beispiel "DxDiag" fällt mir noch ein, der unterstützt das auch und das ist IMHO kein Dialog, da der ein Minimieren-Knopf hat, was Dialoge/Requester nicht haben:
START > AUSFÜHREN > DXDIAG > OK
Verfasst: 14.11.2007 05:51
von edel
Dialoge koennen sowas von sich aus , ja. Ansonsten muss man nachhelfen,
wie oben.
Danilo hat vor einiger Zeit mal etwas zum Eventhandling unter Windows
gepostet :
http://www.purebasic.fr/german/viewtopic.php?t=23
Das erklaert das ganz gut.
DxDiag ist ein Dialog.
Verfasst: 14.11.2007 09:06
von Little John
edel hat geschrieben:Dialoge koennen sowas von sich aus , ja. Ansonsten muss man nachhelfen,
wie oben.
Gibt es diese unterschiedlichen Funktionsweisen von Dialogen und Nicht-Dialog-Fenstern auch bei Linux?
Gruß, Little John
Verfasst: 14.11.2007 11:24
von AND51
> Dialoge koennen sowas von sich aus
Gibt es denn eine Möglichkeit, ein eigenes PB-Fenster als Dialog zu vermakrten? Dann müssten diese Dinge doch auch automatisch gehen, oder?
> DxDiag ist ein Dialog
Ja? Wie kann man das denn erkennen? Geht das schon rein äuerlich, weiß man sowas einfach oder muss man das mit nem speziellen Code erst herausfinden?
Ich war z. B. davon ausgegangen, dass es ein normales Fenster ist, da es einen Minimierenknopf hat und es in der Taskleiste sichtbar ist.