SetGadgetItemData & SetGadgetItemColor fuer Panel

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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.
Lord
Beiträge: 324
Registriert: 21.01.2008 19:11

Beitrag 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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Wieso sollte das 0 sein? Du setzt doch die 1 selber.
Lord
Beiträge: 324
Registriert: 21.01.2008 19:11

Beitrag 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
Lord
Beiträge: 324
Registriert: 21.01.2008 19:11

Beitrag 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?
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

stimmt. Müsste man mal sehen... *weiterles*
Win11 x64 | PB 6.20
Benutzeravatar
alter Mann
Beiträge: 201
Registriert: 29.08.2008 09:13
Wohnort: hinterm Mond

Beitrag 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]
Win11 64Bit / PB 6.0
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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.)
Win11 x64 | PB 6.20
Lord
Beiträge: 324
Registriert: 21.01.2008 19:11

Beitrag 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
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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 
Win11 x64 | PB 6.20
Antworten