Pequeño editor con pestañas en Gambas

Despues de muuuuuucho tiempo vuelvo a publicar algo sobre mi querido Gambas en este mi humilde blog, voy a tratar de no abandonarlo mucho pero a veces se me hace complicado por las multiples cosas que tengo que realizar y tambien por la flojera ;-).
Bueno pues resulta que se me ocurrio hacer un pequeño editor de texto tipo el famosisimo gedit, con pestañitas y todo asi que puse manos a la obra, lo primero fue tratar de averiguar que control nos permite trabajar en Gambas con pestañas y bueno encontre el TabStrip, cuya documentacion mas detallada junto con todas sus propiedades, metodos y eventos las podemos encontrar aqui.

Las propiedades con las que he trabajado aqui y que son las mas importantes de este Contenedor son las siguientes:

Observamos que tenemos tres pestañas porque se ha especificado la propiedad Count=3 si queremos mas pestañas incrementaremos esta propiedad.

En este caso tenemos la propiedad Text= “Pestaña 3” con lo que establecemos el texto del encabezado de la pestaña actual en este caso la pestaña numero 3 y asi con las demas pestañas.

Ahora si vamos de una vez al editor de texto, tenemos el siguiente formulario en modo de diseño:

Hasta el momento lo unico que hace es abrir archivos de texto en las diferentes pestañas de igual manera a como lo hace el gedit, para esto he trabajado la creacion de cada nueva pestaña de la siguiente manera.

PUBLIC SUB nuevaHoja()
	DIM txtEditAux AS TextArea
	'tabDoc es el nombre del TabStrip
	'En este caso estamos incrementando la propiedad Count en 1,
	'cada vez que creamos o abrimos un nuevo documento de texto
	tabDoc.Count += 1
	'Incrementamos la variabla conTabs que cuenta el numero de pestañas
	conTabs += 1
	'Con la propiedad index establecemos el indice de la pestaña actual,
	'en este caso va a ser el numero de la ultima pestaña creada establecida en conTabs
	tabDoc.Index = conTabs
	'Cuando se va a crear un documento nuevo se mostrara el siguiente mensaje en el encabezado de la pantalla,
	'"Documento N no guardado" donde N es el numero de la pestaña abierta
	tabDoc.Text = "Documento " & Str(tabDoc.Index + 1) & " no guardado"
	'Con las lineas de codigo siguientes establecemos dentro de cada contenedor el Text Area
	'que pusimos en la primera pestaña en modo diseño
	txtEditAux = NEW TextArea(tabDoc)
	txtEditAux.X = txtEdit.X
	txtEditAux.Y = txtEdit.Y
	txtEditAux.Height = txtEdit.Height
	txtEditAux.Width = txtEdit.Width
	txtEditAux.Visible = TRUE
END

Para abrir un documento de texto ya existente he implementado el siguiente metodo, el cual tambien hace uso en parte del metodo anterior.

PUBLIC SUB menAbrir_Click()
	DIM arrCad AS NEW String[]
	DIM txtTemp AS TextArea
	DIM c AS String
	DIM ruta AS String
	'Uso Dialog para desplegar una ventana seleccionadora de documentos
	Dialog.Title = "Seleccione un archivo"
	'Con la propiedad Filter filtramos los tipos de documentos permitidos, en este caso archivo txt
	Dialog.Filter = ["*.txt", "Archivos de Texto"]
	'El metodo OpenFile retorna Falso si el usuario ha clickeado en OK o verdadero si cancelo la opcion
	IF NOT Dialog.OpenFile() THEN
		'Con Dialog.Path obtenemos la ruta del archivo seleccionado
		ruta = Dialog.Path
		'Con el metodo Load de la clase File cargamos el contenido del archivo como una cadena de texto
		'Con el metodo Split cortamos la cadena separandola por cada linea de texto del archivo
		arrCad = Split(File.Load(ruta), "\n")
		'La propiedad Children devuelve todos los controles del contenedor(pestaña) actual,
		'en este caso solo tenemos el Text Area, por lo que su indice es cero
		'y lo asignamos a la variable txtTemp
		txtTemp = tabDoc.Children[0]
	END IF
	'Si el area de texto actual no esta vacia abrimos otra pestaña con otra hoja lista.
	IF txtTemp.Text <> "" THEN
		nuevaHoja()
	END IF
	'Aqui obtenemos cada cadena de texto de las que fueron cargadas del archivo
	FOR EACH c IN arrCad
		'Establecemos como encabezado de la pestaña la ruta del archivo
		tabDoc.Text = ruta
		'Asignamos la hoja de texto actual a la variable txtTemp para manipular su contenido
		txtTemp = tabDoc.Children[0]
		'En este caso con el contenido del archivo
		txtTemp.Text &= c & "\n"
	NEXT

END

Finalmente aqui tenemos el pequeño programita en ejecucion:

Cualquier duda, sugerencia, aporte, critica murmuracion, lamento, etc 🙂 espero me la puedan hacer llegar a este humilde espacio, eso es todo por hoy ya me voy a dormir.
Saludos.

Anuncios

3 respuestas a “Pequeño editor con pestañas en Gambas

  1. Un pequeño y sencillo editor de texto hecho en gambas…. chvre !!! .. presentando aplicaciones como ésta sin duda q’ convence a cualquiera a meterse al mundo de gambas… xD

  2. hola q tal primero gracias por el aporte esta muy bien comentado
    pero te queria preguntar algo, mira tengo dos fmain en el fmain1 uno tengo un tabscrip con 6 pestañas y cada pestaña tiene dos frame y cada frame tiene textbox, lo que quiero hacer es obtener la informacion de uno de esos textbox para usarla en el otro fmain2, lo he intentado con children pero solo puedo acceder a la primer pestaña pero yo quiero acceder a las demas y no se como espero me puedas ayudar.
    gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s