Witam,
z pomocą dostępnych przykładów, skleiłem kod który po wpisaniu w pole formularza 13 cyfr kodu kreskowego wystawia ten kod do dokumentu. Jednak za każdym razem jest to nowy kod, a zależy mi żeby podmieniać tylko źródło tego jednego kodu (nie mam pojęcia jak to zrobić). Wiem, że można podmienić to z poziomu menu, ale mam zamiar aby to makro ( z kodem kreskowym) scalić z posiadanym przeze minie już kodem.
W innym makrze które mam, żądany obiekt jest szukany za pomocą nazwy/id i po jego odszukaniu jest wstawiany do niego tekst. Domyślam się (?), że w/w przykładzie powinno działać to podobnie (?) jednak nie wiem jak to można zrobić.
pozdrawiam
[SOLVED] Zmiana źródła istniejącego obrazu
Re: Zmiana źródła istniejącego obrazu
Podmiana źródłowego obrazu w obiekcie z poziomu makra API jest bardzo słabo udokumentowana. Mogę spróbować, ale bez gwarancji że coś wyjdzie.
Podmiana pliku z obrazem w zewnętrznym dokumencie odt powinna być z kolei łatwa. Toć to zwykły zip, a wszystko co ma być o obrazie png wpisane, tj. referencja w Manifest.xml oraz odwołania w kodzie dokumentu, zostało już zrobione. Wystarczy znać nazwę pliku z obrazem (powinna zostć taka samas), więc w *nieotwartym* dokumencie wystarczyłoby zapakować go do zip-a zamiast poprzedniego obrazu.
Istnieją makra generujące kod kreskowy za pomocą fontów. Na przykład projekt użytkownika @OooUser46, czyli https://forum.openoffice.org/pl/forum/v ... 629#p19629 – jest to nawet dodatek do pakietu.
Ale pewnie to stosujesz.
W wolnej chwili zajrzę jak się podmieniało źródło grafiki w obiekcie; o ile znajdę.
Podmiana pliku z obrazem w zewnętrznym dokumencie odt powinna być z kolei łatwa. Toć to zwykły zip, a wszystko co ma być o obrazie png wpisane, tj. referencja w Manifest.xml oraz odwołania w kodzie dokumentu, zostało już zrobione. Wystarczy znać nazwę pliku z obrazem (powinna zostć taka samas), więc w *nieotwartym* dokumencie wystarczyłoby zapakować go do zip-a zamiast poprzedniego obrazu.
Istnieją makra generujące kod kreskowy za pomocą fontów. Na przykład projekt użytkownika @OooUser46, czyli https://forum.openoffice.org/pl/forum/v ... 629#p19629 – jest to nawet dodatek do pakietu.
Ale pewnie to stosujesz.
W wolnej chwili zajrzę jak się podmieniało źródło grafiki w obiekcie; o ile znajdę.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Zmiana źródła istniejącego obrazu
zamień swoją linijkę kodu:
następującymi:
Te dodatkowe linijki kodu będą działały gdy wstawiany obiekt będzie miał nadaną jakąś nazwę. Podczas prób u mnie wyświetlany kod zmieniał się dopiero po najechaniu na niego myszką.
W przypadku, gdyby w dokumencie było kilka obiektów graficznych, proponuje wykorzystać poniższy kod:
Kod: Zaznacz cały
oDP = ThisComponent.DrawPage.add(oImagen_obj)
Kod: Zaznacz cały
Dim oDrawPage As Variant
Dim oObj1 As Variant
oDrawPage = ThisComponent.DrawPage
if oDrawPage.Count = 1 then 'jeśli w dokumencie jest tylko przycisk
oDrawPage.add(oImagen_obj) 'wstaw nowy obiekt
oDrawPage.getByIndex(1).name = "kod" 'nazwij wstawiany obiekt
else 'jeśli w dokumencie jest więcej obiektów (w założeniu konkretnie 2)
oObj1 = oDrawPage.getByIndex(1) 'przycisk ma indeks 0
oObj1.GraphicURL = oImagen_obj.GraphicURL 'zamień obiekt
end if
W przypadku, gdyby w dokumencie było kilka obiektów graficznych, proponuje wykorzystać poniższy kod:
Kod: Zaznacz cały
Dim oDrawPage As Variant
Dim oObj1 As Variant
oDrawPage = ThisComponent.DrawPage
i=0
do while oDrawPage.getByIndex(i).name <> "kod" 'czy dany obiekt nosi nazwę "kod"
i=i+1 'jeśli obiekt nie nazywa się "kod" przejdź do następnego elementu
if i= oDrawPage.Count then 'jeśli sprawdzono wszystkie obiekty
oDrawPage.add(oImagen_obj) 'wstaw nowy obiekt
oDrawPage.getByIndex(i).name = "kod" 'nazwij wstawiany obiekt
exit sub 'zakończ makro
end if
loop
oObj1 = oDrawPage.getByIndex(i) 'Znaleziony obiekt kod
oObj1.GraphicURL = oImagen_obj.GraphicURL 'zamień obiekt
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP