Subject |
Re: Editor Problem |
From |
Norman Snowden <duluth@msn.com> |
Date |
Tue, 09 Jul 2024 14:20:42 -0400 |
Newsgroups |
dbase.getting-started |
Mervyn Bick Wrote:
> On 2024/07/07 20:18, Norman Snowden wrote:
> > Mervyn provided this code for me a couple of years ago. It worked beautifully. It still works on my Laptop. I recently did some adjustments on the program working with my Desk Top. Now when I run it on the Desk Top the screen just flashes the program title and closes. I don't think I altered any of this code. Thanks, Mervyn for your help over the years. I think this was associated with Note Pad. Any ideas? PUSHBUTTON9_onClick()
> > Go Top
> > Clear
> ........
> > I would appreciate it if you think the code still looks correct.
>
> <soapbox>
> Lesson 1. Always make backup copies and save them in a different place.
> A copy on the laptop is as good a place as any. :-)
>
> Lesson 2. NEVER make changes to a form (program, whatever UNLESS you
> have a copy of the of the original backed up so that you can easily
> revert to the original and start again.
> </soapbox>
>
> Trying to debug altered code without being able to run it is like
> looking for a needle in a haystack and there is no guarantee that one
> won't miss a typo.
>
> The word function is missing before PUSHBUTTON9_onClick() but I assume
> this was simply an error in copying the code into the clipboard. You
> have a field named lascontact. Is this correct?
>
> Instead of trying to find errors, I've tidied up the code and, with a
> bit of luck, the errors have gone. :-) Unfortunately the code is
> untested as I don't have your table so it may still require work.
>
> When it comes to adding lines to the bottom of the text already in an
> editor on a form and also saving the results to a file line by line life
> gets a bit complicated. The editor control needs crlf after each line.
> The file object's puts() or writeln() method adds it's own crlf as each
> line is written.
>
> It will make life (the code :-) ) much simpler if you build the string
> in the editor including crlf after each line. Once all appropriate
> records have been dealt with use the file object's write() method to
> create the output file in one fell swoop. All those crlf's in the
> editor's value property will be included without any hassles.
>
> fFile.write(form.editor1.value,len(form.editor1.value))
> fFile.close()
>
> I've added the crlf as a separate operation instead of adding it to each
> line of data as it is easy to miss on long lines.
>
> Building the long lines of data has been split into sections so as to
> make it easier if spaces need to be added or removed.
>
> I've changed the DO WHILE ... ENDDO loop to a FOR ... NEXT loop.
> Slightly simpler code where one knows exactly how many iterations are
> required as one doesn't have to manually increment the counter.
>
> Where k = 1, Relt[rle-(rle-k),1] evaluates to Relt[1,1] so you may just
> as well use Relt[k,1] in your code. This is true whether you use DO
> WHEN...ENDDO or FOR...NEXT.
>
>
> ******* Revised code **********
> //Watch for line wrap in Copy to Array line after it has
> //been copied and pasted into your form
>
> function PUSHBUTTON9_onClick()
> Go Top
> Clear //This clears the result panel. Not really needed here as ?
> //print command is not used in this code
> Count for relative = true to Rle
> if Rle = 0
> verdict = msgbox("There are no Relatives Listed")
> return
> endif
> Declare Relt[rle,8]
> Copy to Array Relt fields Lname, Fname, Mi, city, state, phone,
> birthday, lascontact For relative = true
> Asort(Relt)
> fFile = new file()
> fFile.create('plot_Relatives.txt')
> crlf = chr(13)+chr(10)
> form.editor1.value += space(84)+"RELATIVES"
> form.editor1.value += crlf
> form.editor1.value += " LAST NAME"+ " " + "FIRST"
> form.editor1.value += " "+ "INITIAL"+ " " +"CITY"
> form.editor1.value += " "+ "STATE"
> form.editor1.value += " "+ "PHONE"+" "+" BIRTHDAY"
> form.editor1.value += " "+"LAST CONTACT"
> form.editor1.value += crlf
> form.editor1.value += " "+replicate("_",104)+" "
> form.editor1.value += crlf
> for k = 1 to rle
> A = Relt[k,1]
> if A = " "
> A = " ? "
> endif
> B = Relt[k,2]
> if B = " "
> B = " ? "
> endif
> C = Relt[k,3]
> if C = " "
> C = " ? "
> endif
> D = Relt[k,4]
> if D = " "
> D = " ? "
> endif
> E = Relt[k,5]
> if E = " "
> E = " ? "
> endif
> F = Relt[k,6]
> if F = " "
> F = " ? "
> endif
> G = Relt[k,7]
> if G = null &&" "
> G = " 00/00/0000 "
> endif
> H = Relt[k,8]
> if H = null && " "
> H = "00/00/0000" &&" 00/00/0000 ? "
> endif
> form.editor1.value += ' ' + A + ' ' +B + ' '+ C
> form.editor1.value += ' ' + D + ' '+LTRIM(E)
> form.editor1.value += ' '+ LTRIM(F)+ ' ' + G
> form.editor1.value += ' ' + H
> form.editor1.value += crlf
> next
> fFile.write(form.editor1.value,len(form.editor1.value))
> fFile.close()
> form.entryfield1.value = set('directory')+'\Plot_Relatives.txt'
> form.Pageno = 3
> return
> ***********************************
>
> Mervyn.
>
> Mervyn, Thanks for your new valuable code. My following comments are for information only. You have already done enough . I don't expect any more response.
When I ran your code I got the Error message: " Expecting Character for the Lines rm.editor1.value += ' ' + D + ' '+LTRIM(E)
> form.editor1.value += ' '+ LTRIM(F)+ ' ' + G
Rather than trying to find the answer to this minor error, I opened this successful program on my Laptop. For some dumb reason, I clicked Print when there is no Printer connected. This caused the Program to only Flash and close when Clicking on Print. Back on the Laptop when I Clicked Print I got the message: Error: In use by another :Plot-Relatives.txt, Line 1703, fFile.create('plot_Relatives.txt'). Additionally, when I open the program, the Entries for Lname, appear as: C:\mykinda|plot Rle. The function PUSHBUTTON10_onClick()
***************
Chooseprinter()
Set Printer On
cFile = set('directory')+'\plot_relatives.txt' // From Murvyn 04/23/22
oWord = new oleAutoclient("word.application")
// oWord.ChangeFileOpenDirectory( set('directory')+'\')
oWord.documents.open(cFile,false,true)
oWord.activeDocument.printOut()
oWord.quit( 0 )
release object oWord
oWord = null
return,, provides the basis for Printing. This is beyond my dBase knowledge. The Microsoft Word communication must come from the Word in my computer. Again, when I run the Program The message comes up: In use by another. For now I will just use a List or Display Command that shows all the People rather than a separate Relative list. Mervyn, Thanks for your patience and help for many years, Norman
|
|