Cellaháttér RGB színkoordináták alapján

Táblázatkezelő
Avatar
telmerk
Önkéntesek
Hozzászólások: 55
Csatlakozott: 2008. március 14., péntek 9:53
Tartózkodási hely: Closed office

Cellaháttér RGB színkoordináták alapján

Hozzászólás Szerző: telmerk »

Szervusztok!

Színkoordinátákat számoltam ki Libreoffice Calc-al, és eredményül kaptam 3 számot kaptam: R, G és B értékeket. Azt szeretném elérni, hogy a megfelelő cella ez alapján a 3 koordináta alapján színeződjön ki. Lehetséges ez? Vagyis adott négy oszlop, az első három a 3 színkoordináta, a negyedik a kapott szín.

Köszönettel:

ttm
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cellaháttér RGB színkoordináták alapján

Hozzászólás Szerző: Zizi64 »

Ha csak a színt szeretnéd látni, akkor talán számodra is hasznos lehet az RGB nevű kiterjesztés:
http://extensions.services.openoffice.o ... roject/RGB

Ha ezt függvénnyel szertnéd megvalósítani, az a véleményem, hogy ez nem fog egyszerűen menni. A saját Basic függvények a cellának (és csak annak a cellának!) - ahonnan a hívás történt - az értékét tudják csak megváltoztatni, egyéb tulajdonságát nem.

"Külső" szubrutinnal ez lehetséges. Be kell olvasnod a három cella értékét (a helyüket persze tudnod kell), és az RGB

Például az A10 cella színének megváltoztatásához itt egy nagyon egyszerű kód:

Kód: Egész kijelölése

Sub ChangeCellBackgroundColor
 oSheet=thiscomponent.getcurrentcontroller.activesheet
 ocell = osheet.getCellRangeByName("A10") 
 ocell.CellBackColor = RGB (20, 100, 200)
end sub
A gond a paraméterátadással van, hiszen ahogy mondtam, függvényként hiába hívnád meg, semmiképpen nem működne.

Beolvashatod persze adott cellákból az RGB értéket (most a B oszlopra írt példát látsz):

Kód: Egész kijelölése

Sub ChangeCellBackgroundColor
	oSheet=thiscomponent.getcurrentcontroller.activesheet
	
	oR_cell = osheet.getCellRangeByName("B1")
	R_value = oR_Cell.value
	
	oG_cell = osheet.getCellRangeByName("B2")
	G_value = oG_Cell.value
	
	oB_cell = osheet.getCellRangeByName("B3")
	B_value = oB_Cell.value
	
	
	ocell = osheet.getCellRangeByName("B10") 
	ocell.CellBackColor = RGB (R_value, G_value, B_value)
end sub
...de a szubrutin meghívását csak menüponthoz, eszköztár elemhez, vagy mondjuk nyomógombhoz rendelve, kézi beavatkozással tudod elérni. (Csak függvényt tudsz cellából közvetlenül meghívni, szubrutint nem - és ezzel bezárult a kör.)


(Talán, ha egy "listenert" létrehozol a három cella változásának figyelésére Basicben, akkor a szubrutinodat "függvényszerűvé" tudod változtatni, hiszen az mindannyiszor lefut, amikor a három cella közül valamelyiknek az értéke megváltozik, és ilyenkor mindig meghívja a szubrutinodat, ami bemeszeli a kívánt cellát.)

((Hozzá lehet rendelni a szubrutint a "Dokumentum állapota megváltozott" eseményhez is, de ez elég veszélyes dolog, rosszul sülhet el - könnyen végtelen ciklusba kerülhet az ember...))
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Válasz küldése