• help

    From aurora baccio@21:1/5 to All on Sat Jun 12 23:38:48 2021
    Good morning and good Sunday
    I cannot close an archive (ProvPres.dbf) .
    For other archives I use :
    oInError := InError{,false}
    .......
    oInError:Close()

    end of the procedure

    oIrror := InError{,false}
    oInError:Zap()
    oInError:Close()

    The Archive that I can't close feeds a subdatawindow contained in a datadialog and all the data that the user has to check arrives. If everything is correct it proceeds and then :
    oProvPres{}:Close()
    .........
    .ProvPres := oProvPres{,false}
    oProvPres:Zap()
    oProvPres:Close()

    self:Destroy()
    I restart the activity assuming that the ProvPres.dbf archive has been reset.
    I notice that this procedure does not work, the archive remains open with the data of the previous operation.
    I ask for help.
    Thanks
    Aurora Baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wolfgang Riedmann@21:1/5 to aurora baccio on Tue Jun 15 06:54:24 2021
    Buon giorno Aurora,

    AFAIK you need to open a DBF in exclusive mode do execute the Zap()
    method.
    I suspect that there is another instance open that does not permit to
    execute thzap operation.

    You should make sure that the SubDataWindow is closed and cleaned up.
    More than using a :Destroy() call on it I would null it out and issue a CollectForced() call.

    Wolfgang


    aurora baccio wrote:

    Good morning and good Sunday
    I cannot close an archive (ProvPres.dbf) .
    For other archives I use :
    oInError := InError{,false}
    .......
    oInError:Close()

    end of the procedure

    oIrror := InError{,false}
    oInError:Zap()
    oInError:Close()

    The Archive that I can't close feeds a subdatawindow contained in a datadialog and all the data that the user has to check arrives. If
    everything is correct it proceeds and then : oProvPres{}:Close()
    ......... .ProvPres := oProvPres{,false}
    oProvPres:Zap()
    oProvPres:Close()

    self:Destroy()
    I restart the activity assuming that the ProvPres.dbf archive has
    been reset. I notice that this procedure does not work, the archive
    remains open with the data of the previous operation. I ask for help.
    Thanks
    Aurora Baccio



    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Tue Jun 15 12:06:16 2021
    Il giorno martedì 15 giugno 2021 alle 06:54:27 UTC+2 Wolfgang Riedmann ha scritto:
    Buon giorno Aurora,

    AFAIK you need to open a DBF in exclusive mode do execute the Zap()
    method.
    I suspect that there is another instance open that does not permit to execute thzap operation.

    You should make sure that the SubDataWindow is closed and cleaned up.
    More than using a :Destroy() call on it I would null it out and issue a CollectForced() call.

    Wolfgang
    aurora baccio wrote:

    Good morning and good Sunday
    I cannot close an archive (ProvPres.dbf) .
    For other archives I use :
    oInError := InError{,false}
    .......
    oInError:Close()

    end of the procedure

    oIrror := InError{,false}
    oInError:Zap()
    oInError:Close()

    The Archive that I can't close feeds a subdatawindow contained in a datadialog and all the data that the user has to check arrives. If everything is correct it proceeds and then : oProvPres{}:Close()
    ......... .ProvPres := oProvPres{,false}
    oProvPres:Zap()
    oProvPres:Close()

    self:Destroy()
    I restart the activity assuming that the ProvPres.dbf archive has
    been reset. I notice that this procedure does not work, the archive remains open with the data of the previous operation. I ask for help. Thanks
    Aurora Baccio
    --

    Good evening Mr. Riedman and welcome back.
    I am reasonably sure that the sub date is closed.
    At the end of the procedure I close with oProvPres:Close() the archive in question.
    After several attempts I inserted a close databases
    I didn't understand why, since all the archives had to be closed but since then the archive zap works.
    To be sure of what I do:
    oProvPres := ProvPres{,false}
    oProvPres:Zap()
    oProvPres:Close()
    from here on starts the whole procedure of building the recipe delivery.
    When the recipe is registered and archived

    I close the datadialog
    self:Destroy()

    I close the archive.

    oProvPres:Close()
    close databases
    CollectForced()

    From what I understand you suggest not to use destroy().
    How do I use collectForced ?
    Exactly I read that collectforced() skips the garbage collection but honestly I still don't understand why it didn't work before and now it does.
    I know one of the rules of computer science is to never ask why, but I remain curious.
    thanks
    Aurora Baccio


    Translated with www.DeepL.com/Translator (free version)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From JohnMartens@21:1/5 to All on Tue Jun 15 22:03:23 2021
    Hi Aurora,

    Several comments on your issue.

    Zap only works if the DBF is only used in exclusive mode that should be
    set bij SetExclusive(TRUE). It should not be open in other parts of your
    app. I think the DBF was open in parts of your app that you are not
    aware of and therefore you cannot zap it.

    You can use this code to see what DBF's are open

    cMsg := ''
    FOR wAlias := 1 UPTO 1024
    cAlias := ALIAS(wAlias)
    IF .NOT. ( cAlias == NULL_STRING )
    dwMethresult += 1
    cMsg += NTrim(wAlias)+' workarea<.>'
    cMsg += '<9>Alias<9><9>'+cAlias+'<.>'
    cMsg += '<9>File name<9><9>'+ (cAlias)->(DBINFO(DBI_FULLPATH))+'<.>'
    cMsg += '<9>Locked records<9>'+ NTrim((cAlias)->(DBINFO(DBI_LOCKCOUNT)))+'<.>'
    ENDIF
    NEXT

    Put the code in a funtion that you call when debugging your app to see
    what DBF's are open en check wether these are the ones that you expect
    to be open.
    I'm sure that somewhere you did not close a DBF and thyerefore you
    cannot ZAP it

    I'm having a DBF where lots of changes take place. To prvent the DBF
    growing by adding records and deleting them without being able to ZAP
    it. I'm using special delete and apend methods of the DBF

    METHOD DeleteToReuse() CLASS MySpecialDbf
    lResult := SUPER:Delete()
    IF lResult
    SELF:Filed1 := ""
    SELF:Field2 := ""
    ENDIF
    RETURN lResult

    When appending

    METHOD AppendReuse() CLASS MySpecialDbf
    LOCAL lMethResult AS LOGIC
    LOCAL lDeleted AS LOGIC
    LOCAL dwRecNr := 0 AS DWORD

    lDeleted := SetDeleted()
    SetDeleted(FALSE)

    DO CASE
    CASE ! SELF:Seek(Space(10)) // Seek on first empty field that can only be empty when deleted
    CASE ! SELF:Recall()
    * Message that deleted record cannot be recalled
    OTHERWISE
    dwRecNr := SELF:RecNo
    lMethResult := TRUE
    ENDCASE

    SetDeleted(lDeleted)

    IF dwRecNr = 0
    * no old record found that could be recalled
    lMethResult := SUPER:Append()
    ELSE
    * empty record recalled
    SELF:GoTo(dwRecNr)
    ENDIF
    RETURN lMethResult

    In this way your DBF will not be for ever growing and there is no need
    to have a EXCLUSIVE access to the DBF

    CollectForced() is normaly not needed unless you do not clean all memory
    by ending resources.

    When debugging I put this in my shellwindow
    METHOD Timer() CLASS MyShellWindow SELF:StatusBar:SetText(NTrim(Memory(MEMORY_REGISTERAXIT)),#MemoryAxit)
    RETURN NIL
    If the memory keeps on growing then you hev and issue with nog ending
    windows of window parameters neatly.
    I you close it down in the right way there is no need to use Destroy()

    Hope this can help you

    Cheers,
    John


    Op 15-6-2021 om 21:06 schreef aurora baccio:
    Il giorno martedì 15 giugno 2021 alle 06:54:27 UTC+2 Wolfgang Riedmann ha scritto:
    Buon giorno Aurora,

    AFAIK you need to open a DBF in exclusive mode do execute the Zap()
    method.
    I suspect that there is another instance open that does not permit to
    execute thzap operation.

    You should make sure that the SubDataWindow is closed and cleaned up.
    More than using a :Destroy() call on it I would null it out and issue a
    CollectForced() call.

    Wolfgang
    aurora baccio wrote:

    Good morning and good Sunday
    I cannot close an archive (ProvPres.dbf) .
    For other archives I use :
    oInError := InError{,false}
    .......
    oInError:Close()

    end of the procedure

    oIrror := InError{,false}
    oInError:Zap()
    oInError:Close()

    The Archive that I can't close feeds a subdatawindow contained in a
    datadialog and all the data that the user has to check arrives. If
    everything is correct it proceeds and then : oProvPres{}:Close()
    ......... .ProvPres := oProvPres{,false}
    oProvPres:Zap()
    oProvPres:Close()

    self:Destroy()
    I restart the activity assuming that the ProvPres.dbf archive has
    been reset. I notice that this procedure does not work, the archive
    remains open with the data of the previous operation. I ask for help.
    Thanks
    Aurora Baccio
    --

    Good evening Mr. Riedman and welcome back.
    I am reasonably sure that the sub date is closed.
    At the end of the procedure I close with oProvPres:Close() the archive in question.
    After several attempts I inserted a close databases
    I didn't understand why, since all the archives had to be closed but since then the archive zap works.
    To be sure of what I do:
    oProvPres := ProvPres{,false}
    oProvPres:Zap()
    oProvPres:Close()
    from here on starts the whole procedure of building the recipe delivery. When the recipe is registered and archived

    I close the datadialog
    self:Destroy()

    I close the archive.

    oProvPres:Close()
    close databases
    CollectForced()

    From what I understand you suggest not to use destroy().
    How do I use collectForced ?
    Exactly I read that collectforced() skips the garbage collection but honestly I still don't understand why it didn't work before and now it does.
    I know one of the rules of computer science is to never ask why, but I remain curious.
    thanks
    Aurora Baccio


    Translated with www.DeepL.com/Translator (free version)


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wolfgang Riedmann@21:1/5 to aurora baccio on Wed Jun 16 09:08:29 2021
    Buon giorno Aurora,

    the Destroy() method only cleans up ressources used by the window.
    Therefore the DBF used by the subdatawindow may not be closed when the Destroy() method of the owning DataDialog is called.

    CollectForced() triggers a call of the garbage collector, and this call
    cleans up all unused ressources, regardless where in the program they
    were used.

    The garbage collector in the VO runtime is a complicated but very
    important piece of software, and for some more advanced tasks it is
    important to understand how it works. I also had examples where a CollectForced() call leaded to GPFs in the program, but that was always
    the programmers ( = my ) fault.

    Wolfgang


    aurora baccio wrote:

    Il giorno martedì 15 giugno 2021 alle 06:54:27 UTC+2 Wolfgang
    Riedmann ha scritto:
    Buon giorno Aurora,

    AFAIK you need to open a DBF in exclusive mode do execute the Zap()
    method.
    I suspect that there is another instance open that does not permit
    to execute thzap operation.

    You should make sure that the SubDataWindow is closed and cleaned
    up. More than using a :Destroy() call on it I would null it out
    and issue a CollectForced() call.

    Wolfgang
    aurora baccio wrote:

    Good morning and good Sunday
    I cannot close an archive (ProvPres.dbf) .
    For other archives I use :
    oInError := InError{,false}
    .......
    oInError:Close()

    end of the procedure

    oIrror := InError{,false}
    oInError:Zap()
    oInError:Close()

    The Archive that I can't close feeds a subdatawindow contained in
    a datadialog and all the data that the user has to check arrives.
    If everything is correct it proceeds and then :
    oProvPres{}:Close() ......... .ProvPres := oProvPres{,false} oProvPres:Zap()
    oProvPres:Close()

    self:Destroy()
    I restart the activity assuming that the ProvPres.dbf archive has
    been reset. I notice that this procedure does not work, the
    archive remains open with the data of the previous operation. I
    ask for help. Thanks
    Aurora Baccio
    --

    Good evening Mr. Riedman and welcome back.
    I am reasonably sure that the sub date is closed.
    At the end of the procedure I close with oProvPres:Close() the
    archive in question. After several attempts I inserted a close
    databases I didn't understand why, since all the archives had to be
    closed but since then the archive zap works. To be sure of what I do: oProvPres := ProvPres{,false}
    oProvPres:Zap()
    oProvPres:Close()
    from here on starts the whole procedure of building the recipe
    delivery. When the recipe is registered and archived

    I close the datadialog
    self:Destroy()

    I close the archive.

    oProvPres:Close()
    close databases
    CollectForced()

    From what I understand you suggest not to use destroy().
    How do I use collectForced ?
    Exactly I read that collectforced() skips the garbage collection but
    honestly I still don't understand why it didn't work before and now
    it does. I know one of the rules of computer science is to never ask
    why, but I remain curious. thanks Aurora Baccio


    Translated with www.DeepL.com/Translator (free version)



    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From JohnMartens@21:1/5 to All on Fri Nov 26 16:56:19 2021
    Hi Aurora,

    Ik think that the user will close the NoticeReceipt_Mask by clicking the
    OK button and that the NoticeReceipt_Mask is app modal. In that case the
    window is closed by the user and the code will procees after the
    oNotice:Show() line with the next thing to do.

    In this case oNotice:Close() after the Show() line will cause problems
    because it tries to close a window that is already closed by the user.

    If the NoticeReceipt_Mask window is not app modal it will be on the
    users screen after the show but your VaBene() method will proceed and
    the NoticeReceipt_Mask window might not be closed at all if you do not
    call oNotice:Close() that window

    So it depends on you. Make the window app modal so the user must press
    OK to start the print. Or make it just a progress window which cannot me
    closed by the user and has Show() and Close() in tha VaBene() method.
    Status updates on the progress in VaBene() could be shown if
    NoticeReceipt_Mask has a ShowProgress() mathod that shows the progress
    info on it's window

    Is this of any help ?

    John



    Op 26-11-2021 om 16:38 schreef aurora baccio:
    good afternoon.
    I have a question to ask, due to lack of documentation on VO.
    method VaBene() class DemPagante_Maschera

    oNotice := NoticeReceipt_Mask{self:Owner,aParam}
    FabCenterWindow(oNotice)
    oNotice:Show()

    In this particular case I alert the user that a receipt is about to be printed, indicating the patient's name and the amount.
    And it starts via the classic 'Okay" button. At the end there is the line self:Dialog()
    which takes me back to the Vabene method of the DemPagante_Maschera Class
    Is it correct to write in this method
    oNotice:Close() ?
    I hope I managed to explain myself.
    Thanks

    Translated with www.DeepL.com/Translator (free version)


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Fri Nov 26 07:38:57 2021
    good afternoon.
    I have a question to ask, due to lack of documentation on VO.
    method VaBene() class DemPagante_Maschera

    oNotice := NoticeReceipt_Mask{self:Owner,aParam}
    FabCenterWindow(oNotice)
    oNotice:Show()

    In this particular case I alert the user that a receipt is about to be printed, indicating the patient's name and the amount.
    And it starts via the classic 'Okay" button. At the end there is the line self:Dialog()
    which takes me back to the Vabene method of the DemPagante_Maschera Class
    Is it correct to write in this method
    oNotice:Close() ?
    I hope I managed to explain myself.
    Thanks

    Translated with www.DeepL.com/Translator (free version)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wolfgang Riedmann@21:1/5 to All on Sat Nov 27 18:07:36 2021
    Hi Aurora,

    I have a question to ask, due to lack of documentation on VO.

    I'm really sorry, but your question has nothing to do with lack of documentation in VO.

    If you would close a datawindow, use the method EndWindow(), and if
    your window is a dialogwindow, you have to use the method EndDialog().

    So you have to write

    self:EndDialog( IDOK )

    if DemPagante_Maschera is a DialogWindow, or

    self:EndWindow()

    if DemPagante_Maschera is a DataWindow.

    Wolfgang


    method VaBene() class DemPagante_Maschera

    oNotice := NoticeReceipt_Mask{self:Owner,aParam}
    FabCenterWindow(oNotice)
    oNotice:Show()

    In this particular case I alert the user that a receipt is about to
    be printed, indicating the patient's name and the amount. And it
    starts via the classic 'Okay" button. At the end there is the line self:Dialog() which takes me back to the Vabene method of the DemPagante_Maschera Class Is it correct to write in this method oNotice:Close() ?
    I hope I managed to explain myself.
    Thanks

    Translated with www.DeepL.com/Translator (free version)



    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Sun Nov 28 02:21:46 2021
    Il giorno venerdì 26 novembre 2021 alle 16:56:18 UTC+1 JohnMartens ha scritto:
    Hi Aurora,

    Ik think that the user will close the NoticeReceipt_Mask by clicking the
    OK button and that the NoticeReceipt_Mask is app modal. In that case the window is closed by the user and the code will procees after the oNotice:Show() line with the next thing to do.

    In this case oNotice:Close() after the Show() line will cause problems because it tries to close a window that is already closed by the user.

    If the NoticeReceipt_Mask window is not app modal it will be on the
    users screen after the show but your VaBene() method will proceed and
    the NoticeReceipt_Mask window might not be closed at all if you do not
    call oNotice:Close() that window

    So it depends on you. Make the window app modal so the user must press
    OK to start the print. Or make it just a progress window which cannot me closed by the user and has Show() and Close() in tha VaBene() method.
    Status updates on the progress in VaBene() could be shown if NoticeReceipt_Mask has a ShowProgress() mathod that shows the progress
    info on it's window

    Is this of any help ?

    John



    Op 26-11-2021 om 16:38 schreef aurora baccio:
    good afternoon.
    I have a question to ask, due to lack of documentation on VO.
    method VaBene() class DemPagante_Maschera

    oNotice := NoticeReceipt_Mask{self:Owner,aParam}
    FabCenterWindow(oNotice)
    oNotice:Show()

    In this particular case I alert the user that a receipt is about to be printed, indicating the patient's name and the amount.
    And it starts via the classic 'Okay" button. At the end there is the line self:Dialog()
    which takes me back to the Vabene method of the DemPagante_Maschera Class Is it correct to write in this method
    oNotice:Close() ?
    I hope I managed to explain myself.
    Thanks

    Translated with www.DeepL.com/Translator (free version)

    Thank you for your response, which is extremely important to me.
    Basically you suggest me to insert in the postinit method of the window self:SetModal(True).
    In this case the closing of the window happens from the method 'VaBene' that closes with the classic 'EndDialog'.
    The window doesn't remain open and doesn't cause problems.
    Otherwise in the line following the Show() I must insert the closing command. Correct?
    Thanks
    Aurora Baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Sun Nov 28 02:25:22 2021
    Il giorno sabato 27 novembre 2021 alle 18:07:39 UTC+1 Wolfgang Riedmann ha scritto:
    Hi Aurora,
    I have a question to ask, due to lack of documentation on VO.
    I'm really sorry, but your question has nothing to do with lack of documentation in VO.

    If you would close a datawindow, use the method EndWindow(), and if
    your window is a dialogwindow, you have to use the method EndDialog().

    So you have to write

    self:EndDialog( IDOK )

    if DemPagante_Maschera is a DialogWindow, or

    self:EndWindow()

    if DemPagante_Maschera is a DataWindow.

    Wolfgang
    method VaBene() class DemPagante_Maschera

    oNotice := NoticeReceipt_Mask{self:Owner,aParam}
    FabCenterWindow(oNotice)
    oNotice:Show()

    In this particular case I alert the user that a receipt is about to
    be printed, indicating the patient's name and the amount. And it
    starts via the classic 'Okay" button. At the end there is the line self:Dialog() which takes me back to the Vabene method of the DemPagante_Maschera Class Is it correct to write in this method oNotice:Close() ?
    I hope I managed to explain myself.
    Thanks

    Translated with www.DeepL.com/Translator (free version)
    --

    Dear Mr. Riedman,
    what does self:enddialog( IDOK) mean?
    The question refers to the word IDOK.
    Does it mean the name assigned to the window ?
    thanks
    Aurora Baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wolfgang Riedmann@21:1/5 to All on Sun Nov 28 14:38:12 2021
    Hi Aurora,

    what does self:enddialog( IDOK) mean?
    The question refers to the word IDOK.
    Does it mean the name assigned to the window ?

    the method EndDialog() of the dialogWindow class has one numeric
    parameter.
    This parameter is assigned to the :Result instance variable.

    IDOK is a constant that has the value of 1, whereas IDCANCEL has the
    value of 2.

    This is a sample:

    class MyDialog inherit DialogWindow

    method OkButton() class MyDialog

    self:EndDialog( IDOK )

    return nil

    method CancelButton() class MyDialog

    self:EndDialog( IDCANCEL )

    return nil

    .....
    local oDlg as MyDialog

    oDlg := MyDialog{ self }
    oDlg:Show()
    if oDlg:Result == IDOK
    // do something because the dialog was closed with the OK button
    endif

    HTH

    Wolfgang






    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From JohnMartens@21:1/5 to All on Mon Nov 29 18:50:38 2021
    Hi Aurora,

    The AppModal setting depends on what you want

    You will always need the Show() of the window.
    Then you have 2 options

    1 You want the user to do something before you want to continue after
    the Show() line. Eg do some settings like selecting an output directory
    or agree on the parameters the user will continue on. In that case you
    want an AppModal window so it will prevent all other actions in your app
    until the user made up it's mind. In this case the window will and
    itself with EndWindow(0 in its last line of code where you make sure the
    users has set the right parameters. In this case you wil NOT have any
    Close() in the method that dis the Show() of the window

    2 You just want to have a progress windows. In that case the window need
    the be NOT AppModal. The code will proceed after the Show() and by
    calling something like oNotice:ShowMyProgress(cTextToShowOnTheWindow)
    the progress is shown to the user.
    In this case when the job is finished and there is no further progress
    to show oNotice:EndWindow() (or another close of the window depending on
    the type of window)

    Does this help ?

    John



    Op 28-11-2021 om 11:21 schreef aurora baccio:
    Il giorno venerdì 26 novembre 2021 alle 16:56:18 UTC+1 JohnMartens ha scritto:
    Hi Aurora,

    Ik think that the user will close the NoticeReceipt_Mask by clicking the
    OK button and that the NoticeReceipt_Mask is app modal. In that case the
    window is closed by the user and the code will procees after the
    oNotice:Show() line with the next thing to do.

    In this case oNotice:Close() after the Show() line will cause problems
    because it tries to close a window that is already closed by the user.

    If the NoticeReceipt_Mask window is not app modal it will be on the
    users screen after the show but your VaBene() method will proceed and
    the NoticeReceipt_Mask window might not be closed at all if you do not
    call oNotice:Close() that window

    So it depends on you. Make the window app modal so the user must press
    OK to start the print. Or make it just a progress window which cannot me
    closed by the user and has Show() and Close() in tha VaBene() method.
    Status updates on the progress in VaBene() could be shown if
    NoticeReceipt_Mask has a ShowProgress() mathod that shows the progress
    info on it's window

    Is this of any help ?

    John



    Op 26-11-2021 om 16:38 schreef aurora baccio:
    good afternoon.
    I have a question to ask, due to lack of documentation on VO.
    method VaBene() class DemPagante_Maschera

    oNotice := NoticeReceipt_Mask{self:Owner,aParam}
    FabCenterWindow(oNotice)
    oNotice:Show()

    In this particular case I alert the user that a receipt is about to be printed, indicating the patient's name and the amount.
    And it starts via the classic 'Okay" button. At the end there is the line >>> self:Dialog()
    which takes me back to the Vabene method of the DemPagante_Maschera Class >>> Is it correct to write in this method
    oNotice:Close() ?
    I hope I managed to explain myself.
    Thanks

    Translated with www.DeepL.com/Translator (free version)

    Thank you for your response, which is extremely important to me.
    Basically you suggest me to insert in the postinit method of the window self:SetModal(True).
    In this case the closing of the window happens from the method 'VaBene' that closes with the classic 'EndDialog'.
    The window doesn't remain open and doesn't cause problems.
    Otherwise in the line following the Show() I must insert the closing command. Correct?
    Thanks
    Aurora Baccio


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Thu Feb 23 10:43:01 2023
    good evening,
    I don't know where I am wrong, can you help me?
    Error message:
    --------------
    Error Code: 20 [ CREATE ERROR ]
    Subsystem: BASE
    Error Subcode: 2012
    Function: COPYFILE
    Filename: E:\ArCuore\Kardia\DQLFNC56B28C351E\K15.p
    CallStack:
    IMMAGINIESAMI_MASCHERA:VABENE (Line:58)
    ELENCOPAZIENTIPOLIS_MASCHERA:IMGESAMI (Line:37) RICHIESTACODICEFISCALE_MASCHERA:POLIS (Line:7)
    MAINWINDOW:LANCIA (Line:9)
    APP:START (Line:534)

    Error Object created:
    --------------------
    SubSystem :BASE
    SubCode :2012
    GenCode :Create error
    OsCode :3
    ArgType :NIL
    FuncPtr :0x00000000
    ArgNum :0
    FuncSym :COPYFILE
    Severity :0
    CanDefault :.T.
    CanRetry :.T.
    CanSubstitute :.F.
    Operation :
    Description :
    FileName :E:\ArCuore\Kardia\DQLFNC56B28C351E\K15.pdf
    Tries :1
    FileHandle :0
    SubCodeText :
    Arg :
    ArgTypeReq :NIL
    MaxSize :0
    SubstituteType :NIL
    CallFuncSym :
    --------------------
    this is the error line
    where cesame is where the full path file is located (c:\dir\name)

    FCopy(cEsame,Drive+":\ArCuore\Kardia\"+self:cCodiceFiscaleDelPaziente+"\K"+FabAllTrim(self:cCodiceEsame)+".pdf")
    thank you for your help
    Aurora Baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From lohen@21:1/5 to All on Thu Feb 23 22:08:22 2023
    Op 2023-02-23 om 19:43 schreef aurora baccio:
    good evening,
    I don't know where I am wrong, can you help me?
    Error message:
    --------------
    Error Code: 20 [ CREATE ERROR ]
    Subsystem: BASE
    Error Subcode: 2012
    Function: COPYFILE
    Filename: E:\ArCuore\Kardia\DQLFNC56B28C351E\K15.p
    CallStack:
    IMMAGINIESAMI_MASCHERA:VABENE (Line:58)
    ELENCOPAZIENTIPOLIS_MASCHERA:IMGESAMI (Line:37) RICHIESTACODICEFISCALE_MASCHERA:POLIS (Line:7)
    MAINWINDOW:LANCIA (Line:9)
    APP:START (Line:534)

    Error Object created:
    --------------------
    SubSystem :BASE
    SubCode :2012
    GenCode :Create error
    OsCode :3
    ArgType :NIL
    FuncPtr :0x00000000
    ArgNum :0
    FuncSym :COPYFILE
    Severity :0
    CanDefault :.T.
    CanRetry :.T.
    CanSubstitute :.F.
    Operation :
    Description :
    FileName :E:\ArCuore\Kardia\DQLFNC56B28C351E\K15.pdf
    Tries :1
    FileHandle :0
    SubCodeText :
    Arg :
    ArgTypeReq :NIL
    MaxSize :0
    SubstituteType :NIL
    CallFuncSym :
    --------------------
    this is the error line
    where cesame is where the full path file is located (c:\dir\name)

    FCopy(cEsame,Drive+":\ArCuore\Kardia\"+self:cCodiceFiscaleDelPaziente+"\K"+FabAllTrim(self:cCodiceEsame)+".pdf")
    thank you for your help
    Aurora Baccio

    Is folder E:\ArCuore\Kardia\DQLFNC56B28C351E created ok?

    grtz

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From dlzc@21:1/5 to aurora baccio on Fri Feb 24 06:54:26 2023
    On Thursday, February 23, 2023 at 11:43:02 AM UTC-7, aurora baccio wrote:
    good evening,
    I don't know where I am wrong, can you help me?
    Error message:
    --------------
    Error Code: 20 [ CREATE ERROR ]
    Subsystem: BASE
    Error Subcode: 2012
    Function: COPYFILE
    Filename: E:\ArCuore\Kardia\DQLFNC56B28C351E\K15.p
    CallStack:
    IMMAGINIESAMI_MASCHERA:VABENE (Line:58) ELENCOPAZIENTIPOLIS_MASCHERA:IMGESAMI (Line:37) RICHIESTACODICEFISCALE_MASCHERA:POLIS (Line:7)
    MAINWINDOW:LANCIA (Line:9)
    APP:START (Line:534)

    Is there an E drive this process can see? Does this process have write access to the E: drive (both files and possibly directory creation)? Does this file already exist and is it write protected (might be marked read-only, or might be open by another
    process)? Is it possible this procedure got called twice, and the first instance is stumbling over the second?

    I'd add a series of display statements with a WAIT, or write some stuff to a diagnostic file before:
    <IMMAGINIESAMI_MASCHERA:VABENE (Line:58)>

    David A. Smith

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Mon May 29 05:15:13 2023
    Good morning,
    I have a need to print digitally signed .pdf files.
    I don't know how to do it.
    Shellexecute (virtual printer put default), blocks the process leaving adobe open or pdf24-
    Thanks
    Aurora baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From JohnMartens@21:1/5 to All on Mon May 29 20:38:49 2023
    Hi Aurora,

    Way back when I printed tot Adobe Reader using ShellExecute i used this
    code to find the Adobe window and close it in order to proceed.
    Maybe it can help you to get on.

    // Looking for the "Adobe Reader" caption...
    // If it's a NULL_PTR, it is still printing...
    DO WHILE (hWnd := FindWindow(NULL_PSZ, PSZ("Adobe Reader"))) = NULL_PTR
    Sleep(500)
    ENDDO
    Sleep(5000) // No idea why i used this sleep ....
    // Close
    PostMessage(hWnd, WM_CLOSE, 0, 0)


    John



    Op 29-5-2023 om 14:15 schreef aurora baccio:
    Good morning,
    I have a need to print digitally signed .pdf files.
    I don't know how to do it.
    Shellexecute (virtual printer put default), blocks the process leaving adobe open or pdf24-
    Thanks
    Aurora baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Mon Jul 3 06:45:57 2023
    good morning
    two questions that i know stupid but i don't know how to solve.
    number one: how to raise in vo a number to power ? i.e. 83 to the -179 how to do it ?
    number two: notify() method.
    i have to create the dispatch method to make the single line edit understand that it has to display the value of a calculation,
    basically I have a data windows that contains the list of suppliers and a single line edit named supplier balance. I want the calculation the supplier balance via notify() but for that I need to broadcast to notify the supplier code. I cannot do this.
    Thanks for the answers
    Aurora Baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From dlzc@21:1/5 to aurora baccio on Wed Jul 5 08:27:02 2023
    Dear aurora baccio:

    On Monday, July 3, 2023 at 6:45:59 AM UTC-7, aurora baccio wrote:
    good morning
    two questions that i know stupid but i don't know how to solve.
    number one: how to raise in vo a number to power ? i.e. 83 to the -179 how to do it ?

    To the extent that VO carries the genes of Clipper 5.3: https://www.itlnet.net/programming/program/Reference/c53g01c/ng113e1d.html
    ... and ... https://www.itlnet.net/programming/program/Reference/c53g01c/ng11b607.html

    number two: notify() method.

    Sorry, I cannot help here.

    David A. Smith

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wolfgang Riedmann@21:1/5 to All on Tue Jul 11 14:05:24 2023
    Buon giorno Aurora,

    i have to create the dispatch method to make the single line edit
    understand that it has to display the value of a calculation,
    basically I have a data windows that contains the list of suppliers
    and a single line edit named supplier balance. I want the calculation
    the supplier balance via notify() but for that I need to broadcast to
    notify the supplier code.

    it may be a bit hard to explain.

    The result of your calculation should be put into a variable of your
    DBServer class, maybe like this:

    class MySupplier
    protect nBalance as float

    access Balance class MySupplier

    return nBalance

    method CalcBalance() class MySupplier

    nBalance := 2 * 4
    Super:Notify( NOTIFYFIELDCHANGE, #Balance )

    return nil

    And in your window you have a code like this:

    method Notify( kNotifyName, uDescription ) class SupplierWindow

    do case
    case kNotifyName == NOTIFYRECORDCHANGE
    oDCBalance:Value := self:Server:Balance
    case kNotifyName == NOTIFYFIELDCHANGE .and. uDescription == #Balance
    oDCBalance:Value := self:Server:Balance
    endcase

    return super:Notify( kNotifyName, uDescription )


    HTH

    Wolfgang

    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Wed Jul 19 09:18:05 2023
    Il giorno martedì 11 luglio 2023 alle 14:05:29 UTC+2 Wolfgang Riedmann ha scritto:
    Buon giorno Aurora,
    i have to create the dispatch method to make the single line edit understand that it has to display the value of a calculation,
    basically I have a data windows that contains the list of suppliers
    and a single line edit named supplier balance. I want the calculation
    the supplier balance via notify() but for that I need to broadcast to notify the supplier code.
    it may be a bit hard to explain.

    The result of your calculation should be put into a variable of your DBServer class, maybe like this:

    class MySupplier
    protect nBalance as float

    access Balance class MySupplier

    return nBalance

    method CalcBalance() class MySupplier

    nBalance := 2 * 4
    Super:Notify( NOTIFYFIELDCHANGE, #Balance )

    return nil

    And in your window you have a code like this:

    method Notify( kNotifyName, uDescription ) class SupplierWindow

    do case
    case kNotifyName == NOTIFYRECORDCHANGE
    oDCBalance:Value := self:Server:Balance
    case kNotifyName == NOTIFYFIELDCHANGE .and. uDescription == #Balance oDCBalance:Value := self:Server:Balance
    endcase

    return super:Notify( kNotifyName, uDescription )


    HTH

    Wolfgang

    --


    Good morning,
    first of all I would like to thank Mr. David Smith and the always active Mr. Reidman for their help and to the whole group for their patience with me.
    However, I have solved the two problems.
    I pose a third one: in a singlelineedit() I would need to highlight part of the text (bold), is there a method to do this ?
    Thanks

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Thu Jul 20 09:08:02 2023
    Il giorno giovedì 20 luglio 2023 alle 17:52:35 UTC+2 dlzc ha scritto:
    Dear aurora baccio:

    On Wednesday, July 19, 2023 at 9:18:07 AM UTC-7, aurora baccio wrote:
    ...
    I pose a third one: in a singlelineedit() I would need to highlight
    part of the text (bold), is there a method to do this ?
    The brute-force way would be to stuff the necessary keystrokes in the keyboard buffer to position to that text, and highlight that text, just before you call the function.

    David A. Smith



    good morning,
    I am not good enough to understand what he writes.
    can you give a practical example ?
    thank you
    Aurora Baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From dlzc@21:1/5 to aurora baccio on Thu Jul 20 08:52:33 2023
    Dear aurora baccio:

    On Wednesday, July 19, 2023 at 9:18:07 AM UTC-7, aurora baccio wrote:
    ...
    I pose a third one: in a singlelineedit() I would need to highlight
    part of the text (bold), is there a method to do this ?

    The brute-force way would be to stuff the necessary keystrokes in the keyboard buffer to position to that text, and highlight that text, just before you call the function.

    David A. Smith

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From dlzc@21:1/5 to aurora baccio on Fri Jul 21 07:50:45 2023
    On Thursday, July 20, 2023 at 9:08:03 AM UTC-7, aurora baccio wrote:
    Il giorno giovedì 20 luglio 2023 alle 17:52:35 UTC+2 dlzc ha scritto:
    Dear aurora baccio:

    On Wednesday, July 19, 2023 at 9:18:07 AM UTC-7, aurora baccio wrote: ...
    I pose a third one: in a singlelineedit() I would need to highlight
    part of the text (bold), is there a method to do this ?

    The brute-force way would be to stuff the necessary keystrokes
    in the keyboard buffer to position to that text, and highlight that
    text, just before you call the function.

    good morning,
    I am not good enough to understand what he writes.
    can you give a practical example ?

    And I assumed by "highlight" you meant to select a section of text so that it could be copied to clipboard. You meant "I want to bold a portion of this text".

    I don't know how to do that in VO. I saw the word "highlight" and thought you meant to select it so it could be copied to the clipboard. Sorry. Reading too fast.

    Does singlelineedit() support formatting instructions? <Ctrl>-B before and after maybe...

    David A. Smith

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wolfgang Riedmann@21:1/5 to All on Wed Jul 26 18:06:07 2023
    Buon giorno Aurora,

    However, I have solved the two problems. I pose a
    third one: in a singlelineedit() I would need to highlight part of
    the text (bold), is there a method to do this ?

    in a edit control (singlelineedit and multilineedit) you can select a
    text with the Selection class.

    The help says the following:

    Edit:Selection Access/Assign

    The position of the cursor in the edit control. For example, a
    Selection of {5,10} means the text from position 5 through 9 inclusive
    is selected, while a Selection of {5,5} means the cursor is positioned
    in front of the fifth character.

    And if you look at the Selection class, you will find the following
    text:

    Selections are used in edit controls (i.e., by the Edit and EditWindow classes). The start of a selection is the position in the edit control
    of the first character that is included in the selection. The finish
    is the position of the first character not in the selection. For
    example, to specify the text from position 5 through 9 inclusive, you
    would give a value of Selection{5,10}.

    To select all the characters in an edit control (such as a single-line
    edit control), you would specify a value of Selection{0,-1}.

    If the start and finish points are the same, the selection refers to a
    cursor position. For example, the cursor position in front of the
    fifth character would be referred to as Selection{5,5}.


    That should help.

    But if you mean that you can format a text to make it bold: this cannot
    work in a single or multiline edit because Windows does not allows it.
    You will need a RTF control if you need formatting.
    But you can make the entire text bold or italic or whatever you like.

    Wolfgang






    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Sat Aug 19 23:28:37 2023
    good morning,
    in a data browse, which displays accounting items, I would like to highlight in bold the single cell
    of the type :
    if oLEsenti:Row=99 (99 is the code that indicates the total display row) then display in bold.
    The rows are 1,2,3 up to a maximum of 8
    The row marked 99 is where in the individual fields the totals are put .
    So in the row marked with 99 in the total field the total field of rows 1,2,3,4,5,6,7,8 are added together
    Basically it is like a spreadsheet in which the base is summed with the preceding cells.
    I hope I have been clear.
    Can this be done ?
    If yes an example is appreciated.
    thanks

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From JohnMartens@21:1/5 to All on Sun Aug 20 17:06:24 2023
    I could help you it you would like to put the values in a ListView.
    I never use data browser
    John

    Op 20-8-2023 om 08:28 schreef aurora baccio:
    good morning,
    in a data browse, which displays accounting items, I would like to highlight in bold the single cell
    of the type :
    if oLEsenti:Row=99 (99 is the code that indicates the total display row) then display in bold.
    The rows are 1,2,3 up to a maximum of 8
    The row marked 99 is where in the individual fields the totals are put .
    So in the row marked with 99 in the total field the total field of rows 1,2,3,4,5,6,7,8 are added together
    Basically it is like a spreadsheet in which the base is summed with the preceding cells.
    I hope I have been clear.
    Can this be done ?
    If yes an example is appreciated.
    thanks

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Wolfgang Riedmann@21:1/5 to All on Tue Aug 22 10:54:16 2023
    Buon giorno Aurora,

    in a data browse, which displays accounting items, I would like to
    highlight in bold the single cell of the type :

    I remember to have seen that once in a german VO book, but cannot find
    that anymore.
    Unfortunately there are very few persons that are working with the VO DataBrowser. Most are working with bBrowser and/or ListViews, and in
    both this is possible and I'm doing that also.
    I have ceased to use the VO DataBrowser at least 25 years ago at the
    times of VO 1.0, so I cannot help you, unfortunately.

    Wolfgang

    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Sebasti=C3=A1n_BASSANO?=@21:1/5 to All on Tue Aug 22 05:45:14 2023
    El Sunday, August 20, 2023 a la(s) 3:28:39 AM UTC-3, aurora baccio escribió:
    good morning,
    in a data browse, which displays accounting items, I would like to highlight in bold the single cell
    of the type :
    if oLEsenti:Row=99 (99 is the code that indicates the total display row) then display in bold.
    The rows are 1,2,3 up to a maximum of 8
    The row marked 99 is where in the individual fields the totals are put .
    So in the row marked with 99 in the total field the total field of rows 1,2,3,4,5,6,7,8 are added together
    Basically it is like a spreadsheet in which the base is summed with the preceding cells.
    I hope I have been clear.
    Can this be done ?
    If yes an example is appreciated.
    thanks

    I don't use data browser but maybe this post (if you didn't find that) can help you (https://groups.google.com/g/comp.lang.clipper.visual-objects/c/H-lxT7J8whc/m/ezeUx5NzKJ8J).
    Regards.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Sebasti=C3=A1n_BASSANO?=@21:1/5 to All on Tue Aug 22 05:43:48 2023
    El Sunday, August 20, 2023 a la(s) 3:28:39 AM UTC-3, aurora baccio escribió:
    good morning,
    in a data browse, which displays accounting items, I would like to highlight in bold the single cell
    of the type :
    if oLEsenti:Row=99 (99 is the code that indicates the total display row) then display in bold.
    The rows are 1,2,3 up to a maximum of 8
    The row marked 99 is where in the individual fields the totals are put .
    So in the row marked with 99 in the total field the total field of rows 1,2,3,4,5,6,7,8 are added together
    Basically it is like a spreadsheet in which the base is summed with the preceding cells.
    I hope I have been clear.
    Can this be done ?
    If yes an example is appreciated.
    thanks

    I don't use data browser but maybe this post (if you didn't find that) can help you (https://groups.google.com/g/comp.lang.clipper.visual-objects/c/H-lxT7J8whc/m/ezeUx5NzKJ8J).
    Regards.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Thu Aug 24 07:35:15 2023
    Il giorno martedì 22 agosto 2023 alle 14:45:16 UTC+2 Sebastián BASSANO ha scritto:
    El Sunday, August 20, 2023 a la(s) 3:28:39 AM UTC-3, aurora baccio escribió:
    good morning,
    in a data browse, which displays accounting items, I would like to highlight in bold the single cell
    of the type :
    if oLEsenti:Row=99 (99 is the code that indicates the total display row) then display in bold.
    The rows are 1,2,3 up to a maximum of 8
    The row marked 99 is where in the individual fields the totals are put . So in the row marked with 99 in the total field the total field of rows 1,2,3,4,5,6,7,8 are added together
    Basically it is like a spreadsheet in which the base is summed with the preceding cells.
    I hope I have been clear.
    Can this be done ?
    If yes an example is appreciated.
    thanks
    I don't use data browser but maybe this post (if you didn't find that) can help you (https://groups.google.com/g/comp.lang.clipper.visual-objects/c/H-lxT7J8whc/m/ezeUx5NzKJ8J).
    Regards.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From aurora baccio@21:1/5 to All on Thu Aug 24 07:34:35 2023
    Il giorno martedì 22 agosto 2023 alle 14:45:16 UTC+2 Sebastián BASSANO ha scritto:
    El Sunday, August 20, 2023 a la(s) 3:28:39 AM UTC-3, aurora baccio escribió:
    good morning,
    in a data browse, which displays accounting items, I would like to highlight in bold the single cell
    of the type :
    if oLEsenti:Row=99 (99 is the code that indicates the total display row) then display in bold.
    The rows are 1,2,3 up to a maximum of 8
    The row marked 99 is where in the individual fields the totals are put . So in the row marked with 99 in the total field the total field of rows 1,2,3,4,5,6,7,8 are added together
    Basically it is like a spreadsheet in which the base is summed with the preceding cells.
    I hope I have been clear.
    Can this be done ?
    If yes an example is appreciated.
    thanks
    I don't use data browser but maybe this post (if you didn't find that) can help you (https://groups.google.com/g/comp.lang.clipper.visual-objects/c/H-lxT7J8whc/m/ezeUx5NzKJ8J).
    Regards.

    I thank you for the suggestion.
    I thank Mr. Bassano for the link, but it refers to cell coloring. I intend to have the text contained in the cell in bold.
    Do you recommend me to implement a listview.
    I work with dbf archives.
    I need to make a list with ten columns each obviously with a different header. The listview is 'populated' by groups of records that make up a recipe. The rows are marked in the 'row' field with the numbers 1 to 8 (maximum), which means there can be only one row or at most eight rows. Plus row 99 which is populated by the totals of
    the eight rows. Totals already in the archive.
    And so on until the end of the monthly archive.
    Can you give me an example?
    Thank you
    Aurora Baccio

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Sebasti=C3=A1n_BASSANO?=@21:1/5 to All on Fri Aug 25 04:49:13 2023
    El Thursday, August 24, 2023 a la(s) 11:34:37 AM UTC-3, aurora baccio escribió:
    Il giorno martedì 22 agosto 2023 alle 14:45:16 UTC+2 Sebastián BASSANO ha scritto:
    El Sunday, August 20, 2023 a la(s) 3:28:39 AM UTC-3, aurora baccio escribió:
    good morning,
    in a data browse, which displays accounting items, I would like to highlight in bold the single cell
    of the type :
    if oLEsenti:Row=99 (99 is the code that indicates the total display row) then display in bold.
    The rows are 1,2,3 up to a maximum of 8
    The row marked 99 is where in the individual fields the totals are put . So in the row marked with 99 in the total field the total field of rows 1,2,3,4,5,6,7,8 are added together
    Basically it is like a spreadsheet in which the base is summed with the preceding cells.
    I hope I have been clear.
    Can this be done ?
    If yes an example is appreciated.
    thanks
    I don't use data browser but maybe this post (if you didn't find that) can help you (https://groups.google.com/g/comp.lang.clipper.visual-objects/c/H-lxT7J8whc/m/ezeUx5NzKJ8J).
    Regards.
    I thank you for the suggestion.
    I thank Mr. Bassano for the link, but it refers to cell coloring. I intend to have the text contained in the cell in bold.
    Do you recommend me to implement a listview.
    I work with dbf archives.
    I need to make a list with ten columns each obviously with a different header.
    The listview is 'populated' by groups of records that make up a recipe. The rows are marked in the 'row' field with the numbers 1 to 8 (maximum), which means there can be only one row or at most eight rows. Plus row 99 which is populated by the totals
    of the eight rows. Totals already in the archive.
    And so on until the end of the monthly archive.
    Can you give me an example?
    Thank you
    Aurora Baccio
    I use bBrowser instead o ListViews, i don't have examples.
    Searching in the group listview font I found the following thread https://groups.google.com/g/comp.lang.clipper.visual-objects/c/vNUgsv8JEW8/m/ru3tOQQ2ySQJ, where they explain how to change the font colour and set it to bold for a particular row.
    Regards.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)