Path: news.net.uni-c.dk!not-for-mail From: Mads Brogger Enevoldsen Newsgroups: daimi.beta Subject: Re: Edittext/dialogfield - =?iso-8859-1?Q?begr=E6nsninger=2Bautomatik?= Date: Mon, 07 May 2001 16:07:57 +0200 Organization: UNI-C Lines: 153 Message-ID: <3AF6AC3D.6BEA43CD@cs.au.dk> References: <3AEFD154.85DB4A37@cs.au.dk> <3AF68566.37C29C08@brics.dk> NNTP-Posting-Host: alex.cs.au.dk Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------58407042D23BC9D1B320B489" X-Trace: news.net.uni-c.dk 989244478 22808 130.225.16.45 (7 May 2001 14:07:58 GMT) X-Complaints-To: usenet@news.net.uni-c.dk NNTP-Posting-Date: Mon, 7 May 2001 14:07:58 +0000 (UTC) X-Mailer: Mozilla 4.76 [en] (X11; U; SunOS 5.8 sun4u) X-Accept-Language: en Xref: news.net.uni-c.dk daimi.beta:10556 This is a multi-part message in MIME format. --------------58407042D23BC9D1B320B489 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Mikkel Ricky wrote: > Rene Kragh Pedersen wrote: > > > Kan man begrænse en edittext eller et dialogfield, så der kun kan være > > et vist antal tegn i? Så det kun kan være heltal? > > Det overvejede jeg også i sin tid og nu har jeg efter lang tids uddannelse > fundet svaret. > > Hvis du i stedet for 'editText' bruger 'TextField' kan du fange event'et > 'onBeforeChange' og validere teksten i feltet. Ja. Sådan ville jeg også gøre det. For at validere indholdet af textField'et kan du bruge BETA's regulære udtryk (pcre). Det må være noget i denne stil: ('^(0|[-]?[1-9][0-9]*|-)$'->pcre)->numberCheck[]; (Se manualsiderne for mere information https://beta.cs.au.dk/doc/basiclib/pcre-beta.html ) > > > Kan man få fokus til automatisk at hoppe videre til næste felt, når det > > foregående er fyldt ud? Dette kan gøres således: do ... newField[] -> this(window).target; hvor newField er det textField du vi hoppe til. Jeg har ændret lidt på Mikkels kode, så den bruger pcre og når man har indtastet 6 tegn i det andet textField, så skiftes fokus til det nederste. -- Mvh Mads Brøgger Enevoldsen Mjølner Informatics --------------58407042D23BC9D1B320B489 Content-Type: text/plain; charset=us-ascii; name="textFieldTest.bet" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="textFieldTest.bet" ORIGIN '~beta/guienv/guienv'; INCLUDE '~beta/basiclib/textUtils'; INCLUDE '~beta/guienv/controls'; INCLUDE '~beta/guienv/fields'; INCLUDE '~beta/basiclib/pcre'; --- program: descriptor --- guienv (# theWindow: @window (# numberCheck: ^pcre; numberLabel: @StaticText (# open:: (# do (10, 10)->position; (80, 30)->size; 'Number:'->label #) #); field6Label: @StaticText (# open:: (# do (10, 50)->position; (80, 30)->size; 'Text:'->label #) #); newLabel: @staticText (# open:: (# do (10,90)->position; (80,30)->size; 'Ny:'->label #) #); eventhandler:: (# onAboutToClose:: (# do terminate #) #); validateField: textField (# eventHandler::< (# onBeforeChange::< (# newText, oldText: ^text; do contents->oldText[]; (if length > 0 then contents->newText[]; (theText, position+1)->newText.insert; else (1, position+1+length)->oldText.sub->newText[]; (position+1-length, oldText.length)->oldText.sub->newText.append; if); (if newText.length>0 then newText[]->numberCheck.match -> allow; if); INNER; #); #); #); field6: @validateField (# open:: (# do (100, 50)->position; (100, 30)->size #); eventHandler::< (# onBeforeChange::< (# do (newText.length<=6)->allow; (if newText.length>=6 then newField[] -> this(window).target; if); #); #); #); numberField: @validateField (# open:: (# do (100, 10)->position; (100, 30)->size #); eventHandler::< (# onBeforeChange::< (# do (if newText.length>0 then newText[]->numberCheck.match -> allow; if); #); #); #); newField: @textField (# open:: (# do (100,90)->position; (100,30)->size #); #); open:: (# do (400,400)->size; numberLabel.open; numberField.open; field6.open; field6label.open; newField.open; newlabel.open; (* contents->target; *) ('^(0|[-]?[1-9][0-9]*|-)$'->pcre)->numberCheck[]; #) #); do theWindow.open; #) --------------58407042D23BC9D1B320B489--