roTextField
13 min
un campo de texto representa un área de la pantalla que puede contener texto arbitrario esta función está destinada a presentar información de diagnóstico y uso utilice el objeto rotextwidget para generar texto para interfaces de usuario y señalización creación del objeto el objeto se crea con varios parámetros createobject("rotextfield", xpos as integer, ypos as integer, width in chars as integer, height in chars as integer, metadata as object) xpos la coordenada horizontal para la esquina superior izquierda del campo de texto ypos la coordenada vertical para la esquina superior izquierda del campo de texto la parte superior de la pantalla equivale a cero width in chars el ancho del campo de texto en celdas de caracteres height in chars la altura del campo de texto en celdas de caracteres metadatos un roassociativearray opcional que contiene parámetros adicionales para el campo de texto puede pasar cero si no requiere esto el arreglo asociativo metadata admite los siguientes parámetros adicionales "charwidth" el ancho de cada celda de caracteres en píxeles "charlength" la altura de cada celda de caracteres en píxeles "backgroundcolor" el color de fondo del campo de texto como un entero que especifica ocho bits (para cada uno) para rojo, verde y azul con la forma \&hrrggbb "textcolor" el color del texto como un entero que especifica ocho bits (para cada uno) para rojo, verde y azul con la forma \&hrrggbb "size" una alternativa a "charwidth" y "charlength" para especificar texto de tamaño normal (0) o texto de doble tamaño (1) en los modos tv, es posible que no se muestre un borde alrededor de la pantalla debido al overscanning puede que desee utilizar las funciones del objeto rovideomode getsafex() y getsafey() para asegurarse de que las coordenadas que utilice sean visibles iftextfield cls() as void limpia el campo de texto getwidth() as integer devuelve el ancho del campo de texto getheight() as integer devuelve la altura del campo de texto setcursorpos(x as integer, y as integer) as void mueve el cursor a la posición especificada la salida posterior aparecerá en esta posición getvalue() as integer devuelve el valor del carácter que está actualmente debajo del cursor raise() as void envía el widget a la parte superior del orden z en el plano gráfico (es decir, delante de todas las demás superficies que implementan la interfaz ifwidget ) de forma predeterminada, los nuevos widgets se colocan en la parte superior del orden z gráfico algunas superficies siempre se dibujan en la parte superior del orden z gráfico, incluido el cursor del mouse, los subtítulos y teletipos desplazables docid 2pwsmk6gfbdkc8rtfzkfj puede utilizar los métodos pausegraphics() / resumegraphics() en el objeto rovideomode docid\ f0dvnrbdpvgozlrvb29gd para garantizar que múltiples cambios en el orden z gráfico ocurran simultáneamente lower() as void envía el widget a la parte inferior del orden z en el plano gráfico (es decir, detrás de todas las demás superficies que implementan la interfaz ifwidget ) de forma predeterminada, los nuevos widgets se colocan en la parte superior del orden z gráfico ifstreamsend sendbyte(byte as integer) as void escribe el carácter indicado por el número especificado en la posición actual del cursor dentro del campo de texto luego avanza el cursor sendline(string as string) as void escribe los caracteres especificados en la posición actual del cursor seguidos por la secuencia de fin de línea sendblock(string as dynamic) as void escribe los caracteres especificados en la posición actual del cursor y avanza el cursor hasta una posición después del último carácter este método puede admitir una cadena o un robytearray docid\ sfqfi518ihedcp48yoocm si el bloque es una cadena, cualquier byte nulo terminará el bloque setsendeol(string as string) as void establece la secuencia enviada al final de un valor sendline() debe dejar esto en el valor ascii predeterminado de 13 (retorno de carro) para un uso normal si necesita cambiar este valor a otro carácter no imprimible, use la chr función global docid 8viubcc3f1mpxoos0i8yf la interfaz ifstreamsend también se describe en la sección que documenta los diversos objetos de archivo la interfaz se describe nuevamente aquí de una manera más específica para el objeto rotextfield impresión de un campo de texto al igual que con cualquier objeto que implemente la interfaz ifstreamsend , se puede escribir en un campo de texto usando la sintaxis print #textfield consulte el siguiente ejemplo para obtener más detalles también es posible escribir en un campo de texto usando la sintaxis print #textfield, @pos, donde pos es la posición del carácter en el campo de texto por ejemplo, si su objeto campo de texto tiene 8 columnas y 3 filas, escribir en la posición 17 escribe en la fila 3, columna 2 (las posiciones 0 7 están en la fila 1; las posiciones 8 15 están en la fila 2; y las posiciones 16 23 están en la última fila) cuando la salida llegue a la parte inferior del campo de texto, este se desplazará automáticamente ejemplo meta = createobject("roassociativearray") meta addreplace("charwidth", 20) meta addreplace("charlength", 32) meta addreplace("backgroundcolor", \&h101010) ' dark grey meta addreplace("textcolor", \&hffff00) ' yellow vm = createobject("rovideomode") tf = createobject("rotextfield", vm getsafex(), vm getsafey(), 20, 20, meta) print #tf, "hello world" tf setcursorpos(4, 10) print #tf, "world hello"