354 lines
4.8 KiB
Markdown
354 lines
4.8 KiB
Markdown
---
|
|
title: Hojas
|
|
---
|
|
|
|
## Trabajar con hojas
|
|
|
|
---
|
|
|
|
### Referencia por **índice**
|
|
|
|
```py
|
|
doc = app.active
|
|
hoja = doc[0]
|
|
app.debug(hoja.name)
|
|
```
|
|
|
|
|
|
### Referencia por **nombre**
|
|
|
|
```py
|
|
doc = app.active
|
|
hoja = doc['datos']
|
|
app.debug(hoja.name)
|
|
```
|
|
|
|
### **in**
|
|
|
|
Verificar por nombre si una hoja existe.
|
|
|
|
```py
|
|
doc = app.active
|
|
existe = 'Hoja2' in doc
|
|
app.debug(existe)
|
|
```
|
|
|
|
### **len**
|
|
|
|
Contar la cantidad de hojas en el documento.
|
|
|
|
```py
|
|
doc = app.active
|
|
contar = len(doc)
|
|
app.debug(contar)
|
|
```
|
|
|
|
### **iter**
|
|
|
|
Recorrer todas las hojas.
|
|
|
|
```py
|
|
doc = app.active
|
|
for hoja in doc:
|
|
app.debug(hoja)
|
|
```
|
|
|
|
<br>
|
|
|
|
## Propiedades
|
|
|
|
---
|
|
|
|
### **code_name**
|
|
|
|
Nombre editable y accesible solo por código.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
app.msgbox(hoja.code_name)
|
|
hoja.code_name = 'datos'
|
|
app.msgbox(hoja.code_name)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **color**
|
|
|
|
Color de la pestaña.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
app.msgbox(hoja.color)
|
|
|
|
hoja.color = 'red'
|
|
app.msgbox(hoja.color)
|
|
|
|
# RGB
|
|
hoja.color = (125, 200, 10)
|
|
app.msgbox(hoja.color)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **doc**
|
|
|
|
Devuelve al documento Calc donde esta la hoja.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
doc = hoja.doc
|
|
app.debug(doc.title)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **is_protected**
|
|
|
|
Devuelve verdadero (True) si la hoja esta protegida
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
esta_protegida = hoja.is_protected
|
|
app.debug(esta_protegida)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **name**
|
|
|
|
Nombre visible y editable por el usuario.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
app.debug(hoja.name)
|
|
hoja.name = 'Nuevo Nombre'
|
|
app.debug(hoja.name)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **password**
|
|
|
|
Establecer una contraseña.
|
|
|
|
!!! tip "Consejo"
|
|
|
|
Si la hoja ya esta protegida, aún sin contraseña, este método no tendrá ningún efecto.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
hoja.password = 'siscaloburropanzon'
|
|
app.debug(hoja.is_protected)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **used_area**
|
|
|
|
Referencia al área de usuario actual.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
rango = hoja.used_area
|
|
app.debug(rango)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **visible**
|
|
|
|
Muestra u oculta la hoja
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
app.msgbox(hoja.visible)
|
|
hoja.visible = not hoja.visible
|
|
app.msgbox(hoja.visible)
|
|
hoja.visible = not hoja.visible
|
|
```
|
|
|
|
!!! tip "Cuidado"
|
|
|
|
Solo funcionará con dos o más hojas, por que debe haber al menos una visible. Siempre puedes trabajar con todo el documento oculto.
|
|
|
|
<br>
|
|
|
|
## Métodos
|
|
|
|
---
|
|
|
|
### **activate**
|
|
|
|
Pasar el foco a la hoja.
|
|
|
|
!!! tip inline end "Recuerde"
|
|
|
|
No es necesario activar una hoja para manipularse.
|
|
|
|
```py
|
|
doc = app.active
|
|
hoja = doc[-1]
|
|
hoja.activate()
|
|
```
|
|
|
|
<br>
|
|
|
|
### **copy**
|
|
|
|
!!! tip "Consejo"
|
|
|
|
Siempre valide que no exista el nuevo nombre.
|
|
|
|
```py
|
|
doc = app.active
|
|
hoja = doc[0]
|
|
|
|
nuevo_nombre = f'{hoja.name}_2'
|
|
if not nuevo_nombre in doc:
|
|
hoja.copy(nuevo_nombre)
|
|
```
|
|
|
|
Si no se establece el nuevo nombre, se generá de forma automática: `nombre + índice`.
|
|
|
|
```py
|
|
hoja.copy()
|
|
```
|
|
|
|
### **copy_to**
|
|
|
|
Copiar la hoja a otro documento. Se usa el mismo nombre.
|
|
|
|
```py
|
|
doc = app.active
|
|
hoja = doc.active
|
|
|
|
documento_nuevo = app.docs.new()
|
|
hoja.copy_to(documento_nuevo)
|
|
```
|
|
|
|
Usar un nuevo nombre.
|
|
|
|
```python
|
|
hoja.copy_to(documento_nuevo, 'Nuevo nombre')
|
|
```
|
|
|
|
<br>
|
|
|
|
### **move**
|
|
|
|
Mover a la última posición.
|
|
|
|
```py
|
|
doc = app.active
|
|
hoja = doc[0]
|
|
hoja.move()
|
|
```
|
|
|
|
Mover a una posición especifica.
|
|
|
|
```py
|
|
doc = app.active
|
|
hoja = doc[0]
|
|
hoja.move(3)
|
|
```
|
|
|
|
<br>
|
|
|
|
### **remove**
|
|
|
|
Remover hoja.
|
|
|
|
```py
|
|
sheet = app.active.active
|
|
sheet.remove()
|
|
```
|
|
|
|
!!! warning "Cuidado"
|
|
|
|
Siempre debe existir al menos una hoja.
|
|
|
|
<br>
|
|
|
|
### **unprotect**
|
|
|
|
Quitar contraseña.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
hoja.password = 'siscaloburropanzon'
|
|
app.msgbox(hoja.is_protected)
|
|
|
|
hoja.unprotect('siscaloburropanzon')
|
|
app.msgbox(hoja.is_protected)
|
|
```
|
|
|
|
<br>
|
|
|
|
## Eventos
|
|
|
|
---
|
|
|
|
### **names**
|
|
|
|
Obtener una tupla con los eventos soportados por la hoja.
|
|
|
|
```py
|
|
hoja = app.active.active
|
|
|
|
for nombre in hoja.events.names:
|
|
app.debug(nombre)
|
|
```
|
|
|
|
```sh
|
|
23/04/2023 16:59:26 - DEBUG - OnFocus
|
|
23/04/2023 16:59:26 - DEBUG - OnUnfocus
|
|
23/04/2023 16:59:26 - DEBUG - OnSelect
|
|
23/04/2023 16:59:26 - DEBUG - OnDoubleClick
|
|
23/04/2023 16:59:26 - DEBUG - OnRightClick
|
|
23/04/2023 16:59:26 - DEBUG - OnChange
|
|
23/04/2023 16:59:26 - DEBUG - OnCalculate
|
|
```
|
|
|
|
<br>
|
|
|
|
### Asignar una macro a un evento.
|
|
|
|
```py
|
|
def on_select(source):
|
|
app.debug(source.AbsoluteName)
|
|
return
|
|
|
|
|
|
def main():
|
|
doc = app.active
|
|
hoja = doc.active
|
|
|
|
if 'OnSelect' in hoja.events:
|
|
macro = {'library': 'test', 'name': 'on_select'}
|
|
hoja.events['OnSelect'] = macro
|
|
|
|
return
|
|
```
|
|
|
|
<br>
|
|
|
|
### Eliminar la asignación del evento.
|
|
|
|
```py
|
|
hoja.events['OnSelect'] = {}
|
|
```
|
|
|
|
O
|
|
|
|
```py
|
|
hoja.events.remove('OnFocus')
|
|
```
|
|
|
|
<br> |