This post is more for completeness and so hopefully help someone someday.
i now have my code working as i want it to so am posting it here.
and as you can see i have had to rework it from my original post.
please note ...
that I have had to use a case statement inside the keypress do block.
created a define block for the if tests and the actual test has changed
to
check on the length of the text as apposed to nil or false as before.
would've liked to have the :enter & "\n" in 1 when clause to have saved
the
define but i couldn't figure it out (after using some like values -
semi-comma
& comma, space).
hope this helps someone in future,
Dave.
#require "sqlite3_calls"
Shoes.app do
# extend Dbase
def what_has_data
if @custno.text.length > 0
alert 'cust number has a value !'
# rows = rec_to_find('customers', 'cust_nos', @custno)
else
if @custname.text.length > 0
alert 'cust name has a value !'
end
end
end
stack :top =>5, :height => 90 do
title "Find Customer Info", :align => 'center'
end
flow :top => 100 do
para strong "Customer nos"
@custno = edit_line :width => 50
para strong 'customer name'
@custname = edit_line :width => 270
keypress do |key|
case key
when :enter
what_has_data
when "\n"
what_has_data
end
end
end
stack :top => 250 do
para strong 'data return shown here!'
end
end
On Wednesday 10 June 2009 09:53:01 pm dave wrote:
> Doh!!! as homer would say.
>
> am too close to the code to see it.
>
> many thanks, now onto other issues :).
>
> On Wednesday 10 June 2009 09:26:14 pm jonty wrote:
> > Hi Dave
> >
> > Just a small help for you
> >
> > your code contains if x=y.......end
> >
> > this will set the variable x to being y before testing it!
> >
> > you need to use the comparison operator == (2 equals)
> > as in: if x == y .... end
> >
> > dave wrote:
> > > I have a shoes program (below this message) where what i want to do is
> > > to allow the user to enter data into 1 of 2 edit_lines.
> > >
> > >
> > > From the user pressing enter i then check which edit_line has
> > > something in it
> > > and setup parameters for a SQL statement that 's in a class called
> > > dbase that's inside a module called sqlite3_calls.
> > >
> > >
> > > this tho is of no importance yet as i cannot capture the enter key!
> > >
> > >
> > > Note I'm only wanting to get 1 of the two edit_lines working then get
> > > the other done once i working based on the solution for the 1st one.
> > >
> > >
> > > Currently what happens is that the program runs but when I alt+/ to
> > > see the debug window after my shoes screen appears i see a comment
> > > saying pressed enter! when in fact i haven't press a dam thing except .
> > >
> > >
> > > did a search on keypress and edit_line and keypress but nothing i saw
> > > really gave me any hints.
> > >
> > >
> > > Dave.
> > >
> > >
> > > code as it stands is below.....
> > >
> > >
> > > require "sqlite3_calls.rb"
> > >
> > >
> > > Shoes.app do
> > > # extend Dbase #for the purposes isolation I've commented out this line
> > >
> > > stack :top =>5, :height => 90 do
> > > title "Find Customer Info", :align => 'center'
> > > end
> > >
> > >
> > > flow :top => 100, height => 70 do
> > > para strong "Customer nos"
> > > @custno = edit_line :width => 50 :focus
> > >
> > >
> > > para strong 'customer name'
> > > @custname = edit_line :width => 270
> > > end
> > > if keypress = :enter or keypress = "\n"
> > > debug 'pressed enter !'
> > > if @custno != nil
> > > para 'cust number has a value !'
> > > # rows = rec_to_find('customers', 'cust_nos', @custno) # please ignore
> > > else
> > > if @custname != nil
> > > para 'cust name has a value !'
> > >
> > > end
> > >
> > > end
> > > end
> > >
> > >
> > > flow :top => 550 do
> > > para strong 'data return shown here!'
> > > end
> > >
> > >
> > > end
> > > -----------------------------------------------------------------------
> > >-
> > >
> > >
> > > No virus found in this incoming message.
> > > Checked by AVG - www.avg.com
> > > Version: 8.5.339 / Virus Database: 270.12.60/2166 - Release Date:
> > > 06/09/09 18:08:00