I create 2 images for slide show but I have a problem. My problem is when the first image fade to the second image. The stack freeze. When image fade finish, the stack back to normal.
Code.
command aniFadehide curF
Switch noFa
case 1
lock screen for visual effect in rect (the rect of img 1 of grp curF)
show img 2 of grp curF
hide img 1 of grp curF
unlock screen with visual effect dissolve very fast
add 1 to noFa
break
case 2
lock screen for visual effect in rect (the rect of img 1 of grp curF)
show img 1 of grp curF
hide img 2 of grp curF
unlock screen with visual effect dissolve very fast
put 1 to noFa
break
end Switch
send "aniFadehide curF" to me in 3 secs
end aniFadehide
There are a few things I do before using visual effects. First, I always load QT by getting the QTVersion. This may no longer apply to LiveCode 7, unless you set the dontUseQT to false.
Second, I execute a visual effect invisible to make sure that I have the "freeze" behind me before I really need visual effects. E.g.
on openStack
lock screen for visual effect
// nothing here, but you can but something if you want
unlock screen with visual effect dissolve very fast
pass openStack
end openStack
This handler execute a visual effect, but because you don't go to a different card and don't show or hide controls, the use is just thinking that s/he waiting for the software to start up.
Next, you seem to have a little error in your script, as put 1 to noFashould be put 1 into noFa.
There may also be an issue with your global or local variables. So, I made a working script and will post it here. This script would run in a button.
global noFa
local lCounter
on mouseUp
put the pendingMessages into myMsgs
filter myMsgs with "*aniFadehide*"
repeat for each line myLine in myMsgs
cancel item 1 of myLine
end repeat
put 1 into noFa
put 0 into Counter
aniFadehide 1
end mouseUp
command aniFadehide curF
add 1 to lCounter
Switch noFa
case 1
lock screen for visual effect in rect (the rect of img 1 of grp curF)
show img 2 of grp curF
hide img 1 of grp curF
unlock screen with visual effect dissolve very fast
add 1 to noFa
break
case 2
lock screen for visual effect in rect (the rect of img 1 of grp curF)
show img 1 of grp curF
hide img 2 of grp curF
unlock screen with visual effect dissolve very fast
put 1 into noFa
break
end Switch
if lCounter < 10 then
send "aniFadehide curF" to me in 3 secs
end if
end aniFadehide
Related
Within a player, I would like to allow the user to manually drag the boundaries of the selection (start time and end time).
I can use a dragStart message to catch if the user start to drag, but I can't get the final positions of the elements, because I don't know when the user stop to drag.
I have tried something like this:
on dragStart
repeat until the mouse is up
/*unfortunately, this part freeze the player*/
end repeat
put the timeScale of me into sr
put the endTime of me into endT
put endT/sr
end dragStart
But the player is frozen with the wait command. So the user can't move the boundaries, and I can't get the final position of the "endTime".
How to wait until the mouse is up, but without frozen the player?
There are many ways to get out of that blocking loop, waiting "with messages" or sending a message in time within a handler, which releases the engine during the interval. But the most basic might be something like this, if you will try an experiment. Make a button and a field on a new card. In the button script:
on dragStart
put the loc of me into line 1 of fld 1
end dragStart
on mouseMove
if the mouseLoc is within the rect of me and the mouse is down then
set the loc of me to the mouseLoc
end if
end mouseMove
on mouseup
put the loc of me into line 2 of fld 1
end mouse up
Now this is overdone, but at least shows how you can use small handlers to deal with small issues.
This could finally be achieved with a very simple code (as often with livecode):
on selectionchanged
put the timeScale of me into sr
put the endTime of me into endT
put endT/sr into fld 1
end selectionchanged
I have a code that moves a group of control when the keyboard is activated. But I only want it to run when the keyboard is covering the control that activated the keyboard. I am using the code below but it is not correctly determining when the control is hidden by the keyboard.
Stack Script
lStackSize,lStackHeight
global gBottom
on openstack
set the fullscreenmode of me to "exactFit"
put the loc of group "controls" into lStackLoc
put the effective working screenRect into lStackSize
put item 4 of lStackSize - item 2 of lStackSize into lStackHeight
end openstack
-------------------------------
on keyboardactivated
answer "control bottom" && gbottom
put the effective working screenRect into tStackSize
set itemdel to comma
put item 4 of tStackSize - item 2 of tStackSize into tStackHeight
answer "tStackHeight" && tStackHeight & return & "gbottom" && gBottom
if gbottom<tStackHeight then
answer "control Visible"
else
answer"control Hidden"
put gbottom - tStackHeight into tYMove
put item 2 of lStackLoc - tYMove into tNewLocY
put item 1 of lStackLoc & "," & tNewLocY into tStackLoc
move group "controls" to tStackLoc
end if
end keyboardactivated
---------------------------
on keyboardDeactivated
move group "controls" to lStackLoc
end keyboardDeactivated
control script
global gBottom
on openfield
put the bottom of me into gBottom
end openfield
The effective screenRect refers to the rectangle that is actually available on screen (visible the part of the screen that is really used by the app). The working screenRect is the part of the screen that isn't used by e.g. the status bar.
put the effective working screenRect into myRect
if the topleft of control x is not within myRect \
or the bottomright of control x is not within myRect then
// control x is outside the visible part of the window
end if
The working screenRect might be sufficient, but the docs specifically refer to the keyboard when discussing effective
How to limit the items in the popup. "Sar" array contains lot of words, with respect to the selection. if my first popup contains 15 items and did the change. when going to the next popup, if it contains 10 items, the remains 5 items from the first also added to the second popup options.
How to kill that buffer in popup menu items? Iam using this code
global jar,myjar,sam,mySam,Dic,Sar
on mouseUp pMouseButton
put the selectedText of field "MytextField" into Ftext
if pMouseButton = 3 then
put the number of lines of (the keys of sam) into mySam
repeat with i = 1 to mySam
if sam[i] contains Ftext then
put sam[i] into Sar
split Sar by comma
end if
end repeat
put the text of button "M" into tText
put the number of words of (the keys of Sar) into mylength
repeat with x = 1 to mylength
put Sar[x] into line x of tText
end repeat
put mylength into kk---now iam using this code for delete the buffer
----repeat with j = kk to 100
---put "" into line j of tText
---end repeat
set the text of button "M" to tText
popup button "M" at the clickLoc
else
--popup button "M" at the clickLoc
-- do other stuff here
end if
end mouseUp
Is any option for limit the items in popup. Example:- if popup contains 15 items, i want to see only 10 items, remaining 5 could be see only clicking the bottom button in the popup
You are using globals which might not be what you want.
Try emptying the global with put empty into Sar before adding some new values or use locals which will be emptied after your code is done.
I have an old VC6 application to maintain.
When it starts, it shows the system buttons (minimize, maximize, close) in the usual Windows 7 or Windows 8 style.
As soon as I do an operation that triggers a redraw (SetMenu, move the window…), these buttons change to a Windows 2000 style (just gray boxes with black icons). We have other applications (VC6 as well) that do not have this behaviour.
Any idea where I should start to look ?
Edit:
After more investigation, I found that a call to DrawFrameControl is causing all this trouble:
CWindowDC dcWnd(this);
CRect rectWindow, rectClient;
GetWindowRect(&rectWindow);
m_rectDisconnectButton.left = rectWindow.Width() - DISC_BUTTON_WIDTH 6;
m_rectDisconnectButton.top = ::GetSystemMetrics(SM_CYCAPTION) + 4;
m_rectDisconnectButton.right = m_rectDisconnectButton.left + DISC_BUTTON_WIDTH;
m_rectDisconnectButton.bottom = m_rectDisconnectButton.top + BUTTON_HEIGHT;
if ( m_bDisconnectButtonPressed )
dcWnd.DrawFrameControl(&m_rectDisconnectButton, DFC_BUTTON, DFCS_BUTTONPUSH | DFCS_PUSHED);
If I comment the last call, obviously my button will not be drawn, but I no longer have the issue with the "system buttons".
I made a stack that displays lines of text that change their width when the stack is resized.
The Category columns is changing its position on resizing but the check box does not.
What am I missing in the code? What changes have to be made?
See the code in the stack that can be downloaded here:
https://dl.dropboxusercontent.com/u/99863601/Data%20grid%20Form-variable%20line%20height%2Bcheckbox.zip
Thanks in advance.
keram
If I understand what you are trying to achieve here then in your LayoutControl handler make the following change:
-- put the rect of btn "btnCheck" of me into theFieldRect
-- put item 3 of pControlRect - 5 into item 3 of theFieldRect
-- set the rect of btn "btnCheck" of me to theFieldRect
set the left of btn "btnCheck" of me to the right of fld "cat" of me
However I think the resizing of the Cat field is wrong too. Try something like:
on LayoutControl pControlRect
set the right of btn "btnCheck" of me to item 3 of pControlRect-4
set the right of fld "Cat" of me to the left of btn "btnCheck" of me
get the rect of fld "Line" of me
put the left of fld "Cat" of me into item 3 of it
set the rect of fld "Line" of me to it
put the formattedHeight of fld "Line" of me + item 2 of it into item 4 of it
set the rect of fld "Line" of me to it
put item 4 of it into item 4 of pControlRect
set the rect of graphic "Background" of me to pControlRect
end LayoutControl
To edit the LayoutControl script you need to open the datagrid property inspector and click on the Row Behavior... button. This will present the script editor for the behavior of the row template.
Because the DataGrid doesn't have this feature. If you would use the Geometry manager, the GM propeties are not copied from the checkbox in the template to the checkboxes in the actual DG. So, the GM won't work. Perhaps you could write a script of your own that sets the right of all checkboxes to a position relative to the width of the card:
on resizeStack
lock screen
repeat with x = 1 to number of buttons
if the style of btn x is "checkbox" then
set the right of btn x to the width of this cd - 100
end if
end repeat
unlock screen
end resizeStack
Unfortunately, this doesn't work with the datagrid either, because the DG also does some (or a lot) resizing of its own.
It would be much easier to create your own.