CORONA: HOW TO HIDE AND VISIBLE A TEXT IN CORONA - text

I have a function and ... the explanation is that I need to display the text in scaling when my count reaches 10 until then it should be hidden...
local text2 = display.newText("BOOM", 60,20)
function scale( event )
if(appleCount == 10) then
if text2.contentWidth < 1.5 * display.contentWidth then
text2:scale(1.02, 1.02)
else
text2:scale(0.1, 0.1)
Runtime:removeEventListener("enterFrame",scale)
end
end
end
Runtime:addEventListener("enterFrame",scale)

text1.alpha=0--it hide the object
text1.alpha=1--it visible
alpha range is 0,0.1,0.2,.,.,1
isVisibile=true or false --it make some time warning

text.isVisible = true --visibles the text
text.isVisible = false -- hides the text

You can use object.alpha =0 for making it invisible and object.alpha=1 for making it visible;
The alpha value ranges from 0 to 1 .By using this you can control transparency of object.

Related

Visio Shape Text positioning below the shape using Text Transform

I have a building a set of stencil shapes and I need the text to display below the shape. I am using custom formulas to generate the text, and as such the volume of text changes from use case to use case.
What I have come across is using the Text Transform set of properties, and I have tried the following with success for a single line of text:
TxtWidth = TEXTWIDTH(TheText)
TxtPinX = Width * 0.5
TxtLocPinX = TxtWidth * 0.5
TxtHeight = Height * 0
TxtPinY = Height * -0.2
TxtLocPinY = TxtHieght * 0.5
TxtAngle = 0 deg
The problem arises when there is more than a single line of text to display -> the text appears 'half above (inside) and half below' the bottom the shape.
I would like to place all the text, regardless of how many lines there are, underneath the shape.
What I have tried is to set the TxtPinY = some formula different from above eg/ Height * -(TxtHeight). This seems to always result in an 'error in formula'.
I am sure that this is something simple that I am missing, but I cannot figure it out.
Can anybody point me in the right direction?
Cheers and thanks for taking a look at this,
The Frog
You could try the TEXTHEIGHT function to get around this. Specify a reasonable maximum text widht as a second parameter for it:
TxtHeight = TEXTHEIGHT(TheText,100)
TxtPinY = 0
TxtLocPinY = TxtHeight
You can use the code provided with the stencil available in this post:
http://visguy.com/vgforum/index.php?topic=7461.msg31490#msg31490

How do I make an Excel ActiveX label to be transparent ... at runtime?

I want to put a transparent label on top of a sheet in Excel, so that I can take advantage of the MouseMove event of the label to "draw cells" (aka change their fill color and so on) by mouse click / drag / etc. - since I can't do that on the cells per se.
Now everything works just fine, except that I can't make the label transparent at runtime (aka in VBA) ... while by doing exactly the same thing in Design Mode works as expected. Specifically, I have the code (more or less):
Dim MapLabel As OLEObject
On Error Resume Next
Sheet2.OLEObjects("MapLabel").Delete
Set MapLabel = Sheet2.OLEObjects.Add("Forms.Label.1")
MapLabel.name = "MapLabel"
MapLabel.Placement = xlMoveAndSize
MapLabel.Object.Caption = ""
' Problem line below
MapLabel.Object.BackStyle = fmBackStyleTransparent
' Problem line above
MapLabel.Left = Sheet2.cells(2, 6).Left
MapLabel.Top = Sheet2.cells(2, 6).Top
MapLabel.Width = Sheet2.cells(2,6).Width * 10
MapLabel.Height = Sheet2.cells(2,6).Height * 10
So, in words, I first delete the label named 'MapLabel', then recreate it (the above code goes into a "init" Sub). All the code lines except the one marked produce the desired result. The marked one does set the BackStyle property of the label to fmBackStyleTransparent ... but it doesn't actually make the label transparent. This is frustrating, because it's the same approach that works flawlessly at design time!
Do you have a solution to this? I read about solving similar problems by declaring the label as MsForms.Label or as Control, but the sheet object doesn't have those properties, plus, there are far more label properties which can be set using the OLEObject than with the help of MsForms.Label or Control.
All you need to do after this line:
MapLabel.Object.BackStyle = fmBackStyleTransparent
put this line:
ActiveSheet.Shapes(MapLabel.Name).Fill.Transparency = 1
I hope I helped.
P.S. If you need explanation i will edit my answer.
I had the same problem as you but in Word. The solution for me was to do the following:
In design mode:
Right click on the object
Navigate to Switch to automatic form/Image > Wrapping > In front of the text
Add an empty picture to your label

Set Color of Chart lines and markers according to the color of other lines and markers in vba

I am trying to set the color of even lines and markers according to the color of odd lines and colors.
Let's say, my table looks like this (speed1, performance1, speed2, performance2,.....)
When I plot a line chart It just gives every line a different color. In my case I want to give every two columns (speed and performance) a single color. So, for that I try every time to take the color of a line and the color of its markers, and then assign these colors to the following line (color of odd columns to even columns).
This is my code:
Sub ChangeColors()
Dim cht As Chart
Dim ser As Series
Set cht = ActiveChart
For i = 1 To cht.SeriesCollection.Count
If (i Mod 2) = 0 Then
Set dst = cht.SeriesCollection(i)
Set src = cht.SeriesCollection(i - 1)
dst.Format.Line.Visible = msoFalse
dst.Format.Line.Visible = msoTrue
dst.Format.Line.ForeColor.RGB = src.Format.Line.ForeColor.RGB
dst.Format.Fill.ForeColor.RGB = src.Format.Fill.ForeColor.RGB
End If
Next i
End Sub
The problem is that at the end all the even lines become black. However, when I try to pick a RGB color (for instance, RGB(255, 0, 0)) an assign it to the even lines they all become red, so it works.
UPDATE:
When I use a MsgBox to print the value of src.Format.Line.ForeColor.RGB and src.Format.Fill.ForeColor.RGB I get 16777215 and 0 respectively for all lines. So I don't understand why these values and why they are the same for all lines ?
Does anyone know what is the problem with my code ?
Thank you !
Should this line:
dst.Format.Line.ForeColor.RGB = src.Format.Fill.ForeColor.RGB
instead be:
dst.Format.Line.ForeColor.RGB = src.Format.Line.ForeColor.RGB

Trying to hide labels on button if color is red in visual studio

This will only work for the labels sender but, I need to use this also for the button sender so it can hide if the label is red only when the button is clicked.
I have 48 Seats
Private Sub Label_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Seat9.Click, Seat8.Click, Seat7.Click, Seat6.Click, Seat5.Click, Seat48.Click, Seat47.Click, Seat46.Click, Seat45.Click, Seat44.Click, Seat43.Click, Seat42.Click, Seat41.Click, Seat40.Click, Seat4.Click, Seat39.Click, Seat38.Click, Seat37.Click, Seat36.Click, Seat35.Click, Seat34.Click, Seat33.Click, Seat32.Click, Seat31.Click, Seat30.Click, Seat3.Click, Seat29.Click, Seat28.Click, Seat27.Click, Seat26.Click, Seat25.Click, Seat24.Click, Seat23.Click, Seat22.Click, Seat21.Click, Seat20.Click, Seat2.Click, Seat19.Click, Seat18.Click, Seat17.Click, Seat16.Click, Seat15.Click, Seat14.Click, Seat13.Click, Seat12.Click, Seat11.Click, Seat10.Click, Seat1.Click
Dim Seats As Label = CType(sender, Label)
If Seats.BackColor = Color.White Then
Seats.BackColor = Color.Red
Else
Seats.BackColor = Color.White
End If
Okay, I think I understand now.
You have multiple labels which represent seats and when the user clicks on the labels they change from white to red.
You are wanting to create a button that once clicked, it removes all red labels from the screen/form.
You would place the following in the click event of your button (assuming that your form is called frmMain)
For Each c As Control in frmMain.Controls
Dim l As Label = DirectCast(c, Label) ' Cast from control to label
If Not l Is Nothing ' If this control is indeed a label then process
If l.BackColor = Color.Red Then ' If color is red then hide label
l.Visible = False
Else
l.Visible = True
End If
l.Visible = False
End If
Next
I don't have VS pulled up, so syntax may be a little incorrect but I think you get the point.

How to fix an Excel listbox that can't scroll the last element into view

A killer problem I've had in excel UIs since as long as I can remember, is with listbox scrolling.
When you have more elements in a listbox that can be displayed, a scoll bar will appear. In certain conditions, however, scrolling the bar all the way to the bottom of the list and releasing it, will "jump" the bar a notch upwards, and you won't be able to see the last item in the list. This is illustrated here:
There are many forum posts presenting this issue, and the solution has always been "Set the integral height property to false, and then set it to true again." What this does is slightly resize the listbox so that it the height is rounded to the height of a single row, and then no items are left hidden.
With lstbox
.IntegralHeight = False
.Height = myHeight
.IntegralHeight = True
End With
There are certain cases, however, where this does not work. If you are:
Programatically setting the height of your listbox
NOT using simple listbox selection (fmMultiSelectSingle)
Then simply setting integral height to false and then true after or between changes to height will make an adjustment to the height of your listbox, but when you go to scroll down, the problem will remain - the last item cannot be seen.
The key to this frustrating question is that while everyone else on the internet is confirming that the 'integralHeight' solution works for them, these very special cases are frustrated wondering why it doesn't work for them. So how do they get their fix?
Something I had to discover for myself, and which cannot be found anywhere else (which is why I'm posting it here), is that this problem had the added dimension of being dependent on the selection method. While I cannot fathom how the way the scroll bar works is related to not only the height and integral height property, but also the .MultiSelect property, I have found that it is.
When the .IntegralHeight method shown above does not work, the following method somehow does:
With lstbox
.IntegralHeight = False
.Height = myHeight
.IntegralHeight = True
.MultiSelect = fmMultiSelectSingle
.MultiSelect = fmMultiSelectExtended
End With
By simply changing the .MultiSelect property to fmMultiSelectSingle, and then restoring it back to the selection style desired, the height of the listbox will be automatically adjusted by the .IntegralHeight property to a slightly different height than when these actions aren't performed - the difference results in the scroll bar working correctly:
I hope the discovery of this special case and more precise workaround saves someone the hours of frustration and experimentation I had to go through.
i know this is very old post.
but i've been through a lot to fix this problem, so i just wanna share my tip. :)
first of all,
integralheight method doesn't work when worksheet zoom level is not 100%.
it will change listbox height and width, location, etc. (even if you set object property 'doesn't move or reseize with cell')
and when you try to take it its original size and location with code to fix this, this time its last item can't be seen
my tip is simple.
there's combination between font size and listbox height.
if your font size is 6-10(arial, regular), listbox height goes well with multiples of 12.75 (btw my list box style is 1 : ListStyle, 1-fmListStyleOption. it could be different with style 0)
as long as height is same with these multiples of 12.75, there will be no problem.
in case of font size 12(arial, regular), it's multiples of 13.55
so if there's no restiction about listbox size in your project, just resizing it slightly depending on your font size gives more comfort. :)
I had to anchor the position since my ListBox was walking across the page:
With ListBox1
.IntegralHeight = False
.IntegralHeight = True
.Height = 45
.Width = 69
.Top = 0
.Left = 1255.5
End With
With lstbox
`.Height = myHeight`
`.MultiSelect = fmMultiSelectExtended`
`.MultiSelect = fmMultiSelectSingle`
End With
This worked for me. No need of setting Integral height property
In my case the solution was this method:
with listbox
.IntegralHeight = False
.Height = myHeight
.Width = myWidth
.IntegralHeight = True
.Height = myHeight
.Width = myWidth
end with
Enjoy.
found ridiculously simple way to resolve this issue. adjust your height up or down a little bit so bottom line of list box is between check boxes, then you can scroll down to last item even if IntegralHeight is set to false
Thanks Alain. Your fix worked well for me.
I found a subsequent problem related to the height of the ListBox when resized, that it varied in an unpredictable way depending on the initial height. The resized height was different again when displayed on another machine with 125% text scaling. For example, if I set a height between 358 and 370, the resized height is either 370.65 or 371.4 on my machine but on the machine with 125% text scaling, it is 360.1, 370.25 or 380.45. With such large variability, the result was that the ListBox could obscure other controls below it.
The fix was to start with the maximum height I wanted and reduce the initial height until the resized height was less than the maximum height I wanted. I do this whenever I display that ListBox.
Hmax = 372 'Target Height
H1 = Hmax
With SteelForm.Controls.Item("ListBox1")
Do
H1 = H1 - 1
.IntegralHeight = False
.Height = H1
.IntegralHeight = True
.MultiSelect = fmMultiSelectSingle
.MultiSelect = fmMultiSelectExtended
DoEvents
Loop Until .Height < Hmax
End With
What I've seen in the past on forums is just adding an extra blank row to your list box. That should do it.
Just set the Integral Height property to True

Resources