Silverfrost Forums

Welcome to our forums

Tabbing between controls in 64bit

24 Jun 2023 8:10 #30395

I find that tabbing between controls acts differently in Win32 and X64.

I have a maine page with three property sheets. In the main page there is a %RS and two %`RS controls.

Within the propert sheets there are various %RF controls and a few %RF controls and a %RB.

When the program opens, the cursor is positioned at the first control in the first property sheet. After entering data, I 'TAB' to the second control etc.

In win32, the cursor jumps to the next control in the property sheet, as expected and desired.

In x64, when 'Tab' is pressed, the cursor jumps to the %RS control in the main page and stays there with no change no matter how many times 'TAB' is pressed.

Has there been a change in X64? The win32 response is as expected.

24 Jun 2023 12:50 (Edited: 24 Jun 2023 1:02) #30396

This short example reproduces the issue described by Ian.

program ian
use clrwin
implicit none
integer, parameter :: dp = kind(1.d0)
real(dp) :: r(12) = [1,2,3,4,5,6,7,8,9,10,11,12]
integer sheet1, sheet2, sheet3
integer iw
iw = winio@('%mn[Exit]&','exit')

iw = winio@('%sh&',sheet1)
iw = winio@('%ca[Sheet 1]&')
iw = winio@('%rf&',r(1))
iw = winio@('%nl%rf&',r(2))
iw = winio@('%nl%rf&',r(3))
iw = winio@('%nl%rf&',r(4))
iw = winio@('')

iw = winio@('%sh&',sheet2)
iw = winio@('%ca[Sheet 2]&')
iw = winio@('%rf&',r(5))
iw = winio@('%nl%rf&',r(6))
iw = winio@('%nl%rf&',r(7))
iw = winio@('%nl%rf&',r(8))
iw = winio@('')
 
iw = winio@('%sh&',sheet3)
iw = winio@('%ca[Sheet 3]&')
iw = winio@('%rf&',r(9))
iw = winio@('%nl%rf&',r(10))
iw = winio@('%nl%rf&',r(11))
iw = winio@('%nl%rf&',r(12))
iw = winio@('')

iw = winio@('%ca[Main]&')
iw = winio@('Cannot tab between controls with X64%2nl&')
iw = winio@('%3ps&',sheet1,sheet2,sheet3)
iw = winio@('')
end program ian
24 Jun 2023 12:57 #30397

Kenneth, Thanks for showing that independently, I thought I was going slightly mad! Regards Ian

24 Jun 2023 1:08 #30398

And with the addition of the %rs at the top of the form, it really does something strange.

program ian
use clrwin
implicit none
integer, parameter :: dp = kind(1.d0)
real(dp) :: r(12) = [1,2,3,4,5,6,7,8,9,10,11,12]
integer sheet1, sheet2, sheet3
integer iw
character*20 title
Title = 'This is a %rf'
iw = winio@('%mn[Exit]&','exit')

iw = winio@('%sh&',sheet1)
iw = winio@('%ca[Sheet 1]&')
iw = winio@('%rf&',r(1))
iw = winio@('%nl%rf&',r(2))
iw = winio@('%nl%rf&',r(3))
iw = winio@('%nl%rf&',r(4))
iw = winio@('')

iw = winio@('%sh&',sheet2)
iw = winio@('%ca[Sheet 2]&')
iw = winio@('%rf&',r(5))
iw = winio@('%nl%rf&',r(6))
iw = winio@('%nl%rf&',r(7))
iw = winio@('%nl%rf&',r(8))
iw = winio@('')
 
iw = winio@('%sh&',sheet3)
iw = winio@('%ca[Sheet 3]&')
iw = winio@('%rf&',r(9))
iw = winio@('%nl%rf&',r(10))
iw = winio@('%nl%rf&',r(11))
iw = winio@('%nl%rf&',r(12))
iw = winio@('')

iw = winio@('%ca[Main]&')
iw = winio@('Title: %rs%ff&',Title)
iw = winio@('Cannot tab between controls with X64%2nl&')
iw = winio@('%3ps&',sheet1,sheet2,sheet3)
iw = winio@('')
end program ian 
24 Jun 2023 3:10 #30399

The difference between Win32 and X64 is also apparent when the individual sheets are displayed in a MDI window.

program ian2
use clrwin
implicit none
integer, parameter :: dp = kind(1.d0)
real(dp) :: r(12) = [1,2,3,4,5,6,7,8,9,10,11,12]
integer sheet1, sheet2, sheet3, main2
integer iw
iw = winio@('%mn[Exit]&','exit')
iw = winio@('%ww&')
iw = winio@('%ca[Main]&')
iw = winio@('%ff%pv%fr&',800,600)
iw = winio@('%lw&',main2)
iw = winio@('%sc&','tile_vertically')
iw = winio@('')

iw = winio@('%aw&',main2)
iw = winio@('%ca[Sheet 1]&')
iw = winio@('%rf&',r(1))
iw = winio@('%nl%rf&',r(2))
iw = winio@('%nl%rf&',r(3))
iw = winio@('%nl%rf&',r(4))
iw = winio@('%lw',sheet1)

iw = winio@('%aw&',main2)
iw = winio@('%ca[Sheet 2]&')
iw = winio@('%rf&',r(5))
iw = winio@('%nl%rf&',r(6))
iw = winio@('%nl%rf&',r(7))
iw = winio@('%nl%rf&',r(8))
iw = winio@('%lw',sheet2)
 
iw = winio@('%aw&',main2)
iw = winio@('%ca[Sheet 3]&')
iw = winio@('%rf&',r(9))
iw = winio@('%nl%rf&',r(10))
iw = winio@('%nl%rf&',r(11))
iw = winio@('%nl%rf&',r(12))
iw = winio@('%lw',sheet3)

end program ian2
24 Jun 2023 4:48 #30400

Thank you for the feedback. I have made a note of this failure.

26 Jun 2023 7:18 #30401

These issues have now been fixed for the next release of the DLLs.

27 Jun 2023 7:48 #30402

When can I get a copy of these dlls?

28 Jun 2023 6:41 #30403

I have uploaded new DLLs this morning. See https://forums.silverfrost.com/Forum/Topic/3780.

Please login to reply.