Seite 2 von 3
Verfasst: 21.02.2009 19:19
von Andesdaf
>Wie könnte ich einem StringGadget das per #PB_Any erstellt wird, gleich noch eine Schriftart, Font usw. mitgeben?
Als Liste vllt. so. (nicht geprüft)
Code: Alles auswählen
Structure ListStrings
slID.l
ssFont.s
slColor.l
EndStructure
Global NewList LiStr.ListStrings()
If OpenWindow(0, 0, 0, 230, 200, "Event-Handling Beispiel...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
AddElement(LiStr())
LiStr()\slID = StringGadget (#PB_Any, 10, 10, 200, 20, "Klick mich")
FontRequester("bla",16,0)
LiStr()\ssFont = SelectedFontName()
LiStr()\slColor = ColorRequester()
Debug LiStr()\slID
Debug LiStr()\ssFont
Debug LiStr()\slColor
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
Verfasst: 21.02.2009 21:23
von Broncbuster
also tut mir leid, Hilfe über Handles und Nummern gelesen, finde aber keine Möglichkeit die GadgetID auszulesen die ich per #PB_Any erstellt habe. Meine damit aber die OpenFormphase, nicht die Klickmichphase.
Was ist denn nun mit over 10000? Ist halt so? Oder wie? Oder was?
Manche stehen auf dem Schlauch und haben auch noch Kleber unter der Schuhsohle.
Verfasst: 21.02.2009 21:45
von ts-soft
Code: Alles auswählen
OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "void")
gadget = ButtonGadget(#PB_Any, 10, 10, 60, 30, "bla")
SetGadgetData(gadget, gadget)
gadget = ButtonGadget(#PB_Any, 10, 50, 60, 30, "blub")
SetGadgetData(gadget, gadget)
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
gadget = EventGadget()
Debug "Meine ID: " + Str(GetGadgetData(gadget))
Debug GetGadgetText(GetGadgetData(gadget))
EndIf
Until event = #PB_Event_CloseWindow
Verfasst: 21.02.2009 21:49
von Broncbuster
Hallo TS,
hab es gerade auch rausbekommen
Code: Alles auswählen
Enumeration
#Save
EndEnumeration
Procedure OpenSave()
If IsWindow(#Save) = 0
OpenWindow(#Save, 50, 5, 400, 230, "Info", #PB_Window_SystemMenu | #PB_Window_TitleBar )
Id = StringGadget(#PB_Any, 5, 5,390,30,"Ich bin")
MessageRequester("GadgetID", Str(Id))
SetGadgetText(id, "Hallo hier ist die ID " + Str(Id))
EndIf
EndProcedure
OpenSave()
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
End
Zum Glück hat der Kleber an den Schuhsohlen nichts getaucht.
Vielen Dank
Verfasst: 21.02.2009 21:51
von Kaeru Gaman
Code: Alles auswählen
WindowNr.l = OpenWindow( #PB_Any, 0,0, 200, 100, "Demo für #PB_Any" )
ButtonGadgetNr.l = ButtonGadget( #PB_Any, 10,10, 60,30, "Click" )
TextGadgetNr.l = TextGadget( #PB_Any, 10, 60, 180, 30, "Normal" )
FLAG = 0
Repeat
EventID = WaitWindowEvent()
EvGadgetID = EventGadget()
Select EventID
Case #PB_Event_Gadget
Select EvGadgetID
Case ButtonGadgetNr
If FLAG = 0
SetGadgetText( ButtonGadgetNr, "Pups" )
SetGadgetText( TextGadgetNr, "Geändert" )
FLAG = 1
Else
SetGadgetText( ButtonGadgetNr, "Click" )
SetGadgetText( TextGadgetNr, "Normal" )
FLAG = 0
EndIf
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
> Was ist denn nun mit over 10000? Ist halt so? Oder wie? Oder was?
JA!
NUMMERN von PB-Objekten, egal ob Fenster, Sprites, Gadgets, Images oder sonstwas, können nur von 0-9999 gesetzt werden.
IDs sind das selbe wie Handles, diese werden vom OS vergeben und können dementsprechend Werte annehmen.
wenn du ein Objekt mit einer festen Nummer erzeugst, muss diese unter 10000 liegen.
wenn du ein Objekt mit #PB_Any erzeugst, bekommst du
beim Erzeugen sein Handle zurück.
Verfasst: 21.02.2009 22:09
von Kaeru Gaman
> hab es gerade auch rausbekommen
als du das geschrieben hast, hatte ich den code auch fertig...
also testen!

Verfasst: 21.02.2009 22:09
von ts-soft
Kaeru Gaman hat geschrieben:
wenn du ein Objekt mit einer festen Nummer erzeugst, muss diese unter 10000 liegen.
Das ist eine Debugger Einschränkung, ohne Debugger
gehts, man sollte dann aber dynamisch und statische Erzeugung in diesem
Falle nicht mixen
Kaeru Gaman hat geschrieben:
wenn du ein Objekt mit #PB_Any erzeugst, bekommst du beim Erzeugen sein Handle zurück.
Falsch, Du bekommt den Pointer zur internen List, wenn Du
nicht #PB_Any
nutzt kommt das OS-Handle bei manchen Objekten!
Verfasst: 21.02.2009 22:14
von Kaeru Gaman
ts-soft hat geschrieben:Kaeru Gaman hat geschrieben:
wenn du ein Objekt mit #PB_Any erzeugst, bekommst du beim Erzeugen sein Handle zurück.
Falsch, Du bekommt den Pointer zur internen List, wenn Du nicht #PB_Any
nutzt kommt das OS-Handle bei manchen Objekten!
wus?
wie soll denn das funktionieren.
wenn das dynamisch erzeugte Objekt in der Liste steht, dann könnte man doch dynamische und statische Erzeugung
niemals vermischen.
außerdem, wieso sollte eine
Liste mit 10000 elementen erzeugt werden, wenn man nur eines mit Nr. 10000 erzeugt,
und wo sollten denn dann die dynamisch erzeugten stehen, nach 10000?
das ergäbe ja noch weniger sinn.
gibts dazu ausführliche Hintergrundinfos? wo?
Verfasst: 21.02.2009 22:18
von ts-soft
Bei #PB_Any kann er dir das OSHandle nicht geben, weil er Dir ja eine
dynamische ID geben muß (diese ist ein MemoryPointer)
Bei fester ID gibt er Dir bei manchen Objekten das Handle, ist sinnvoller als
ein einfaches #True
Verfasst: 21.02.2009 22:30
von Kaeru Gaman
ts-soft hat geschrieben:Bei #PB_Any kann er dir das OSHandle nicht geben, weil er Dir ja eine
dynamische ID geben muß (diese ist ein MemoryPointer)
das ist keine Begründung....
wieso sollte er nicht das Handle zurückgeben, er braucht doch keine ID im Sinne einer Nummer,
weil er keinen Index irgendeiner Objektliste braucht.
*grübel* ... oder ist das ein direkter Mem-Pointer, auf ein einzelnes PB-Objekt, das nicht bestandteil einer Liste, bzw. einer extra-liste ist?
das könnte ich nachvollziehen.