[Calc] Formato mm:ss,00 para un Timefield

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
markotxe
Mensajes: 27
Registrado: Jue May 02, 2019 9:47 am

[Calc] Formato mm:ss,00 para un Timefield

Mensaje por markotxe »

Buenas noches,
En una hoja de calculo, estoy intentando realizar un cronometro controlado desde un dialogo.

Tras varias búsquedas en este foro y en el net, he avanzado bastante.
- La función "Now" combinada con Array(), permite hacer desfilar el tiempo en una celda ("C8"). (Formateado en mm:ss,00)
- Un Dialogo, activado desde un boton, controla el tiempo (arrancar, parrar, resetear etc...).

Ahora, me gustaría recuperar el tiempo(/value) de la celda ("C8"), y que aparezca en el textfield1 del dialogo.
Sin embargo, no consigo poner el formato adecuado, a saber mm:ss,00 (minutos, segundos, centésimas).

Pensaba lograrlo con el código siguiente:
*CellDisplay = la celda ("C8")

Código: Seleccionar todo

oPDialog.getControl("TextField1").Text =Format( cellDisplay.value,format("mm:ss")& ","& Format(sec Mod 10,"00"))


Pero no funciona... Como se puede ver en el archivo adjuntado, al abrirse, el textfield1 del dialogo indica 00:00,10 en vez de 00:00,00.
No sé como hacer...

Gracias por vuestra atención.
Marc
Última edición por markotxe el Vie Feb 05, 2021 10:39 pm, editado 1 vez en total.
OpenOffice 4.1.5 CALC, Window10
Avatar de Usuario
iagodb
Mensajes: 220
Registrado: Lun Jul 18, 2016 11:03 am
Ubicación: Narón (A Coruña)

Re: [Calc] Formato mm:ss,00 para un textfield

Mensaje por iagodb »

sería format("MM:SS,00"), al menos en calc es así.
Imagen
Libreoffice 7.0 (x64) / Windows 10 Pro
markotxe
Mensajes: 27
Registrado: Jue May 02, 2019 9:47 am

Re: [Calc] Formato mm:ss,00 para un textfield

Mensaje por markotxe »

Buenas tarde iagodb, buenas tarde el foro,

El método que sugieres se aplica a las celdas de la hoja de calculo, verdad?
Mi problema es un poco diferente, no consigo aplicar el formato (mm:ss,00) al textfield de una caja de dialogo.

Siento no haber sido mas claro en mis explicaciones anteriores y te agradezco mucho el tiempo
dedicado a este post.
Gracias
Marc
OpenOffice 4.1.5 CALC, Window10
Avatar de Usuario
iagodb
Mensajes: 220
Registrado: Lun Jul 18, 2016 11:03 am
Ubicación: Narón (A Coruña)

Re: [Calc] Formato mm:ss,00 para un textfield

Mensaje por iagodb »

mmm... no soy un experto pero imagino que el error puede venir dado porque en una celda el valor de fecha/hora es un número decimal expresado en días y el valor de un textfield es eso, TEXTO.

Probablemente haya una solución más elegante que no conozco por no estar habituado a trabajar con eso, pero como "ñapa" podrías crear variables para las horas, minutos y segundos que quieres mostrar, y concatenarlas en la caja de texto con los ":" por el medio. Obviamente si FECHA es tu número de partida HH sería la parte decimal partido de 24 (truncando los decimales), MM la parte decimal de lo sobrante partido de 60 (truncando los decimales) y SS,00 la parte sobrante dividido entre 60 (aproximando a dos decimales).

No es bonito, lo sé xD
Libreoffice 7.0 (x64) / Windows 10 Pro
markotxe
Mensajes: 27
Registrado: Jue May 02, 2019 9:47 am

Re: [Calc] Formato mm:ss,00 para un textfield

Mensaje por markotxe »

Buenas noche iagodb, buenas noche el foro,

En primer lugar agradecerle, iagodb, por el interés y el tiempo dedicado a este hilo. Me habría gustado volver con UNA solución pero no es el caso...
Después de leer su mensaje:
. He cambiado el TextField por un TimeField. (mas adecuado?)
. He rebuscado en los foros (ingles, francés y castellano) una solución que resbale la pista evocada en su post anterior. (Concatenar)

Pensaba tener un buen filón con el código siguiente:

Código: Seleccionar todo

t = cellDisplay.value
	h    = Int(t * 24)
	m   = Int(t * 1440) - h * 60
	s    = Int(86400 * t) - h * 3600 - m * 60
	s00 = Int(864000 * t) - 100 * s - 6000 * m - 360000 * h

	hh    = right("00" & Trim(Str(h)), 2)
	mm  = right("00" & Trim(Str(m)), 2)
	ss     = right("00" & Trim(Str(s)), 2)
	ss00 = right("00" & Trim(Str(s00)), 2)
	
	FormatT = mm & ":" & ss & "," & ss00 
       oPDialog.getControl("TimeField1").Text =Format( cellDisplay.value,FormatT)
Pero no da resultado...
En este caso por ejemplo el TimeField devuelve la valor 00:0.000 en vez del 00:00,00 esperado.
Y se queda en 0 cuando el crono arranca... :crazy:

Sigo incapaz de recuperar el valor exacto de un celda (con formato mm:ss,00) en un TimeField (Con el mismo formato).

De todas las posibilidades que he probado (una docena), la que se aproxima mas, queda la del principio.

Código: Seleccionar todo

oPDialog.getControl("TimeField1").Text =Format( cellDisplay.value,format("mm:ss")& ","& Format(sec/10,"00"))
Aunque tampoco es satisfactorio dado quel TimeField devuelve el valor 00:00,10 en vez de 00:00,00.

Lamento no poder cerrar este post con el [RESUELTO] de uso. Me quedo a la disponibilidad de cada uno para todas sugestiones, pistas o consejos...

Gracias por vuestra atención y tiempo.
Marc
OpenOffice 4.1.5 CALC, Window10
Responder