Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO)
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO) 
 
Hola Comunidad, tengo una necesidad:

Deseo saber cual el Index de una determinada TAB buscándolo por medio de su propiedad Caption.

Actualmente lo hice así en una función, pero no me gusta porque me va moviendo de la pestaña 0 a X, y es lógico que lo haga pues yo así lo indico en la linea


TabStrip3.Index = (a - 1)


Fragmento completo:

PUBLIC FUNCTION ScanTab(IdCaption AS String)
  
  DIM a AS Integer = 0
  
  FOR a = 1 TO TabStrip3.Count STEP 1
      TabStrip3.Index = (a - 1)
      IF TabStrip3[TabStrip3.Index].Caption = IdCaption  
         a = TabStrip3.Count
      ENDIF
  NEXT
  
END
 


Mi pregunta es la siguiente:

Existe una función que me permita buscar un tab por medio de la propiedad Caption  en un contenedor TabStrip y así saber que Index tiene, noto que existe una función Find pero no se si me sirva para lo que deseo.

Aunque ahora se me ocurre hacerle una copia al TabStrip en memoria sin hacerlo visible en tiempo de ejecución y así hacer el recorrido que hago con el fragmento de código expuesto al TabStrip TMP y al final solo retornaría el Index del TMP al Original.  Imagino que esto se podrá hacer.

Si me pueden dar ideas se los agradecería.



SOLUCIONADO



 
      TabStrip3.Index = ScanTab(SqlTabla7!id) - 1



PUBLIC FUNCTION ScanTab(IdCaption AS Integer) AS Integer
  
  DIM a AS Integer = 0
  DIM b AS Integer = 0
  
  FOR a = 1 TO TabStrip3.Count STEP 1
      IF TabStrip3[(a - 1)].Caption = IdCaption THEN
         b = a
         a = TabStrip3.Count
         RETURN a
      ENDIF  
  NEXT

END
 

 



 
última edición por aristicol el Sabado, 06 Febrero 2010, 22:42; editado 3 veces 
aristicol - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Búsqueda De Un Tab O Pestaña En Un TabStrip 
 
Aristicol no te sientas ofendido, pero esa rutina es un concierto de errores.

Citar:


'Falta el tipo de retorno de la función
'PUBLIC FUNCTION ScanTab(IdCaption AS String)
DIM a AS Integer = 0

  'El paso predefinido de FOR es 1 por lo que no es necesario especificar: STEP 1
  'Recorrer de 1 a Count y luego corregir el indice (a - 1) no tiene sentido
  FOR a = 1 TO TabStrip3.Count STEP 1
     'Cambiar de pestaña secuencialmente tampoco tiene sentido:
     TabStrip3.Index = (a - 1)
     IF TabStrip3[TabStrip3.Index].Caption = IdCaption  
        'JAMAS MODIFICAR la variable que actua como INDICE de un FOR.
        a = TabStrip3.Count
     ENDIF
 NEXT
 
END
 



Corrigiendo algunos errores resulta:

PUBLIC FUNCTION ScanTab(IdCaption AS String) AS Integer
DIM a, indice AS Integer

  a = 0
  indice = -1
 
  FOR a = 0 TO TabStrip3.Count - 1
     IF TabStrip3[a].Caption = IdCaption  
        indice = a
     ENDIF
 NEXT
 RETURN indice
 
END
 


Pero aún se utiliza una estructura de control iterativa incorrecta, que obliga a iterar hasta el último item aunque la pestaña buscada se haya encontrado en cualquier item anterior. Para este caso la estructura adecuada es WHILE:

PUBLIC FUNCTION ScanTab(IdCaption AS String) AS Integer
DIM a, indice AS Integer

  a = 0
  indice = -1
  WHILE (a <= TabStrip3.Count - 1) AND (indice = -1)
    IF TabStrip3[a].Caption = IdCaption THEN
       indice = a
    ENDIF
    a += 1
  WEND
  RETURN indice
END
 


La llamada:

DIM indice AS Byte
  indice = ScanTab("Tab 2")
  IF indice <> -1 THEN
    TabStrip3.Index = indice
  ENDIF
 


Saludos cordiales.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
última edición por fabianfv el Sabado, 06 Febrero 2010, 23:04; editado 1 vez 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO) 
 
SOLUCIONADO



 
Código: [Descargar] [Ocultar] [Seleccionar]
     TabStrip3.Index = ScanTab(SqlTabla7!id) - 1



Código: [Descargar] [Ocultar] [Seleccionar]
PUBLIC FUNCTION ScanTab(IdCaption AS Integer) AS Integer
  
  DIM a AS Integer = 0
  DIM b AS Integer = 0
  
  FOR a = 1 TO TabStrip3.Count STEP 1
      IF TabStrip3[(a - 1)].Caption = IdCaption THEN
         b = a
         a = TabStrip3.Count
         RETURN a
      ENDIF  
  NEXT

END
 

 
Gracias pero tal vez diga "CONCIERTO DE ERRORES" pero aun así aunque no tenia retorno de lo que sabia a clara vista decidí mejorarla, tal vez no deje ver todo lo que hace ni todo el contexto de rutinas.

Creo que es aligerado descalificar algo tan tajante si conocer 100% el conjunto, la pregunta era clara y talvez difícil de entender, pero ya lo resolví.


Se me olvidaba:

 IF TabStrip3[TabStrip3.Index].Caption = IdCaption  
        'JAMAS MODIFICAR la variable que actua como INDICE de un FOR.
        a = TabStrip3.Count

esto si se puede hacer cuando uno quiere romper el for.
 



 
última edición por aristicol el Sabado, 06 Febrero 2010, 23:12; editado 1 vez 
aristicol - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO) 
 
Citar:

Gracias pero tal vez diga "CONCIERTO DE ERRORES" pero aun así aunque no tenia retorno de lo que sabia a clara vista decidí mejorarla, tal vez no deje ver todo lo que hace ni todo el contexto de rutinas.

No entiendo lo que dices.

Citar:

Creo que es aligerado descalificar algo tan tajante si conocer 100% el conjunto.


No sé de qué conjunto hablas. Yo sólo me refiero a la rutina que expusiste.

Veo que a pesar que te pedí que no lo tomaras a mal, eliges tomartelo a mal.

Bien, no puedo hacer nada para evitar eso, excepto aclarar que la palabra "descalificar" no tiene ninguna posibilidad de aplicación cuando se señala un error. Lamento que estés en un momento de hiper-sensibilidad que no te permita reconocer tus propios errores, porque de ese modo no te será posible aprender.

Mi respuesta no tiene acritud, sólo quiero llamar tu atención sobre que tu reacción está fuera de contexto.

Citar:

, la pregunta era clara y talvez difícil de entender, pero ya lo resolví.


Revisa el código que escribí para que veas que hay otras posibles soluciones, más eficientes y que muestran una utilización correcta de los recursos del lenguaje.

Citar:

Se me olvidaba:

IF TabStrip3[TabStrip3.Index].Caption = IdCaption
'JAMAS MODIFICAR la variable que actua como INDICE de un FOR.
a = TabStrip3.Count

esto si se puede hacer cuando uno quiere romper el for.


Como poder, puedes hacer lo que quieras. Pero FOR es una estructura de control repetitiva pensada para recorrer todos los elementos de un array, colección u otras estructuras de memoria.

Usar cualquier estructura de control repetitiva y luego "romperla" sólo muestra que no se sabe elegir la estructura iterativa adecuada y cómo condicionar su entrada o salida.

Te dejo mis saludos cordiales.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO) 
 
aristicol escribió: [Ver mensaje]


Creo que es aligerado descalificar algo tan tajante si conocer 100% el conjunto, la pregunta era clara y talvez difícil de entender, pero ya lo resolví.


Creo que nadie está descalificando nada. Simplemente fabianfv te está mostrando la forma (o una de las formas) correctas de programar. Querer aprender o no, ya es cosa de cada cual.

Citar:

Se me olvidaba:

 IF TabStrip3[TabStrip3.Index].Caption = IdCaption  
        'JAMAS MODIFICAR la variable que actua como INDICE de un FOR.
        a = TabStrip3.Count

esto si se puede hacer cuando uno quiere romper el for.


De nuevo estás en un error. La forma correcta de romper un bucle FOR-NEXT es mediante la instrucción BREAK.

Noto un exceso de orgullo en tu última intervención. Por cierto, agradecer la ayuda de los foristas, tampoco está de más.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO) 
 
Citar:

La forma correcta de romper un bucle FOR-NEXT es mediante la instrucción BREAK.


Es cierto Jesús. Pero tanto BREAK como CONTINUE son de esas sentencias que generalmente resulta innecesario utilizar. De hecho a mí siempre me resultó extremadamente difícil encontrar una situación donde su uso no pudiera ser fácilmente reemplazado por la estructura iterativa (el bucle) correcta y las condiciones de entrada (WHILE) o salida (REPEAT) pertinentes.

Es un buen tema de discusión como otros que hemos tratado en mensajes privados. Tal vez sería una buena idea abrir un foro para hablar sobre este tipo de cuestiones.

Saludos cordiales.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO) 
 
¿Que sucede cuando se alcanza el valor máximo "Hasta" en un Ciclo?

Simplemente se termina, o ¿Que sucede cuando uno encuentra algo que estaba buscando? simplemente finaliza no tiene necesidad de seguir buscando.

La forma como se finalice un Ciclo creo que queda según la necesidad, y una rutina siempre va a tener mejor escritura.

Ahora si por el hecho de preguntar algo lo van a calificar de "no saber programar" prefiero no volver hacerlo, una cosas es no saber programar otra muy distinta tener una duda o algo de fatiga, pero uno siempre termina encontrando soluciones.

Y no es orgullo es simplemente saber decir las cosas, yo creo que decir "No te vayas a ofender" no es garantía de que no vaya a suceder.


También tengo claro, la lógica es la misma, la forma de dar soluciones diversas.

A todo lo anterior puedo decir, tanta polémica por una simple respuesta.

TabStrip3[(a - 1)].Caption = IdCaption


Y claro que Agradezco a todos lo que me han dado Soluciones, Muchas Gracias.
 



 
aristicol - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Búsqueda De Un Tab O Pestaña En Un TabStrip (SOLUCIONADO) 
 
Citar:

La forma como se finalice un Ciclo creo que queda según la necesidad


Tú eliges qué creer, si aceptas que te puedes equivocar y también si quieres aprender o sólo quedarte con lo que ya sabes.

Citar:

Ahora si por el hecho de preguntar algo lo van a calificar de "no saber programar" prefiero no volver hacerlo, una cosas es no saber programar otra muy distinta tener una duda o algo de fatiga, pero uno siempre termina encontrando soluciones.


También elijes comprender lo que se te dice o tergiversarlo. Pero nosotros jamás dijimos "tú no sabes programar" ni tampoco lo insinuamos.

Citar:

Y no es orgullo es simplemente saber decir las cosas, yo creo que decir "No te vayas a ofender" no es garantía de que no vaya a suceder.


Hombre, de haber sabido que debía garantizar eso, me pagaba un seguro por las dudas

Saber decir las cosas es decir lo que es. No veo porque tanto te molesta. Pero ese es un problema de la telecomunicación, yo no puedo leer tus gestos corporales, escuchar tu tono de voz o ver tu mirada para saber si estás hiper-sensible antes de responderte.

"No te vayas a ofender" deja muy en claro cual es la intención, pero si aún así elijes sentirte ofendido... es igual que antes... tú elijes.

Si a tí te resulta ofensivo que te señalen un error, eres tú quien tiene un problema, no quien te señala el error. Yo me he equivocado tanto que hace tiempo dejó de molestarme que alguien me señale un error.

Citar:

A todo lo anterior puedo decir, tanta polémica por una simple respuesta.

TabStrip3[(a - 1)].Caption = IdCaption
 



Tú elijes si sacar provecho y aprender algo nuevo o sólo quedarte con lo que ya sabes. Nosotros donamos parte de nuestro tiempo libre para ayudar a quien quiera ser ayudado y para aprender unos de otros.

¿Quieres aprender, ser ayudado, enseñar y ayudar a otros? Tú elijes.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Habilitar Deshabilitar Pestaña De Un Cont... aristicol Controles/Librerías/Componentes 2 Domingo, 27 Diciembre 2009, 17:42 Ver último mensaje
aristicol
No hay nuevos mensajes Como Cargar Una Pestaña Especifica Del Ta... mym769 Controles/Librerías/Componentes 2 Martes, 26 Junio 2012, 04:41 Ver último mensaje
mym769
No hay nuevos mensajes TabStrip No Refresca Al Cambiar De Pestañ... gatoviejo General 4 Viernes, 25 Abril 2014, 20:07 Ver último mensaje
gatoviejo
No hay nuevos mensajes TabStrip Selección De Pestaña Por Teclado Shell General 0 Miercoles, 14 Marzo 2018, 15:00 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron