Programmerare, skeptiker, sekulärhumanist, antirasist.
Författare till bok om C64 och senbliven lantis.
Röstar pirat.
2010-07-09
Edit: This post concerns “The Wall”, a discontinued project.
GetItemAt
The GetItemAt function returns the graphical item (text item, bar item, numeric item) that exists at a given position, in characters. If no item exists at the given position, the value Nothing will be returned (null). The GetItemsAt function also takes a position (X and Y) as argument but GetItemsAt will always return a collection object. If no graphical items exist at the given position, the collection will be empty. If more than one item exists at the given position, all of the items will be returned in that collection.
This first example will register two text items. Both of them will be static (that is, they will not auto update). The value of the first one will be Apples and the value of the second one will be Pears. Also, the program registers a callback for mouse clicking. If you click on Apples, a message box will show the word Apples, if you click on Pears, a message box will show the word Pears.
To start off, this code will register the items:
BackgroundColor = "#000000" RegisterTextItem 0, "ApplesItem", 4, 2, "#ffffff", "InitApplesItem" RegisterTextItem 0, "PearsItem", 4, 3, "#ffffff", "InitPearsItem" Sub InitApplesItem(ByVal Item) Item.Value = "Apples" End Sub Sub InitPearsItem(ByVal Item) Item.Value = "Pears" End Sub
And this is the complete source code. Here I register a callback function to detect clicks, and from there I use the GetItemAt function to see what item the user clicked on.
BackgroundColor = "#000000" RegisterTextItem 0, "ApplesItem", 4, 2, "#ffffff", "InitApplesItem" RegisterTextItem 0, "PearsItem", 4, 3, "#ffffff", "InitPearsItem" RegisterClickCallback "Click" Sub InitApplesItem(ByVal Item) Item.Value = "Apples" End Sub Sub InitPearsItem(ByVal Item) Item.Value = "Pears" End Sub Sub Click(ByVal X, ByVal Y) Set Item=GetItemAt(X, Y) If Not Item Is Nothing Then MsgBox Item.Value End If End Sub
GetItemsAt
This is a constructed example to show how to use the GetItemsAt function. I am sure you can think of more and better examples.
This program holds a bar item and a text item overlaying the bar item. You want to detect clicks on any bar item in the program. This code adds the text and bar items, it also registers a click callback called Click. The click callback uses the GetItemsAt function to determine if the bar was clicked.
BackgroundColor = "#000000" Bar=RegisterBarItem(1, "B", 3, 2, "#5599aa", "UpdateBar") GetItem(Bar).Size = 11 GetItem(Bar).ValueVisible = False RegisterTextItem 0, "T", 4, 2, "#ffffff", "InitText" RegisterClickCallback "Click" Sub InitText(ByVal Item) Item.Value = "Some text" End Sub Sub UpdateBar(ByVal Item) Item.Value=Round(Rnd() * 100) End Sub Sub Click(ByVal X, ByVal Y) Set Items=GetItemsAt(X, Y) For Each Item In Items If Item.TypeName = "BarItem" Then MsgBox "You have clicked on a bar named " & Item.Name & "." End If Next End Sub
Note how the click callback function filters out any bar items from the collection, and displays the name of them (just one in this case).
Categories: Programs
Tags: The Wall
Bjud mig på en kopp kaffe (20:-) som tack för bra innehåll!
Leave a Reply