Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 Re: Calc » Přidávání položek do seznamu pomocí maker - VYŘEŠENO » 13. 12. 2012 16:04:54

Tady je soubor
Seznam-test.ods

Po otevření by měl být na listu "Úvod" vidět seznam, pak testovací Textové pole a testovací tlačítko "Načti seznam firem" (testovací pole a tlačítko tam pak nebude, je to jen pro testování)

Na tlačítko se váže skript NactiSeznamFirem.

V něm si nejprve najdu formulářový prvek seznamu s názvem "SeznamFirem" a pak bych jej měl můct ovládat přes proměnou Seznam.

	prvky = list.Drawpage.Forms 					
	for i = 0 to prvky.count - 1 
		prvek = prvky.getByIndex(i) 				
		if prvek.hasByName("SeznamFirem") then 		
			seznam = prvek.getByName("SeznamFirem") 
		endif
	next i

pak je skript, který by měl procházet tabulku s firmami a po jedné jí přidat jako položky do seznamu

	for i = 0 to pf
		NazevFirmy = list.getCellByPosition(0,i+1)
		
		rem zde by měl být kód přidávající/měnící položky v seznamu, nevím ale jak mu předat nové položky
		rem seznam.???? = NazevFirmy.string 								'// - přidání položky seznamu - místo TEXT je třeba použít příkaz ?????

		rem nebo nějakou metodou ?

		rem seznam.additem(NazevFirmy.string)								'// - metoda kterou jsem našel v specifikacích - nefunguje
	next i

zde právě nevím, jak se to dělá - tedy čím.

pak je tam část kteránajde testovací textové pole a vloží do něj text.

	for i = 0 to prvky.count - 1 
		prvek = prvky.getByIndex(i) 				
		if prvek.hasByName("Test") then 			
			objekt = prvek.getByName("Test") 		
		endif
	next i
	
	rem textové pole se dá ovládat přes vlastnost (proměnou) TEXT a skrz jí jej lze měnit.
	objekt.text="Toto změnit a ovládat jde." 

zde to tedy funguje, textové pole se dle názvu najde a pak použitím vlastnosti TEXT lze změnit textové pole na listu. U seznamu to ale nejde a neznám tu vlastnost - nebo metodu, kterou bych toho docílil.

#2 Calc » Přidávání položek do seznamu pomocí maker - VYŘEŠENO » 13. 12. 2012 14:44:57

milhausl
Odpovědí: 49

Dobrý den,

potřeboval bych poradit s následujícím problémem.

Mám list s tabulkou s daty (tabulka firem). Do tohoto listu pomocí dialogu skrz makra přidávám nové položky - nové firmy a současně je hned po vložení třídím dle abecedy. Tato tabulka by v konečném výsledku neměla být vidět (uživatelem a neměl by jí můct přímo měnit).

V dalším listu mám formulářový prvek Seznam, do kterého potřebuji načíst položky z oné tabulky firem. Nicméně mi nestačí nastavit přes vlastnosti určitý rozsah, ale potřebuji, aby se ten rozsah měnil v závislosti na počtu firem za běhu.

Problém je v tom, že nevím jak získat přístup k danému seznamu a především jak měnit/přidávat položky seznamu pomocí maker. Tedy neznám metodu, která umožňuje přidávat nové položky do seznamu za běhu (aby to nemuselo být nastaveno napevno).

Pro získání přístupu k formulářovému prvku Seznam na listu sem zkoušel tento návod a k jiným prvkům (jako je třeba textové pole) se lze dostat a měnit je (u textového pole například přes pole.text="obsah"). Ale u seznamu nevím jakou proměnou/mětodu použít k přidání položek.

Zkoušel jsem i vytvořit dialog, který by obsahoval pouze ListBox a který by se otevřel po kliknutí na například Textové pole (umístěního v listu). Po otevření toho dialogu by se tedy makrem načetly položky seznamu, uživatel si vybral a po kliknutí by se vybraná položka přesunula do textového pole v listu. Nicméně ani zde nevím, jak přidat nové položky do seznamu za běhu.

Vím o možnosti ve Vlastnostech->Data->Rozsah zdrojové buňky při umístění seznamu přímo do dokumentu, ale zde se to nastavuje napevno (což mi nevyhovuje), jelikož nevím, jestli těch firem bude 10, nebo 50 a nechci nastavovat takový rozsah.

Tedy jsou asi dvě možnosti
Buď nějak makrem změnit položku ListBox->Vlastnosti->Data->Rozsah zdrojové buňky a prostě jí vždy  makrem nastavit tak, aby pokrývala celou tabulku s daty(a tak se vlastně přidávaly nové hodnoty) a nebo pomocí makra a cyklu přímo projít řádek po řádku v tabulce s daty a vkládat je do seznamu takto.

Ale ani u jednoho nevím název proměnné/metody, kterou k tomu u listboxu menit/volat.

Snad jsem to popsal co nejvíce pochopitelně.

____________________________________________
Značím jako vyřešené


;o)

Zápatí

Používáme FluxBB