![forums.silverfrost.com Forum Index](templates/subSilver/images/logo_phpBB.gif) |
forums.silverfrost.com Welcome to the Silverfrost forums
|
View previous topic :: View next topic |
Author |
Message |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Sun Dec 17, 2006 1:19 pm Post subject: %lv edit_cells |
|
|
When editing a list view cell, typing normal characters results in a callback with reason 'EDIT_KEY_DOWN'. If for example, the delete key is pressed, no callback occurs and so the program is unaware of this type of change to the text. Surely this is an omission?
There is also no response to function keys, and the action of the TAB key can be quite strange.
FTN95 Version 4.9.1. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7931 Location: Salford, UK
|
Posted: Mon Dec 18, 2006 8:35 am Post subject: |
|
|
Ian
Thanks for this. I will add it to the list of things to investigate. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Mon Dec 18, 2006 1:26 pm Post subject: Trying to find a workaround |
|
|
Paul,
I used add_keyboard_monitor@, and am now able to detect the required key presses, however, I can't read the cell because
clearwin_string@('EDITED_TEXT'),
clearwin_info@('COLUMN_NUMBER')
clearwin_info@('ROW_NUMBER')
all produce no sensible result, due to the keyboard monitor having nothing to do with the list view. Is there some way to read an arbitary cell in the list view window?
Regards
Ian |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7931 Location: Salford, UK
|
Posted: Thu Dec 21, 2006 9:16 am Post subject: |
|
|
Ian
I think the data may be stored dynamically in the CHARACTER array in your code. If this is the case then you will be able to access the content of any cell directly.
Regarding the interactive processing of key strokes, the only temporary workaround that I can suggest is to try using %mg with WM_KEYDOWN. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Thu Dec 21, 2006 12:09 pm Post subject: % lv - edit cells |
|
|
Paul,
I tried looking in the character arrays, and these have to be updated manually in response to the callback, so that didn't work.
What does the %mg do - I havn't a clue - is there and example.
Using the add_keyboard_monitor@ worked but I can't read the cell contents. I looked listviews up on microsoft, see link.
http://msdn2.microsoft.com/en-us/library/system.windows.forms.listview.getitemat.aspx
but i have no idea how to call getitemat method in FTN95 or even whether this is the correct function to get the cell contents.
Help!
Ian |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7931 Location: Salford, UK
|
Posted: Fri Dec 22, 2006 8:57 am Post subject: |
|
|
Ian
At first sight it looks like the documentation for %lv in ftn95.chm is incomplete. Additional information can be found in the ClearWin enhancements file (probably cw.enh). You can return the value 4 from the callback to reject a character or an ascii value to translate to a different key. I guess other returned values will accept the key. You should be able to use the CHARACTER array to see what is in any cell.
%mg is documented in ftn95.chm. Examples are hard to come by. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Tue Feb 13, 2007 1:53 pm Post subject: Original and other problems with %lv |
|
|
I am still persevering with the %lv display and using it for editing and have a few other problems. The system I am writing allows for some columns to be editable and others to be display only. The problems are:
1. There is no callback response to the delete and backspace keys, so although it appears to have been edited, the result cannot be obtained.
2. Un-fathomable operation of the tab key.
3. When in a non-editable field, (callback result=4), in column 1, the field is highlighted and up-down cursor keys move from row to row, initiating an appropriate scroll at the control's boundaries. When in an editable field, the scroll does not happen.
4. When in an non-editable field, there is noway out of the field using the keyboard. Must resort to the mouse.
5. When a non-column 1, non-editable field is clicked, it is not highlighted, all sense of position is lost, i.e. different response to column 1.
6. When moving from one editable field to another, with keyboard cursor keys, there is no way to initiate a partial edit of the cell without resorting to the mouse. A function like Excel or Explorer, whereby F2 initiates an edit would be useful.
7. No way to determine the cursor character position within the field when the callback is initiated, or even to set this position.
Regards
Ian |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7931 Location: Salford, UK
|
Posted: Thu Feb 15, 2007 5:54 pm Post subject: |
|
|
Although I would like to help you with this, realistically the task is too large to attempt without direct funding. If you would like to single out one priority item from your list, I will add it to the list of jobs to do. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Thu Feb 15, 2007 7:16 pm Post subject: My priority |
|
|
Paul,
I would say that the highest priority is for the callback response, but could I suggest that the callback is initiated for all keys, maybe with a different callback reason, ('CONTROL_KEY_DOWN' perhaps). This would maintain backward compatibility. A new function of clearwin_info@('CONTROL_KEY') would then be useful to determine the intent of the keypress and leave the rest up to the programmer.
I would also be pleased if you could put the rest of these items on the list and ponder them in your own time. As far as direct funding is concerned, I might stretch to £20.00 above and beyond the maintainance that I have been paying for about the last 11 years. Sadly the users of the programs I write, seem to pay even less than I can stretch to, and they are all labours of love.
At the time of writing, this forum topic has had 463 views, (no! not all by me!) and it could therefore be dear to the hearts of others.
Regards
Ian Lambley |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7931 Location: Salford, UK
|
Posted: Thu Feb 15, 2007 7:31 pm Post subject: |
|
|
Forgive me if I am amused by the bit about "ponder them in your own time". However, my offer remains and if you want to supply sample code for your priority issue it would speed things up when I get to this item in the list of jobs. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Mon Mar 05, 2007 3:16 pm Post subject: % lv - edit cells |
|
|
You are forgiven for you amusement status, and I am glad that my comments are able to raise a smile. I have tried to e-mail you with some sample code, but the e-mails just seem to remain in the outbox and I do not know whether you receive them. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
JohnCampbell
Joined: 16 Feb 2006 Posts: 2556 Location: Sydney
|
Posted: Tue Mar 06, 2007 5:37 am Post subject: |
|
|
Paul,
I also have messages to you in my outbox, but no idea of how they get to the sent box, which I presume is where they would go when they are sent ??
Any advice on how the message system works ?
John |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7931 Location: Salford, UK
|
Posted: Tue Mar 06, 2007 9:52 am Post subject: |
|
|
I do not routinely read my message box on this forum. Questions that are potentially of general interest should be posted in the main forum. When directed I will pick up files that have been posted in my message box but I may need to be reminded.
I now have Ian's zip file and I will take a look at it as soon as I can.
John, I have now read your message and will send a reply. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Thu Mar 08, 2007 1:27 pm Post subject: Moving Forward |
|
|
A big thanks to "BB" who e-mailed me some code. It appears that the "EDITED_TEXT" function is best called when the edit is complete and the "END_EDIT" callback reason is in force. I was originally trying to use this within "EDIT_KEY_DOWN" to check the contents of the cell in response to each keystroke, something that I regularly do for the %rd, %rf & %rs formats. Instant updating of the calculation would then have been possible in the way that it is for those other controls. However, as the control callback does not respond to every keypress, then this did not work. I can now only use the data after exiting from the edited cell.
Other spurious events and responses still apply. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Wed Oct 01, 2008 1:22 pm Post subject: |
|
|
Paul,
I am still baffled with this one. It appears that if a cell is selected for editing and the text is changed, then if the user moves to another cell using the mouse, the callback reason sequence is "END_EDIT" followed by a "BEGIN_EDIT" for the newly selected cell. If the user exits using the return or a cursor key, then the callback sequence is "BEGIN_EDIT", "END_EDIT", "BEGIN_EDIT".
In my code I use "BEGIN_EDIT" to determine the cell being edited and so because an extra one is initiated with keys movement mode, the edited contents of the previous cell are deposited in the the newly selected cell.
I would appreciate a bit of help.
Regards
Ian
[code:1:38baf1dbef]
winapp
include <windows.ins>
character*100 text,singular_text,temporary_text
common/callback_status/in_callback
common/lv_data/text(5),singular_text(10,4),temporary_text
COMMON/LV_INFO/IROW,ICOL,irow_last,icol_last,ichanged
character*20 callback_history
common/cb_hist/callback_history(1000)
common/cb_hist_number/nhist,irows(1000),icols(1000)
integer*4 sel(4),view
external lv_callback
callback_history=' '
nhist = 0
in_callback = 0
irow_last = 0
icol_last = 0
irow = 0
icol = 0
sel=0
view=1
text=' '
do i=1,4
singular_text(1,i)='one'
singular_text(2,i)='two'
singular_text(3,i)='three'
enddo
do i=1,4
do j=1,3
text(i+1)=trim(text(i+1))//'|'//trim(singular_text(j,i))
enddo
enddo
!text='||| '
text(1)='|a1_|a2_|a3_'
i=winio@('%ca[LV edit test]%ww&')
i=winio@('%^lv[show_selection_always,edit_cells,full_row_select,go_down_on_return]',500,200,text,5,sel,view,lv_callback)
print 100,(trim(text(i)),i=1,5)
do i=1,nhist
print*,i,callback_history(i),irows(i),icols(i)
enddo
100 format(a)
end
integer*4 function lv_callback()
include <windows.ins>
!character*100 edited_cell
common/callback_status/in_callback
COMMON/LV_INFO/IROW,ICOL,irow_last,icol_last,ichanged
character*100 text,singular_text,temporary_text
common/lv_data/text(5),singular_text(10,4),temporary_text
character*20 callback_history
common/cb_hist/callback_history(1000)
common/cb_hist_number/nhist,irows(1000),icols(1000)
lv_callback=2
!if(in_callback .eq. 0)then
! in_callback = 1
nhist = nhist + 1
callback_history(nhist) = clearwin_string@('callback_reason')
! print *,clearwin_string@('callback_reason')
if(clearwin_string@('callback_reason') .eq. 'BEGIN_EDIT')then
! irow_last = irow
! icol_last = icol
! print *,'clearwin_info@(''ROW_NUMBER'') ',clearwin_info@('ROW_NUMBER')
! print *,'clearwin_info@(''COLUMN_NUMBER'')',clearwin_info@('COLUMN_NUMBER')
irow=clearwin_info@('ROW_NUMBER')
ICOL=clearwin_info@('COLUMN_NUMBER')
endif
if(clearwin_string@('callback_reason') .eq. 'END_EDIT')then
! print *,'clearwin_string@(''EDITED_TEXT'')',clearwin_string@('EDITED_TEXT')
temporary_text = clearwin_string@('EDITED_TEXT')
irow_use = irow
icol_use = icol
if(icol_last .ne. icol)then
if(icol_last .ne. 0)icol_use = icol_last
endif
if(irow_last .ne. irow)then
if(irow_last .ne. 0)irow_use = irow_last
endif
if(temporary_text .ne. singular_text(icol_use,irow_use))then
ichanged = 1
singular_text(icol_use,irow_use)=clearwin_string@('EDITED_TEXT')
text(irow_use+1)=' '
do j=1,3
text(irow_use+1)=trim(text(irow_use+1))//'|'//trim(singular_text(j,irow_use))
enddo
call window_update@(text)
else
ichanged |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|