Den lör 2 maj 2020 kl 10:07 skrev Johnny Rosenberg <gurus.knu...@gmail.com>:

> I accidentally replied to you directly, I'm sorry for that. Here's another
> one, this time sent to the right destination, see below.
>
> Den lör 2 maj 2020 kl 07:49 skrev Ken Heard <kensli...@teksavvy.com>:
>
>> On 01/05/20 11:31 PM, Johnny Rosenberg wrote:
>> > Den fre 1 maj 2020 kl 18:11 skrev Ken Heard <kensli...@teksavvy.com>:
>> >
>> >> On 01/05/20 06:21 PM, Johnny Rosenberg wrote:
>> >>> Den fre 1 maj 2020 kl 12:27 skrev Ken Heard <kensli...@teksavvy.com>:
>> >>>
>> >>>> How does one make the default time format for the 'time' field HH:MM
>> >>>> instead of HH:MM:SS?
>> >>>>
>> >>>
>> >>> In Writer?
>> >>
>> >> Yes
>> >>
>> >>> Right click the field and click ”Edit Fields…”.
>> >>> Select the format you want, I believe the first one is the one you are
>> >>> looking for. If it's not in the list, click ”Additional Formats…” and
>> in
>> >>> the new dialogue that opens you can set your field to whatever format
>> you
>> >>> like.
>> >>
>> >> I followed your instructions, but as far as I can see they will only
>> >> change the format of the time field for that use of the field, What I
>> >> want to do is to change the *default* of the time field to HH:MM from
>> >> HH:MM:SS.
>> >>
>> >> Regards, Ken Heard
>> >>
>> >
>> > Have a look here then:
>> >
>> https://ask.libreoffice.org/en/question/158048/how-do-i-change-the-default-datetime-format/
>> >
>> > I'll quote the important part, in case that page is removed at some
>> point:
>> > ”*The default formats (date/time, currency, fixed/scientific/percent; in
>> > long/medium/short variants where applicable) depend on cell/field/...
>> > language, and are hardcoded in the corresponding locale data (see
>> > i18npool/source/localedata/data
>> > <
>> https://opengrok.libreoffice.org/xref/core/i18npool/source/localedata/data/
>> >
>> > for the locale data definitions). They are not configurable (unless you
>> > rebuild LibreOffice).*
>> >
>> > *You may want to create a macro to automate insertion of fields with
>> > desired format; please see this question
>> > <
>> https://ask.libreoffice.org/en/question/136467/how-to-create-a-macro-to-insert-the-current-date-in-the-current-language/
>> >
>> > for details.*”
>>
>> Thank you Johnny for this information.  So I now have really two
>> options,  One is to learn all about LibreOffice macros and create a
>> macro to give the result I want, OR simply type in the time wherever I
>> want it.  While I do want sometime to learn all about macros, for the
>> time being I will choose the second option!
>>
>> Regards, Ken Heard
>>
>>
>
>    1. If you click the link in the macro paragraph above, you will at
>    least see a few macro examples that are claimed to work (I didn't test them
>    though, so I don't know) and they don't seem to be very hard to edit to
>    suit the needs of this specific situation.
>    2. If you instead are going to insert many time fields in the same
>    document, or even in different documents that are all open at the same
>    time, you can just insert the first one, change its format to HH:MM, then
>    highlight the field, press Ctrl+c (copy) and then insert it with Ctrl+v
>    (paste) wherever you want. That way you don't need to change it's format
>    every time.
>    3. What kind of time field do you want to insert? ”Time (fixed)” or
>    ”Time”? If ”Time” (time is updated on field update), there's an easy way:
>    Use Autocorrection! First create the field and edit it to your liking. Then
>    highlight and copy (Ctrl+c) it, then click ”Tools” → ”AutoCorrect”
>    →”AutoCorrect Options…” → enter your trigger text (let's try ”.tm” in the
>    ”Replace” field, then hit ”OK”. Now, every time you type ”.tm” in your
>    document (any document, actually, as long as they are opened with
>    LibreOffice Writer), the ”.tm” text will be replaced by a time field with
>    the current time. This can't be done if you want the field to be setup as
>    ”Time (fixed)”, since there would always be the same time in that field,
>    that is the time when you first created the AutoCorrect record.
>    4. Do you really need to insert time as a field? If not, you could use
>    an external program for it, such as AutoKey (on Linux) or AutoHotKey (on
>    Windows). I use AutoKey for that and all I have to do to insert current
>    time is to type ”ti”. When I do that, the text ”ti” is replaced with the
>    current time as soon as I hit a space, ⇥ or ↵.
>
> 5. The macro approach:
I had a look at Andrew Pitonyak's macro document and I was fiddling with it
a bit. This seems to work for inserting a fixed time field:





































































*REM  *****  BASIC  *****Option Explicit'
———————————————————————————————————————————————————————————————————————————————————————————————'Original
author: Andrew Pitonyak'Email: and...@pitonyak.org
<and...@pitonyak.org>'Uses: FindCreateNumberFormatStyle'Edits: Johnny
RosenbergSub InsertTimeField  Dim oDoc As Object   Dim oText As Object  Dim
oVCurs As Object  Dim oTCurs As Object  Dim oDateTime As Object  oDoc =
ThisComponent  If oDoc.SupportsService("com.sun.star.text.TextDocument")
Then    oText = oDoc.Text    oVCurs =
oDoc.CurrentController.getViewCursor()    oTCurs =
oText.createTextCursorByRange(oVCurs.getStart())    ' Create the DateTime
type.    ODateTime =
oDoc.createInstance("com.sun.star.text.TextField.DateTime")
oDateTime.IsFixed = TRUE    oDateTime.NumberFormat =
FindCreateNumberFormatStyle("HH:MM", oDoc)
oText.insertTextContent(oTCurs,oDateTime,FALSE)
oText.insertString(oTCurs," ",FALSE)  Else    MsgBox "Sorry, this macro
requires a TextDocument"  End IfEnd Sub'
———————————————————————————————————————————————————————————————————————————————————————————————'Original
author: Andrew Pitonyak'Email: and...@pitonyak.org
<and...@pitonyak.org>'Edits: Johnny RosenbergFunction
FindCreateNumberFormatStyle(sFormat As String, Optional doc As object,
Optional locale)   Dim oDoc As Object  Dim aLocale As New
com.sun.star.lang.Locale  Dim oFormats As Object  Dim formatNum As Integer
oDoc = IIf(IsMissing(doc), ThisComponent, doc)  oFormats =
oDoc.getNumberFormats()  'If you choose to query on types, you need to use
the type    'com.sun.star.util.NumberFormat.DATE    'I could set the locale
from values stored at
'http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt
<http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt>
'http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
<http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html>    'I use a NULL
locale and let it use what ever it likes.    'First, see if the number
format exists    If (IsMissing(locale)) Then      With aLocale
.Language="en"        .Country="US"      End With    Else      aLocale =
locale    End If  formatNum = oFormats.queryKey (sFormat, aLocale, TRUE)
'If the number format does not exist then add it  If (formatNum = -1) Then
  formatNum = oFormats.addNew(sFormat, aLocale)    If (formatNum = -1) Then
formatNum = 0  End If  FindCreateNumberFormatStyle = formatNumEnd Function*

Now you only have to associate this macro with a keyboard shortcut, menu
option or toolbar button. I prefer keyboard shortcuts and I associated mine
with Ctrl+t, which was free. Here's the whole process:

   1. Highlight the code above, all of it.
   2. Ctrl+c
   3. In LibreOffice Writer, click Tools → Macros → Edit Macros
   4. A new window pops up. Click Tools in the new window, then Organize
   Macros → Basic…
   5. Click  Organizer…
   6. In the Modules tab, click the ▸ in front of ”My Macros”, making it a
   ▾.
   7. Click Standard to highlight it.
   8. Click New…
   9. You will now create a new module, so give it a name. I'll name it
   ”Insert”.
   10. Click Edit.
   11. The big field to the right now has some text in it, such as ”Sub
   Main” and ”End Sub”. Click somewhere in there, and hit Ctrl+a Ctrl+v to
   insert the code you copied in step 2.
   12. Now, let's associate InsertTimeField with a the keyboard shortcut
   Ctrl+t. Here's how:
   13. In the same window, click Tools → Customize…
   14. Click the Keyboard tab if it's not already selected.
   15. In the Category field, scroll down and click the ▸ in front of
   ”LibreOffice Macros”.
   16. Do the same for ”My Macros” and ”Standard”.
   17. Click ”Insert”.
   18. In the Function field, click InsertTimeField.
   19. In the Shortcut Keys field, look for Ctrl+t and click it.
   20. Click Modify. In Keys field, Ctrl+T should now be displayed.
   21. Click OK.
   22. In your main window, place the cursor somewhere and hit Ctrl+t. A
   new field with the current time in HH:MM format should now appear at the
   cursor.
   23. Done.
   24. This should now work in any document as long as LibreOffice Writer
   is used.
   25. If there is a problem, make sure you inserted ALL of the code above.
   I tested the code myself and it works perfectly on my system, so there
   should not be any problems, if these instructions are followed in detail,
   but we are only human…


Kind regards

Johnny Rosenberg



> Kind regards
>
> Johnny Rosenberg
>
>
>> --
>> To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org
>> Problems?
>> https://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
>> Posting guidelines + more: https://wiki.documentfoundation.org/Netiquette
>> List archive: https://listarchives.libreoffice.org/global/users/
>> Privacy Policy: https://www.documentfoundation.org/privacy
>>
>

-- 
To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org
Problems? https://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: https://wiki.documentfoundation.org/Netiquette
List archive: https://listarchives.libreoffice.org/global/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Reply via email to