Seite 2 von 4

Verfasst: 05.02.2008 18:14
von edel
Danke, hatte da wirklich setwindowpos vergessen.

Poste doch mal bitte ein Beispielcode, wo ich das mit der 1
nachvollziehen kann. Ich bekomme unter Vista U immer nur
0.

Verfasst: 05.02.2008 20:42
von Lord
Hallo edel!

Mit diesem Schnipsel erhalte ich die erwähnten Werte unter XP:

Code: Alles auswählen

IncludeFile "PanelGadget2.pbi"
;Define hwnd

hwnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,300,300,"Test")
CreateGadgetList(hwnd)
PanelGadget(0,0,0,300,300)

AddGadgetItem(0,0,"1"):SetGadgetItemData(0,0,1)
AddGadgetItem(0,1,"2"):SetGadgetItemData(0,1,1)
AddGadgetItem(0,2,"3"):SetGadgetItemData(0,2,1)

Debug GetGadgetItemData(0,4); Liefert -1, das ist OK, da Tab nicht existiert

Debug GetGadgetItemData(0,0); Liefert 1, sollte besser 0 sein

SetGadgetItemData(0,0,0); Tab mit '0' füttern

Debug GetGadgetItemData(0,0); ab jetzt natürlich die oben gesetzte 0

Repeat : Until WaitWindowEvent() = 16
Vielleicht findet sich ja sonst noch jemand, der das Verhalten unter Vista/XP testet?

Lord

Verfasst: 05.02.2008 20:55
von edel
Wieso sollte das 0 sein? Du setzt doch die 1 selber.

Verfasst: 06.02.2008 15:02
von Lord
edel hat geschrieben:Wieso sollte das 0 sein? Du setzt doch die 1 selber.
Oh, das ist mir aber peinlich. :oops:
Ja ja, leichte Schläge auf den Hinterkopf erhöhen das Denkvermögen
und verleihen dem Po ein glanzvolles Aussehen. Danke dafür.

Die drei SetGadgetItemData() hinter dem AddGadgetItem() stammten noch von den Tests wegen des vorherigen IMA. Die hatte ich mir da gleich dahintergeschrieben, damit dieser Fehler nicht auftrat. Später habe ich dann den Teil immer per Cut&Paste übernommen und somit auch die gesetzte '1'.

Tja, wenn dieTomaten auf den Augen doch durchsichtig wären.
Ich hoffe, ich hab' nicht zu stark genervt.

Gruß

Lord

Verfasst: 09.04.2009 16:27
von Lord
Jetzt muß ich leider diesen Thread nochmal ausgraben.

Ich habe festgestellt, daß die neuen Befehle
SetGadgetItemColor() und SetGadgetItemData()
mit PB v4.30 unvorhersehbare IMA produzieren.

Bei mir trat ein IMA immer beim Öffnen eines neuen Fensters auf.

Auf das Nötigste reduziert, tritt beim folgenden Testcode beim Verlassen
von PB_PanelParentCB() der Fehler in dieser Zeile auf:
ProcedureReturn CallWindowProc_(callback,hwnd,msg,wparam,lparam)

Code: Alles auswählen

IncludeFile "PanelGadget.pbi"

#MainWindow   = 1
#Panel        = 1
#Tab1         = 1

OpenWindow(#MainWindow, 20, 20, 300, 200, "PanelGadget-Test")
PanelGadget(#Panel, 5, 5, 290, 190)
AddGadgetItem(#Panel, -1, "Tab 1")

SetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor, $0000FF)
;Debug GetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor)
;SetGadgetItemData(#Panel,#Tab1, 1)
;Debug GetGadgetItemData(#Panel,#Tab1)


Repeat:Until WaitWindowEvent(10)=#PB_Event_CloseWindow


OpenWindow(#MainWindow, 20, 20, 300, 200, "PanelGadget-Test")
PanelGadget(#Panel, 5, 5, 290, 190)
AddGadgetItem(#Panel, -1, "Tab 2")


Repeat:Until WaitWindowEvent(10)=#PB_Event_CloseWindow
Bei den Befehlen GetGadgetItemColor() und GetGadgetItemData()
tritt das IMA-Problem nicht auf, sie liefern aber keine korrekten Werte.

Läßt sich das Includefile an PB v4.30 anpassen und wenn ja, wie?

Verfasst: 09.04.2009 16:40
von Andesdaf
stimmt. Müsste man mal sehen... *weiterles*

Verfasst: 09.04.2009 17:12
von alter Mann
hat nichts mit PB4.3 zu tun

probier das mal

Code: Alles auswählen

IncludeFile "PanelGadget.pbi"

#MainWindow   = 1
#Panel        = 1
#Tab1         = 0

OpenWindow(#MainWindow, 20, 20, 300, 200, "PanelGadget-Test")
PanelGadget(#Panel, 5, 5, 290, 190)
AddGadgetItem(#Panel, -1, "Tab 1")

SetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor, $0000FF)
Debug GetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor)
SetGadgetItemData(#Panel,#Tab1, 1)
Debug GetGadgetItemData(#Panel,#Tab1)


Repeat:Until WaitWindowEvent(10)=#PB_Event_CloseWindow
[code]

Verfasst: 09.04.2009 17:27
von Andesdaf
im grunde genommen machst du dein zweites Fenster mit ner anderen Konstante
und passt die ersten zeilen noch an:

Code: Alles auswählen

#MainWindow = 1
#Panel = 1
#Tab1 = 0
#Second = 2 ; das zweite Fenster
dann geht es auch.

(um den Code von alter mann noch zu ergänzen.)

Verfasst: 09.04.2009 17:28
von Lord
Hallo Alter Mann!

Du hast natürlich zum Teil Recht.

Die falschen Attribute hatte ich natürlich durch das Ansprechen des falschen Tabs erhalten. :oops:
Das eigentliche Problem, der IMA, bleibt aber bestehen. Du erhältst ihn in deinem Code
nur deshalb nicht, weil Du das Fenster nicht wieder erstellst.

Hier nochmals der korrigierte Codeschnipsel:

Code: Alles auswählen

IncludeFile "PanelGadget.pbi"

#MainWindow   = 1
#Panel        = 1
#Tab1         = 0

OpenWindow(#MainWindow, 20, 20, 300, 200, "PanelGadget-Test")
PanelGadget(#Panel, 5, 5, 290, 190)
AddGadgetItem(#Panel, -1, "Tab 1")

SetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor, $0000FF)
; Debug GetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor)
; SetGadgetItemData(#Panel,#Tab1, 1)
; Debug GetGadgetItemData(#Panel,#Tab1)


Repeat:Until WaitWindowEvent(10)=#PB_Event_CloseWindow


OpenWindow(#MainWindow, 20, 20, 300, 200, "PanelGadget-Test")
PanelGadget(#Panel, 5, 5, 290, 190)
AddGadgetItem(#Panel, -1, "Tab 2")


Repeat:Until WaitWindowEvent(10)=#PB_Event_CloseWindow

Verfasst: 09.04.2009 17:30
von Andesdaf
hier noch mal vollständig, ohne Fehler und schön bunt:

Code: Alles auswählen

IncludeFile "PanelGadget.pbi"

#MainWindow   = 1
#Panel        = 1
#Tab1         = 0
#Second       = 2

OpenWindow(#MainWindow, 20, 20, 300, 200, "PanelGadget-Test")
PanelGadget(#Panel, 5, 5, 290, 190)
AddGadgetItem(#Panel, -1, "Tab 1")

SetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor, $0000FF)
; Debug GetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor)
; SetGadgetItemData(#Panel,#Tab1, 1)
; Debug GetGadgetItemData(#Panel,#Tab1)


Repeat:Until WaitWindowEvent(10)=#PB_Event_CloseWindow


OpenWindow(#Second, 20, 20, 300, 200, "PanelGadget-Test")
PanelGadget(#Panel, 5, 5, 290, 190)
AddGadgetItem(#Panel, -1, "Tab 2")

SetGadgetItemColor(#Panel, #Tab1, #PB_Gadget_FrontColor, $0000FF)

Repeat:Until WaitWindowEvent(10)=#PB_Event_CloseWindow