Kalendarz - wybór daty do wpisania do komórki

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Andrzej.K
Posty: 5
Rejestracja: śr paź 10, 2012 9:00 am

Kalendarz - wybór daty do wpisania do komórki

Post autor: Andrzej.K »

Witam,
Miałem (w zasadzie mam nadal) piękny dodatek (załączam go) Kalendarz, który przez wiele lat służył mi pod MS OFFICE.
Uwarunkowania spowodowały, że muszę się przesiąść na OO i czuję wyraźną lukę, pustkę.

Szukałem na tym forum i w necie podobnych dodatków ale nic nie znalazłem, są kalendarze ale 100% to formatki (terminarze itp).

Zdecydowałem się napisać aby dowiedzieć się wśród specjalistów czy może ktoś widział taki dodatek jak mój ale pod OO.
Ewentualnie może ktoś potrafi "przekonwertować" ten kalendarz z MS na OO?

Nie chcę być nieskromny ale gdy znalazłem ten mój kalendarz pod MS i pokazałem go w firmie to był szał. Okazało się, że 90% osób było w podobnej sytuacji jak ja - klepało daty z palca i irytowało ich to maksymalnie.

Fajnie jakby się udało coś z moim problemem zrobić

Pozdrawiam
Andrzej
Załączniki
jckalendarz.zip
(47.36 KiB) Pobrany 3991 razy
Open office 3.1 na Windows XP
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

Witaj na forum,

nie zdołałem jeszcze obejrzeć Twojego dodatku w akcji. Zrobię to przy najbliższej okazji dostępu do Excela. Przeglądanie kodu pod LO nie daje pełnej orientacji.

W OO/LO istnieje wizualny komponent wyboru daty. Odpowiedni element API jest zarejestrowany pod nazwą com.sun.star.form.component.DateField, patrz http://www.openoffice.org/api/docs/comm ... Field.html. Można go wbudowywać w formularze dialogowe. Rozumiem, że o to by chodziło, i o sensowne sprzęgnięcie tego dialogu z bieżącą komórką.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
quest-88
Posty: 1105
Rejestracja: ndz maja 24, 2009 8:12 pm
Lokalizacja: Zabrze
Kontakt:

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: quest-88 »

Czy ten plik na pewno jest poprawny? Poprosiłem kolegę, który ma betę MS Office 2013, aby wyeksportował go do ODS (Office 2013 obsługuje normę zapisu ISO ODF 1.2) i przy próbie otwarcia dokumentu wyskoczył błąd:

Kod: Zaznacz cały

[Window Title]
C:\jckalendarz.xlam

[Content]
Wystąpiły problemy z przesłaniem polecenia do programu.

[OK]
Potem sugeruje konwersje z XLA do XLAM, co nic nie zmienia. XLAM również wypluwa taki błąd.
Standardowa diagnostyka rozwiązuje 90% problemów typu "wcześniej działało, ale już nie działa".
Przepis na LibreOffice
Uzyskałeś pomoc? Poinformuj innych o sprawdzonym rozwiązaniu i podziękuj. Dodaj [SOLVED] w tytule.
Andrzej.K
Posty: 5
Rejestracja: śr paź 10, 2012 9:00 am

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Andrzej.K »

@jan: sorka ale jestem totalnie lamerski w temacie OO i nie jakiś super w temacie VBA. cała moja praca w excel to raczej formuły itp. Więc nie wiem w ogóle jak miałbym zrobić to co piszesz.
Nie mogę wkleić obrazka ale mój kalendarz działał tak, że siedział sobie na pasku na górze. Stawałeś na komórce, klikałeś na niego i wyskakiwał applet z kalendarzem. wybierałeś datę mychą i kopiowała ci się do komórki a applet kalendarza znikał.

Co do pliku to ten, który załączyłem nazywał się jckalendarz.xla (taki zipowałem) - nie wiem skąd się wzięło to m na końcu.
ten xla bez problemu chodzi bo na stanowisku obok ma go zainstalowany mój kolega (MS office 2003)
Open office 3.1 na Windows XP
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

Poniższy kod definiuje makro InsertDate(), które pozwala wstawić do bieżącej komórki datę wybraną za pomocą kalendarza. Jeżeli w komórce była już jakaś data (albo liczba), to jest ona wstępnie proponowana w dialogu.

Pozostają sprawy ergonomii (zatwierdzić zmianę dwuklikiem w polu kalendarza?) i oprawy (skrót klawiszowy?, wpis w menu?, dodatek?).

Kod: Zaznacz cały

rem global todo: oprawa w skrót klawiszowy albo menu

rem wstawia wybraną datę do bieżącej komórki
rem todo: inne typy dokumentów
rem todo: porządne formaty komórki/pola z datą zamiast magicznych liczb
rem todo: przypadek, kiedy selection jest blokiem
rem todo: kod braku wartości (0 jest legalną wartością daty)
rem
Sub InsertDate()
  doc = thisComponent
  ctr = doc.currentController
  cell = ctr.getSelection()
  aDate = DateSelection(cell.getValue())
  if aDate <> 0 then
    cell.setValue(aDate)
    cell.NumberFormat = 84 ' yyyy-mm-dd date
  end if
End Sub

rem wywołuje dialog wyboru daty; wybrana wartość zwracana jako wynik
rem w przypadku rezygnacji zwraca wartość 0
rem
function DateSelection(aDate) as Variant
  dlg = createUnoService("com.sun.star.awt.UnoControlDialogModel")
  dlg.PositionX = 50
  dlg.PositionY = 50
  dlg.Width = 150
  dlg.Height = 30
  dlg.Title = "Wybór daty"
  
  dc = createUnoService( "com.sun.star.awt.UnoControlDialog" )
  dc.setModel(dlg) 

  field = dlg.createInstance("com.sun.star.form.component.DateField")
  field.DateFormat = 11 rem "yyyy-mm-dd"
  field.DropDown = True
  rem w razie potrzeby: zmiana zakresu obsługiwanych dat -- format ISO
  rem field.DateMin = 16000101
  rem field.DateMax = 30001231
  dlg.insertByName("CalendarField", field)
  fc = dc.getControl("CalendarField")
  fc.setPosSize(10, 10, 200, 30, com.sun.star.awt.PosSize.POSSIZE)

  if aDate = 0 then
    aDate = now() 
  end if
  fc.Date = cDateToISO(aDate)
  fc.setFocus()

  button = dlg.createInstance( "com.sun.star.awt.UnoControlButtonModel" )
  button.PushButtonType = com.sun.star.awt.PushButtonType.OK
  dlg.insertByName("OKButton", button)
  button.Label = "OK"
  bc = dc.getControl("OKButton")
  bc.setPosSize(210, 10, 50, 30, com.sun.star.awt.PosSize.POSSIZE)

  button = dlg.createInstance( "com.sun.star.awt.UnoControlButtonModel" )
  button.PushButtonType = com.sun.star.awt.PushButtonType.CANCEL
  dlg.insertByName("CancelButton", button)
  button.Label = "Anuluj"
  bc = dc.getControl("CancelButton")
  bc.setPosSize(260, 10, 50, 30, com.sun.star.awt.PosSize.POSSIZE)   
 
  dc.setVisible(True)
  result = dc.Execute()
  if result = 1 then
    DateSelection = cDateFromISO(fc.Date)
  else
    DateSelection = 0
  end if 
End Function
Instalacja: Narzędzia→Makra→Zarządzaj→Basic→Moje makra→Nowy→Wklej kod
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Andrzej.K
Posty: 5
Rejestracja: śr paź 10, 2012 9:00 am

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Andrzej.K »

Chętnie bym to przetestował ale ścieżka poleceń którą podałeś jest u mnie inna (mam OO 3.3.0)
U mnie mam tak: NARZĘDZIA > MAKRA > ZARZĄDZAJ MAKRAMI > i tu muszę wybrać MAKRO albo PYTHON albo BEANSHELL albo JAVASCRIPT.
Ja po zarządzaj wybiorę MAKRO to mam jakieś magiczne okno ale nie mogę nigdzie znaleźć do wklejenia kodu
Open office 3.1 na Windows XP
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

W OpenOffice.org: Narzędzia→Makra→Zarządzaj→Makro→magiczne okno; z lewej > Moje makra; z prawej [Nowy]; w dialogu zatwierdź nazwę [OK] i wklej kod do edytora.
Potem Narzędzia→Makra→Wykonaj + trochę nawigacji, albo przypisz skrót klawiszowy.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Andrzej.K
Posty: 5
Rejestracja: śr paź 10, 2012 9:00 am

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Andrzej.K »

No jest to jakieś rozwiązanie do czasu jak komuś się nie uda przerobić tego mojego dodatku.

Dzięki
Open office 3.1 na Windows XP
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

Obejrzałem Twój kalendarz i sądzę, że mojego dialogu w zasadzie używa się podobnie.

Właśnie opakowałem go w dodatek, który wstawia nową listwę narzędzi z jednym przyciskiem: [Wstaw datę] oraz wpis w menu Narzędzia→Dodatki→Wstaw datę. Nie proponuje skrótu klawiszowego.

Testowany w LO 3.6 i w OOo 3.3. Public domain, zero zastrzeżeń, zero gwarancji. Ale jak trzeba, to odpowiem.
Załączniki
CalendarDlg-0.25.oxt.zip
(3.39 KiB) Pobrany 1806 razy
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Andrzej.K
Posty: 5
Rejestracja: śr paź 10, 2012 9:00 am

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Andrzej.K »

Możesz podać ścieżkę jak go dodać bo mnie cały czas wyrzuca "z powodu nieznanego błędu program OO został niespodziewanie zamknięty. Wszystkie pliki zostały zachowane"
Open office 3.1 na Windows XP
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

Rozpakuj oxt-a z zipa (tak, wiem, jest to podwójnie zzipowane). Następnie w OOo albo w LO, jaku zwykły user: Narzędzia → Menedżer rozszerzeń → Dodaj. Po następnym uruchomieniu winna być widoczna nowa listwa z przyciskiem.

PS. Testowałem dodatek na OOo 3.3 (Linux. Windows 7) oraz LibreOffice 3.5 i 3.6 (Linux, Windows 7). Nie wiem, czy jest zgodny z OOo 3.1. Formalnie wpisałem wymaganie wersji OO >= 3.0.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
bolej1
Posty: 4
Rejestracja: czw gru 27, 2012 12:58 pm

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: bolej1 »

Witam udalo sie moze komus dopisac ten dodatek z po ktorym wyskoczy okienko z kalendarzem? (op dwukrotnym kliknieciu w komorke) Bardzo bym bym wdzieczny.
OpenOffice 2.2.0
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

Po 3 latach, modyfikacja z naniesieniem zmian API w LibreOffice.
W Apache OO może nie działać, w razie problemów proszę napisać post.
Załączniki
CalendarDlg-0.25.oxt.zip
z roku 2012, powinien wciąż działać w AOO
(3.39 KiB) Pobrany 517 razy
CalendarDlg-0.26.oxt.zip
zmieniony w 2015 dla LO >= 4
(3.44 KiB) Pobrany 844 razy
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Astur
Posty: 654
Rejestracja: wt lip 13, 2010 9:11 am

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Astur »

Żeby było ślicznie, należy po zainstalowaniu rozszerzenia, zrobić co następuje:
  1. Otworzyć nowy arkusz kalkulacyjny
  2. Kliknąć prawym klawiszem myszki na któryś z pasków narzędzi, np. górny i wybrać Dostosuj pasek narzędzi...
  3. W otwartym okienku Dostosuj, w zakładce Paski narzędzi, na liście Polecenia sekcji Zawartość paska narzędzi odnaleźć, dajmy na to, pozycję Wykres i kliknąć ją.
  4. Następnie kliknąć Dodaj...
  5. W otwartym okienku Dodaj, na liście Kategoria odnaleźć Makra LibreOffice i rozwinąć ją aż do Moje makra/CalendarDlg/Module1
  6. Na liście Polecenia wskazać InsertDate i kliknąć Dodaj, a potem Zamknij.
  7. Ponieważ przycisk w postaci klawisza z napisem "InsertDate" wygląda średnio, warto zmienić jego wystrój. W tym celu należy kliknąć Modyfikuj... a z otwartej listy wybrać Zmień nazwę. W polu Nowa nazwa wpisać, np., "Wstaw datę". Następnie kliknąć OK.
  8. Teraz ponownie kliknąć Modyfkuj... i z otwartej listy wybrać Zmień ikonę.
  9. W okienku odnaleźć jakąś stosowną ikonę, np. .uno:AddDateField i kliknąć ją. Następnie kliknąć OK
  10. Zatwierdzić wszystkie zmiany klikając na OK w okienku Dostosuj.
Teraz we wskazanym miejscu (tu: w okolicy wstawiania wykresu) pojawi się nowy przycisk z wybraną ikonką. Po wskazaniu go myszką pojawi się podpowiedź "Wstaw datę", a po kliknięciu, otworzy się stosowne okienko.

No i jeszcze jeden kosmetyczny zabieg. Należy Otworzyć Menu->Widok->Paski narzędzi i usunąć zaznaczenie przy pozycji Dodatek 1.
Ubuntu 20.04 — OpenOffice 4.1.10
Zanim zastosujesz się do jakiejś rady, zrób kopię zapasową dokumentu, którego ona ma dotyczyć.
Wskazówka: w dokumentach używam czasem niestandardowych, bezpłatnych czcionek Gentium i Lato
kturendyk
Posty: 30
Rejestracja: pt sty 22, 2016 4:59 pm

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: kturendyk »

Witam ja korzystam z takiego kalendarza jak w załączonym przykładzie.W razie pytań pisać.
Załączniki
data.ods
(13.37 KiB) Pobrany 1568 razy
Apache OpenOffice 4.1.4, Windows 8.1
urden
Posty: 13
Rejestracja: czw mar 12, 2015 10:14 am

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: urden »

Jan_J pisze:Po 3 latach, modyfikacja z naniesieniem zmian API w LibreOffice.
W Apache OO może nie działać, w razie problemów proszę napisać post.
Witam serdecznie.
Dziękuję za skrypt - działa doskonale. Mam jednak problem - jak zmienić format daty? Skrypt wymusza datę YYYY-MM-DD. Ja w arkuszu potrzebuję formatu odwrotnego. Teraz wymuszam go na piechotę formatując komórkę po użyciu skryptu, ale to jest bez sensu, bo zajmuje więcej czasu niż wpisanie poprawnej daty z palca.
Pozdrawiam
Apache Openoffice 4.1.1, Xp prof
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

W kodzie procedury Basica atrybut komórki nazwany NumberFormat jest na sztywno ustawiony na wartość 84.
Różne standardowe formaty dat różnią się wartością tego atrybutu; patrz
https://www.openoffice.org/api/docs/com ... mberFormat
https://wiki.openoffice.org/wiki/Docume ... er_Formats
https://api.libreoffice.org/docs/idl/re ... ormat.html
a w postaci mniej formalnej także
https://ask.libreoffice.org/en/question ... berformat/

Formaty niestandardowe mogą mieć przydzieloną wartość w wyniku zarejestrowania, co w każdym przypadku może dać inną wartość.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Rafkus »

Troszkę pobawiłem kodem @Jan_J, i przy pomocy makr Andrew Pitonyak dokonałem pewnych (mam nadzieję) ulepszeń.
Najważniejsze to dodałem pole kombi z listą dostępnych formatów dat, można również dodawać nowe. Ponadto dodałem możliwość wstawienia daty do zaznaczonego zakresu komórek :

Kod: Zaznacz cały

rem written by Jan_J, Wrocław, October 2012
rem and Rafkus sierpień 2019
rem this file is public domain
rem
rem wstawia wybraną datę do bieżącej komórki w arkuszu
rem todo: inne typy dokumentów
rem todo: porządne formaty komórki/pola z datą zamiast magicznych liczb
rem W miare prosty sposób można wybrać/stworzyć inny format daty
rem todo: obsługuje przypadek, kiedy wybrany jest blok
rem todo: kod braku wartości (0 jest legalną wartością daty)
rem
Dim cc as variant 'pole kombi w oknie dialogowym
Sub InsertDate()
  Dim oCurrentSelection As Variant
  Dim aDate As Double
  Dim sString As String
  Dim formatNum As Long
  Dim komorka, oFormats As Object	
  Dim aLocale as new com.sun.star.lang.Locale  
  
  doc = thisComponent
  oCurrentSelection = doc.getCurrentSelection()
  if doc.supportsService("com.sun.star.sheet.SpreadsheetDocument") then 
    komorka = oCurrentSelection.getCellByPosition(0,0)
    sString = komorka.getString() 
    if sString <> "" then 
      aDate = komorka.getValue()
    else
      aDate = now()
    endif
    formatNum = komorka.NumberFormat
    aDate = DateSelection(aDate, formatNum)	'dialog
    if aDate <> 0 then
'Najpierw sprawdź, czy istnieje format liczb    
      sString = UCase(cc.text)	'muszą być wielkie litery, przy małych jest problem z dodaniem nowego formatu do listy)
      oFormats = doc.getNumberFormats()      
      formatNum = oFormats.queryKey(sString, aLocale, true)
      'MsgBox "Numer formantu wybranej komórki to" & formatNum
'Jeśli format liczb nie istnieje, dodaj go
      If (formatNum = -1) Then
        formatNum = oFormats.addNew(sString, aLocale)
        'MsgBox "Utworzono nowy format o numerze: " & formatNum
      End If
      
      for i=0 to oCurrentSelection.Columns.Count-1
        for j=0 to oCurrentSelection.Rows.Count-1
          komorka = oCurrentSelection.getCellByPosition(i, j)
          komorka.setvalue(aDate)
          komorka.NumberFormat = formatNum  '84 'yyyy-mm-dd date
        next j
      next i           
    end if
 '   print aDate
 '   print sString   
  end if  
End Sub

rem
rem wywołuje dialog wyboru daty; wybrana wartość zwracana jako wynik
rem w przypadku rezygnacji zwraca wartość 0
rem
function DateSelection(aDate,aNumer as long) as Variant

  dlg = createUnoService("com.sun.star.awt.UnoControlDialogModel")
  dlg.PositionX = 50
  dlg.PositionY = 50
  dlg.Width = 150
  dlg.Height = 50
  dlg.Title = "Wybór daty"
  
  dc = createUnoService("com.sun.star.awt.UnoControlDialog")
  dc.setModel(dlg) 

  field = dlg.createInstance("com.sun.star.form.component.DateField")
  field.DateFormat = 11 rem "yyyy-mm-dd"
  field.DropDown = True
  field.spin = True  	'dopisane  
  rem w razie potrzeby: zmiana zakresu obsługiwanych dat -- format ISO, np.
  rem field.DateMin = 16000101
  rem field.DateMax = 30001231  
  
  dlg.insertByName("CalendarField", field)
  fc = dc.getControl("CalendarField")
  fc.setPosSize(10, 10, 200, 30, com.sun.star.awt.PosSize.POSSIZE)

  fc.Date = cDateToISO(aDate)                  'skasować rem jeżeli jest stosowany OpenO.
rem  fc.Date = cDateToUNODate(aDate)     'skasować rem jeżeli jest stosowany LibreO.
  fc.setFocus()
  button = dlg.createInstance("com.sun.star.awt.UnoControlButtonModel")
  button.PushButtonType = com.sun.star.awt.PushButtonType.OK
  dlg.insertByName("OKButton", button)
  button.Label = "OK"
  bc = dc.getControl("OKButton")
  bc.setPosSize(210, 10, 50, 30, com.sun.star.awt.PosSize.POSSIZE)

  button = dlg.createInstance("com.sun.star.awt.UnoControlButtonModel")
  button.PushButtonType = com.sun.star.awt.PushButtonType.CANCEL
  dlg.insertByName("CancelButton", button)
  button.Label = "Anuluj"
  bc = dc.getControl("CancelButton")
  bc.setPosSize(260, 10, 50, 30, com.sun.star.awt.PosSize.POSSIZE)   
 
rem Dodane pole combi  
  combo = dlg.createInstance("com.sun.star.awt.UnoControlComboBoxModel")
  combo.DropDown = True
  dlg.insertByName("ComboBox", combo)
  cc = dc.getControl("ComboBox")
  cc.setPosSize(10, 50, 200, 30, com.sun.star.awt.PosSize.POSSIZE)

Dim oFormats ' Formats in the current document.
Dim oDane ' Keys queried from the formats.
Dim i as long' General index variable.
Dim sFormat$ ' Current format string.
Dim aLocale as new com.sun.star.lang.Locale

  oFormats = ThisComponent.getNumberFormats()
Rem Początkowy styl daty  
  if aNumer = 0 then  
    cc.text = "YYYY-MM-DD"
    else cc.text = oFormats.getbykey(aNumer).FormatString
  end if
rem lista pola combi  
  oDane = oFormats.queryKeys(2, aLocale, False)'com.sun.star.util.NumberFormat.DATE   
  For i = LBound(oDane) To UBound(oDane)
    sFormat=oFormats.getbykey(oDane(i)).FormatString
    'print oDane(i) & " = " & sFormat
    cc.additem(sFormat,0)	'0 – oznacza numer pozycji na liście	
  Next

  dc.setVisible(True)
  result = dc.Execute()
  if result = 1 then
    DateSelection = cDateFromISO(fc.Date)                      'skasować rem jeżeli jest stosowany OpenO.
rem        DateSelection = cDateFromUNODate(fc.Date)    'skasować rem jeżeli jest stosowany LibreO.
  else
    DateSelection = 0
  end if 
  
End Function
Załączniki
CalendarDlg-0.27r.oxt
Przypadkiem stworzyłem wersję .otx przerobionego makra, może komuś się przyda...
(5.67 KiB) Pobrany 326 razy
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Kalendarz - wybór daty do wpisania do komórki

Post autor: Jan_J »

OK, dzięki, jak będę miał spokojny dzień to przejrzę różnice i ew. zbuduję nową wersję oxt.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ