|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Nebire
Páginas: 1 ... 21 22 [23] 24 25 ... 29
551
« en: Sábado 24 de Mayo de 2008, 02:31 »
dim f as form
f=new formQueQuieroHeredar
deben estar en el mismo proyecto, si no es así debe usarse una referencia y añadir un 'imports' ...
552
« en: Sábado 24 de Mayo de 2008, 02:28 »
Utiliza un panel mete los botones que desees. ten en cuenta sus dimensiones así como su posición. Luego suponiendo que el contenedor del panel contenedor del menú, es el formulario sólo tienes que escribir el código correspondiente al evento 'mouso.move', examina si está situado 'x' píxeles al lado del formulario (que quieres que sea sensible) y controlando la altura, cuando dé positivo utiliza un bucle con retardo para emerger el panel, la velocidad de aparición y el modo es cosa tuya, puedes hacerlo instantáneo con un 'panel.left=x' o con un bucle pausadamente moviendo 'x' písels en cada ciclo, esto requeríría un retardo para que exista la sensación de deslizamiento. El código del área sensible sería más o menos algo como: ' esta función sería invocada desde mouse move del contenedor del panel que aloja el menú: ' posRaton es una estructura de tipo point, que tiene un valor x y otro Y de la posición del ratón, cazado en el evento mousemove. ' Limites es tambien una estructura point, si el menú se oculta en la derecha limite.X define el píxel más a la izquierda tal que siendo pisado consideremos qeu es sensible, límite.Y define el punto vertical de posición del panel, y margenVertical la altura del panel, por tanto sumado a su 'top' indica el píxel más bajo con área de influencia para activar el panel del menú. public function validar_AreaSensible(posRaton as point(), limites as point() as integer, margenVertical as byte) as boolean if (posraton.X <= limite.X) and (posRaton.Y >= limite.Y or posRaton.Y <= (limite.Y + margenVertical)) then return true end function
Si la función devuelve true, significa que se debería 'sacar' el menú.... El menú podría recogerse al perder el foco el panel, salvo que se fijara una 'chincheta'.... la chincheta es un simple checkbox, que usa una imagen a propósito que cambia según sea su valor, para reflejar el estado. Si el panel tuviera pongamos 100 píxeles de ancho haríamos algo como: public sub mover_MenuLateral(sentido as boolean) if sentido=true then ' lo sacamos dirección=1 ini=-100 fin=0 else ' si lo metemos direccion=-1: ini=0 : fin=-100 end if for k as integer= ini to fin step (direccion * -1) panel1.left += direccion do System.Windows.Forms.DoEvents loop while Timer1.enabled=true Timer1.enabled=true next end sub public sub Timer1_Tick....... timer1.enabled=false end sub
553
« en: Sábado 24 de Mayo de 2008, 01:57 »
Bueno, veamos.. si las imágenes pesan poco como acostumbra a suceder con los juegos de cartas, donde su número es finito, es muy probable que las imágenes se carguen una única vez al arrancar el programa y luego se alojen en memoria y se vayan llamando según se vayan necesitando.
Yo de entrada descarto que haya un archivo que guarde el estado de la partida mientras se está jugando, a lo sumo al finalizar la misma, si se ofrece la opción de pausar la partida y continuar en otro momento. Incluso así sólo salvaría el estado actual no cada jugada realizada.
Lo más lógico y probable es que los datos se hayan alojado en una estructura incluso en una clase.
De todos modos para saber si se guarda info en un archivo en cada momento sólo tendrías que vigilar cada archivo durante el desarrollo del juego (la mitad del código anterior o más te vale para esto, pués en vez de interrogar a las imágenes por acceso preguntas a todos por su taaño... Si tienen tamaño distinto cuando se inicia el programa que en cualquier momento dado durante el juego, es claro que guarda información...
Pero incluso pudiera guardar los datos en el registro. Mi opinión particular es guardar en el registro sólo aquello que realmente afecte al sistema, pero de manera sistemática muchos abusan del registro patra guardar sus variables entre sesiones, posiblemente porque les resulte más cómodo usar el registro....
Con 'serialization' escribir el estado de tus programas es creo yo más ventajoso, pero una cosa es la teoría o otra lo que se ha hecho en un programa en concreto.
554
« en: Sábado 24 de Mayo de 2008, 01:37 »
Omites detalles que pueden ayudar a entender lo que quieres decir y en cambio aportas otros dato irrelevantes al problema... Por otro lado aún leyéndolo 4 veces resulta difícil 'descifrar' tu mensaje.
Así, creo entender que tratas de abrir una ventana desde el botón de un menú, si eso es así, deberías poner calculadora.show (si es un formulario, que con dudas, parece ser lo que pudiera ser...).
555
« en: Domingo 18 de Mayo de 2008, 03:07 »
Si la 1ª partición la has formateado en fat32 y la 2ª en NTFS y has instalado el sistema en la 1ª, no se verá, ya que FAT32 por ser más antiguo, no conoce la partición NTFS.
Ve al menu inico busca el icono de 'Mi PC' con el otro botón del ratón pincha en el icono y elige 'Aministrar' se te abre una ventana, localiza 'Administración de discos' y pincha en él (no toques nada más en esa parte de la ventana)... a la derecha te aparecen todas las particiones y discos que hay en tu sistema... mira si en la unidad donde tienes windows (¿ C: ?) se ve marcado como 'sistema de archivos FAT32' si es así, lo recomendable es que conviertas la unidad desde FAT32 a NTFS o bien vuelvas formatear y elijas NTFS en vez e FAT32 al menos como unidad de arranque.
También puedes meter el CD de instalación al arrancar el ordenador y decirle que lo instale en la otra unidad (si es NTFS) así podrás arrancar desde cualquiera de las 2 unidades, siempre que lo hagas desde NTFS verás la de FAT32 pero no al revés...
Puede que el problema sea otro, pero primero que nada verifica y cuéntanos si la partición primaria (la parte con la que arrancas) está en FAT32, si no es así, ya se verían otras posibilidades...
556
« en: Sábado 17 de Mayo de 2008, 07:48 »
lo prometido es deuda... abajo he puesto un ejemplo de programa completo que puedes descargar. el problea esq dod pone ultiom acceso no t guarda el ultimo... lo e comprobado i pj la ultima vez que vi la iagen fue a las 3.30 i el ultimo acceso ponia que era 2:28 El último acceso no de debe confundir con el último cambio. Usando el ejemplo del código que te acompaño, se sabe incluso cuando haces un clic sobre el archivo, o abres la carpetas... Pudiera ser que el programa en cuestión cargue todas las imágenes en memoria al inicio del mismo y luego simplemente acceda a ellas según se vayan necesitando. Sería un poco absurdo (salvo que las imágenes tengan un gran tamaño) leer de fichero cada vez que se necesita la imagen. Dado que un juego como el póker o uno de cartas tiene un número finito y pequeño de imágenes y que esas no son muy grandes ni pesan mucho (al menos yo), las cargaría al arrancar el programa y luego las iría mostrando según se necesitare, el acceso es más rápido y posiblemente todas las imágenes no superen 1MB. Puedes comprobarlo del siguiente modo... con el programa en marcha, haz una copia de una imagen de las que hay y guárdala aparte, luego coge una imagen de donde quieras (pero muy diferente para reconocerla) , de tamaño igual que esas, y ponle el mismo nombre que esa que has copiado, ponla en la carpeta de las imágenes rescribiendo la que existe (ya guardaste una copia). Si no están bloqueadas, podrás pegarla sin problemas. Si el juego carga las imágenes desde fichero según las va necesitando habrá un momento dado en que saldrá la imagen que tu has puesto ahí con el nombre de otra. Si en cambio no aparece y si que aparece la imagen que has sustituído está claro que las carga al inicio en memoria. Descargar programa:[/size] Descargar el proyecto completo 34Kb.una imagen vigilando los archivos de la carpeta de windows\system32:
557
« en: Sábado 17 de Mayo de 2008, 04:36 »
en esta grilla hay datos al pinchar en cualquier celda me captura ese valor en una variable, quiero pasar a una textbox de otro form, Ignoro como lo estarás haciendo... pero es tan simple como tener abierto el otro formulario y decirle: form2.textbox1.text= datoCelda
....y listo (se supone que están en el mismo proyecto). cuando abro un form desde una parte del codigo de otro form y al cerrar el form abierto deberia volver a la misma linea o a la siguiente de donde lo abri Depende de si lo has abierto modal o no modal... no se para la ejecución contínua tras abrir el formulario... se espera a que cierres el formulario para continuar desde la línea que se llamó... Oye, tú lees la ayuda del programa ???... porque esto es muy fácil de encontrar en la ayuda...
558
« en: Sábado 17 de Mayo de 2008, 04:27 »
Te he explicado como acceder a cualquier celda. Una vez allí puedes elegir el dato que necesites...
559
« en: Viernes 16 de Mayo de 2008, 05:33 »
Juank... podrías animarte y hacernos un pequeño tutorial sonre WPF...
La verdad me da cierta pereza, he adquirido algunos libros (en inglés) de Xaml y WPF, me parece muy interesante y sobretodo potente, pero es que no tengo tiempo apenas el poco que me queda veo la tele o doy un repaso por zquí...
Cuando tienes un punto de partida claro, es más fácil sentirte animado... tampoco acabo de ubicar bien donde encaja Acrópolis...
560
« en: Viernes 16 de Mayo de 2008, 05:21 »
hola la verdad estoy cansado de buscar en google guias, ect y q y q todos digan cosas distintas cosas
quiero configurar mi bios para q arranq desde el cd como se ordenan los 3 boots esos ya prove con un millon d eformas ayudaenme plx yoy desesperdo Para entrar en la BIOS debes hacerlo cuando arranca el ordenador. La BIOS es un miniprograma (ya no tanto como hace 20 años,jajaja) que lo que hace es verificar que todos los componentes funcionan bien y reconocerse a sí mismo que es lo que el ordenador tiene y que no, aparte tiene unos servicios para comunicarse entre las difrentes partes. Cuando arranque el ordenador estate atento, en un momento dado te dirá (seguramente en inglés) algo como: 'press f1 to SETUP' que indica presiona la tecla f1, pero según la marca de la BIOS puede ser una tecla distinta, más o menos pueden ser algunas de las siguientes: F1, f2, ESC, SUPR , DELETE (la que está encima de ENTER, debajo de f12). Después de presionar se accede a una pantalla de color azul o negra (si no ha sido modificada) y aparece un menú normalmente como fichas, y en otras como en 2 columnas... tienes que localizar un sitio donde ponga algo como 'Device Priority BOOT', 'Secuence BOOT' o similar ... cambia incluso de una versión de BIOS a la siguiente.... Esto según marcas se encuentra en una fuicha llamada BOOT o como un submenú dentro de otro... un submenú lo reconocerás porque después del nombre del mismo verás que hay una flechita blanca (un triángulito, ejemplo: 'Opciones avanzadas >' , indica que al seleccionar ahí se abre el submenú. Para navegar por la BIOS: las teclas de cursor (arriba, abajo derecha, izquierda) hacen eso mismo, la tecla ESPACIO activa o desactiva opciones, la tecla enter te mete dentro de submenus, la tecla ESC te saca de submenús, en algunos sistemas las teclas '+' y '-' permiten modificar opciones como la fecha y la hora. La tecla de tabulación (encima de 'bloqueo Mayúsculas' tambie´n suele usarse. Al terminar de activar lo que sea (ten cuidado con lo que toques que puede no arrancar después), debes confirmar los cambios, para ello tienes que ir al último menú (EXIT o SAVE) y allí activar 'Save and Exit' todavía te pedirá confirmación con un mensaje como 'seguro que realmente deseas salvar y salir? (y/n) ' si quieres que si pulsa Y (YES) si te equivocaste y no quieres confirmar pulsa en N (NO)... si no haces esto, es decir si reinicias el ordenador sin confirmar cambios, los cambios no tomarán efecto. Una vez allí hay más o menos 3 métodos (los más frecuentes) para seleccionar la unidad de arranque: a ) Primero indicas el TIPO de unidad de arranque, HD (disco duro), ATAPI (Cd y DVD) , FLOPPY (diskette) y también suele venir una opción para (unidades extraibles) y una que pone PXE que es un modo de arranque desde red... si es tu caso elige ATAPI, es decir el que se refiere a unidades ópticas... y luego más abajo decide de las unidades ópticas que tengas cual de ellas es la que prefieres. b ) En otros sistemas simplemente te muestra una lista de unidades y tu decides cual es la primera, pincha en la lista en la posición 1ª y en ella emerge una pequeña ventana para que elijas una de las disponibles. c ) Un sistema menos frecuente es el siguiente te muestra una lista de unidades en un orden, específico y estático, no se pueden cambiar, en este modo la forma de seleccionar la unidad de arranque es desmarcar todas las unidades que están por encima de ella. Naturalmente se supone que tu BIOS tiene la posibilidad de elegir una unidad óptica. Porque por ejemplo tengo un tablet_PC del año 2000 que no tiene esa posibilidad, sólo puede arrancar desde disco duro o desde una unidad de diskette. Y desde luego para que tu unidad arranque debes tener un CD de arranque dentro de la unidad, cuando falla una unidad de arranque el sistema (BIOS) automáticamente intenta arrancar con la siguiente unidad indicada en la lista.
561
« en: Viernes 16 de Mayo de 2008, 03:16 »
Para interceptar que imagen usa el programa se debería por tener claro que es el único porgrama que accede a ellas, damos por sentado que es así.
Bueno, pués hay una sencilla manera de saber que imagen toma, si te fijas cada vez que se utiliza un archivo en sus propiedades puedes leer: acceso por última vez...' y te pone una fecha, se trata entonces de guardar en una matriz (listbox o lo que quieras) todas las entradas de fecha de último acceso.
... y mediante un timer que debes determinar cual es intérvalo óptimo (por ejemplo si sólo se carga una imagen cada vez que arranca el programa, el intérvalo puede ser bastante grande, si de otro modo cambia de imagen aleatoriamente cada cierto tiempo intenta que el tuyo sea similar, etc...), vas releyendo la info de todas las imágenes la que sea distinta de la que tienes registrada esa es. No olvides entonces actualizar la matriz con ese dato y terminar de recorrer el resto de imágenes ...
se me olvidaba... mañana te pongo un pequeño código de ejemplo... me voy a dormir...
562
« en: Viernes 16 de Mayo de 2008, 02:46 »
Bien, mira...
1 ) desde la ventana de diseño, pincha en el datagridview, vete a las propiedades...
2 ) localiza la propiedad 'databindings', despliégala y pincha en avanzada.
3 ) se abre una ventana a la derecha arriba selecciona donde pone binding, pincha en add data source...
4 ) te sale una nueva ventana, elige 'base de datos' como es tu caso y dile 'new connection' . Elige de acuerdo a tu instancia de sql server la 'conectionstring' que precisas..
5 ) avanzando en los pasos puedes elegir la tabla que deseas, e incluso seleccionar uno a uno que campos quieres alojar en datagridview.
6 ) una vez todo elegido dale a ceptar, aceptar para ir cerrando ventanas con la selección escogida, hasta llegar a la ventana del paso 3.
7 ) ahora debajo de bindisng (donde fuiste a localizar los datos que precisabas) verás que se ha activado un cuadro titulado 'Format', ahí es donde puedes ir indicando con todo lujo de detalles como quieres formatear la entrada de datos desde la BD antes de que se muestre en el datagridview.
Comprende que definir detalladamente cada paso es bastante largo, pero confío en que sabrás no perderte...
563
« en: Viernes 16 de Mayo de 2008, 02:27 »
Pués si pegas el salto (ya que estás) a VB 2008 mejor, así no seguirás llevando 3 años de retraso y estarás al día... Puedes usar la colección 'Rows' para referenciarte, normalmente con .item(x) es decir: GrillaProd.Rows.Item(x).Cells(nombreColumna) ó también GrillaProd.Rows.Item(x).Cells(indiceColumna) cuando quieres acceder a una fila cualquiera
y cuando quieres acceder a una fila seleccionada (como es el caso de tu ejemplo): GrillaProd.CurrentRow.Cells(nombreColumna o númeroColumna).ToString ' tostring si lo metes a una variable string, que será más cómodo que hacer un Ctype()...
y por último también puedes usar un modo más cómodo cuando conoces bien el grid: GrillaProd.Item(númeroColumna o nombreColumna, númeroFila).ToString
númerocolumna y nombrecolumna son alternativos, es decir o usas uno o lo otro, son sobrecargas...
564
« en: Viernes 16 de Mayo de 2008, 01:49 »
Bueno, entender, entender... más bién me despistaste con esto... Tuve en mente utilizar la Api SetParent para meter los MdiChildren dentro del WebBrowser, pero no me dio resultado... que parecía ser el problema final que querías resolver... Puedes utilizar la propiedad formX.bringToFront para traer a primer plano el formulario deseado (equivale a la función 'Zorder 0' de VB-6.0). Si el problema es el tamaño del 'webbrowser' modifica estos. Te mando un archivo, con un ejemplo de como lograrlo sin problemas, abajo del mensaje te dejo el enlace. ...y asegúrate que el formulario 'webBrowser' no tiene la propiedad 'topMost' establecida a true (eso le forzaría a estar siempre encima de los demás..) y que no esté maximizado, si lo está usa el método que empleo en el proyecto de ejemplo.. Ten encuenta la propiedad 'MainMenuStrip' de los formularios 'hijos', para determinar si el menú de estos se fusiona con la del formulario MDI cuando el hijo se maximiza. Descargar ejemplo de uso de formulario MDIen la ventana que sale primero ariba del todo darle a 'continue to megaupload'... en la siguiente ventana introducir el código de 3 letras arriba a la izquierda darle a descargar y esperar 45sg. después darle a 'free download' se descarga en nada... (joder lo que lo complican) Descargar ejemplo en RAR 28KB.lo siento el FTP de sólo código no reconoce los datos que se indican... nota: el proyecto está en VB 2008 si tu versión no lo reconociera abre los formularios con un editor de texto y copia el contenido a tu propio proyecto de ejemplo, son 3 formularios y el principal tiene propiedad de MDI, lleva un menuStrip llamado ventana y aloja un combobox...
565
« en: Jueves 15 de Mayo de 2008, 23:58 »
Si nos explicas a grandes rasgos que es lo que pretendes hacer (en el fondo, no en la forma *), posiblemente podamos darte una indicación más precisa de cómo proceder de una forma más provechosa y casi con seguridad más rápida manejable y fácil de entender.
_________________________________[/size] * en el fondo y en la forma puede entenderse con un ejemplo: si uno va al médico y le pregunta ¿Cómo puedo beber alcohol sin emborracharme ?... la respuesta del médico seguramente no será lo que el paciente esperara oir. El problema de la respuesta inadecuada está no en el médico si no en la formulación del paciente, que no ha explicado el fondo de la cuestión si no sólo 'el exterior'. Es decir si el paciente explicara al médico: '''Mire doctor, mi padre cuando le dolían las muelas se tomaba un vasito de coñac 2 ó 3 veces al día y en pocos días se le pasaba, pero yo soy conductor de taxi y sólo con tomarme un la mitad de un vasito ya me siento mareado ¿ cómo puedo hacer para no emborracharme si llego a tomarme los 3 vasitos al día???'''. Ahora el médico tiene todos los datos, el fondo y la forma, ahora el médico puede darte una respuesta óptima.... y te dirá algo como: '''Tómese este antibiótico 3 veces al día diluya el sobrecito en un vaso de agua, no irá usted ni borracho ni tendrá que tomar alcohol .''' Ahora el médico ha posido dar la respuesta más óptima porque conoce el fondo, la base, la raíz del asunto, que es el dolor de muelas, la forma es lo que tu planteas como problema adoptado a una situación específica y por tanto posiblemente sin salida o con una inadecuada salida....
Esto debería colocarse en un sitio visible a los foristas nuevos, para que sepan qué y cómo plantear sus problemas. La ayuda que se puede ofrecer es muy restringida e ineficaz si se restringe un problema a la forma y no al fondo de la cuestión. A veces simplemente el camino empleado desde el principio es totalmente inadecuado, y por eso la solución no complace ni soluciona... _________________________________[/size]
566
« en: Martes 13 de Mayo de 2008, 05:43 »
A ver... por rockola, creo entender que te refieres a una gramola (las maquinitas esas) de discos no ????
Si es así, entiendo que tendrá 2 partes bien diferenciadas por un lado la interfaz gráfica y por otr lado el manejo de la misma...
* Para la interfaz gráfica, lo mejor es tener a la vista fotos de las máquinas para reproducir con cierto detalle el aspecto y deducir el uso del mismo, supongo que en eso tu amigo podrá ayudarte. Pero vamos por un lado debería tener un listado de discos que el usuario pueda seleccionar, repdroducir inmeditamente la 1ª canción, si en x sg. no toma más acciones, despliega la lista de canciones del disco y señala la canción en curso, Si el usuario pincha en determinada canción del disco debería directamente a ella, si el disco tiene carátula asociada muéstrala, si no tiene muestra una por defecto con publi del programa. Siempre podrás simular un disco girando (escanea un disco) en una pequeña animación, a modo de 'prograssBar' una aguja se iría desplazando desde el exterior hacia el interior... cuando llegue al interior el disco ha finalizado, al poner un nuevo disco queda afeura del todo si selecciona una canción intermedia proporciona la distancia de la aguja en base a las canciones que componen el disco, desplaza la aguja entre canciones en función de la duración de las mismas...
* El programa debería poder administrar una base de datos que incluya una tabla para discos (título, artista, año, carátula, letra, canciones que lo componen...) otra para las canciones existentes (con referencia hacia el-los discos de que forma parte (a veces una misma canción consta en diferentes discos) y autor (a veces hay canciones de diferentes autores con el mismo título), adicionalmente podrías incluir tablas sobre autores con datos del grupo o cantante, por ejemplo historial del grupo, connciertos, discos publicados, miembros que lo componen compañías para las que trabajó, etc...
* El código entonces se limitaría a gestionar la base de datos, a reproducir las canciones y a modificar las ventanas en consonancia con el uso de las mismas por parte del usuario.
En fin no se si quieras algo más específico, pero con las preguntas genéricas tampoco puede darse respuestas concretas en exceso...
567
« en: Martes 13 de Mayo de 2008, 05:17 »
Aportas datos insuficientes, dices que 'un archivo' pero no indicas si te ha ocurrido con más archivos, dices que te sale 'Ï>>¿' pero no indicas si siempre te sale eso.. Tampoc indicas si se ve afectado todo el texto o sólo es al principio del archivo. Entonces suponiendo que no sea un error en tu código, y que el error se produzca en todo el texto yo más bien me inclinaría a pensar en el tipo de codificación que has empleado... con el streamwriter
Recuerda que el ASCII maneja 1 byte por carácter y el ANSI maneja 2 bytes por carácter... los sistemas actuales leen la codificación del archivo y lo utilizan convenientemente.... y en base a ello construye dos formas distintas de leer el archivo... si detectas que se usa win98 (FAT32 en general) pués tendrías que filtrar el byte que sobra...
568
« en: Martes 13 de Mayo de 2008, 04:55 »
Necesito que al acceder (por ejemplo) al registro 3 de la tabla 1, las 10 tablas restantes se sitúen en ese mismo registro, Si necesitas que 11 tablas deban trabajar al unísono, sólo puedo decir que el diseño de tu base de datos está realmente mal hecho. Si una tabla maneja 'bebidas' y otra maneja proveedores, siempre existirá una relación para manejar las 2 tablas (o más), pero que lo hagan exactamente en el mismo regisro no... cocacola podrá estar en el registro 10 como bebida y casualmente el proveedor cocacola podrá estar en el registro 10, pero el índice de registro de entrada debe ser indeferente y totalmente ajeno al proceso a operar sobre las tablas... es decir si necesitas que el registro cuya bebida sea cocacola haga algo en función de una entrada del proveedor cocacola, debe poder hacerlo indistintamente de que registros ocupen... Lo que propones es una 'aberración' es tirar por el suelo todo el beneficio que ofrece una base de datos... quizás la estructura que debas manejar para tus datos sea más acertada usar otra distinta de una base de datos si en efecto necesitas llevar a cabo tal cosa...
569
« en: Martes 13 de Mayo de 2008, 04:39 »
Hola... el mensaje al que respondes es de hace casi 5 años... hemos de suponer que desde entonces ya habrá solucionado su problema...
Mala cosa es que tuviera alguien que esperar 5 años una respuesa...
570
« en: Sábado 10 de Mayo de 2008, 23:51 »
Hola KEWIAS,
De momento se me ocurren un par de mejoras como añadir una opción en el panel de control para dar de baja la cuenta (aunque espero que nadie o casi nadie la use me parece necesario que exista esa posibilidad) Ni se te ocurra...En cierta ocasión hace años, un graciosillo consiguió 'acceder' al ordenador de un amigo y tomando sus datos (nick y contraseña) le borró de un foro donde era bastante apreciado.. cuando lo descubrió volverlo a asignarle todos sus mensajes fué por lo que me dijo imposible pero con bastante trabajo pudieron devolverle los últimos y los que más 'apreciaba'. Fué posible eliminarlo, precisamente porque tenían algúna opción similar a tu propuesta ... El que quiera darse de baja que escriba un correo personal a un administrador, y antes de borrarle, el administrador le envíe un mensaje al 'correo' que figura donde se dió de alta diciéndole que se ha recibido una petición de borrado... si en 7 días no se contradice se hará efectivo... ... o similar, claro...
571
« en: Sábado 10 de Mayo de 2008, 23:24 »
Estás equivocado, pero te voy a indicar la razón...de lo que sucede... Sucede que el datagridview recibe perfectamente la señal del evento rowsAdded.. pero también sucede que se ejecuta de modo asíncrono, esto es si le das al datagridview una instrucción de volcar 1000 registros los vuelca de golpe, al tu forzar al evento rowsadded a mostrar un msgbox el cual es modal el datagridview lo que no va a hacer es pausarse hasta que tu respondas al msgbox... debes entender la diferencia entre un evento y un método. en un método se esperaría hasta que cierres el msgbox, pero un evento es un aviso que te da, la señal continúa ejecutando código de forma asíncrona, no espera, si transcurre un lapso de tiempo...sigue ' a su rollo'... Qúe puedes hacer para comprobar que funciona perfectamente?... simplemente cambia el códio metido en el evento rowsadded no forzándole con una ventana modal o cualquier otro 'ejercicio' asíncrono... esto es cambia tu código desde: Private Sub PEDIDOS_LINDataGridView_RowsAdded(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArg s) Handles PEDIDOS_LINDataGridView.RowsAdded MessageBox.Show("valor" & PEDIDOS_LINDataGridView.Item(4, e.RowIndex).Value) End Sub
...por este otro: Private Sub PEDIDOS_LINDataGridView_RowsAdded(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArg s) Handles PEDIDOS_LINDataGridView.RowsAdded labelDGV.text= ("valor" & PEDIDOS_LINDataGridView.Item(4, e.RowIndex).Value) End Sub
labelDGV es una etiqueta label que colocas en una apartada esquina de la vetana donde no moleste... una vez que compruebes que funciona perfectamente, y con las indicaciones anotadas ya sabrás tomar una decisión más oportuna para usar este tipo de eventos que son dados para recibir una informción pero para basar su disparon en un control ferreo... si el datagridview esperamos que cargue 1000 filas en un 1sg.... es incompatible con forzarle a esperar a ejecutar un código que no se sabe a ciencia cierta cuando va a acabar (el msgbox puedes cerrarlo al día sigiente si quieres y sería mala cosa que el programa no pudiera seguir haciendo nada hasta que cerraras la venntana). pruébalo (cambiando el msgbox por un label) y nos cuentas... p.d.: porqué usas un nombre como 'PEDIDOS_LINDataGridView' abrevialo por ejemplo a: 'PEDIDOS_LIN_DGV' yo por lo general abrevio los nombres de los controles a sólo 3 caracteres, además suelo ponerlos al principio así yo lo llamaría DGV_Pedidos_Lin... ya que ayuda fácilmente a saber que control es sólo con mirarlo... es más fácil localizarlo, ya que puedes tener variables por el código que empiecen también por 'PEDIDOS'... si sigues esta simple idea diferenciarás fácilmente variables de datos de nombres de controles... pero vamos es sólo una indicación..
572
« en: Sábado 10 de Mayo de 2008, 22:43 »
Bueno, en la documentación del aparatito debe indicar el formato . si careces de la documentación puedes intentar lo siguiente: crea unas constantes como las siguientes: const fASCII=0 const fHEX=1 const fBINARIO=2 const fBCD=3 ' octal const fBCD-x3: 4 const fOTROS...= 5
public posibleFormato as integer ' acogerá una de las constantes... public valor as string ' el valor que se devuelva convertido a cadena
ahora el valor arrojado conviértelo a cada uno de los formatos y envíalo adonde esperas procesarlo... allí usando la misma conversión rellena una tabla, un listbox o lo que sea antecediendo a cada salida el tipo de dato que es, vamos que tendría una salida similar a: ASCII: 256 HEX: ff BINARIO: 100000000 BCD: 0010 0101 0110 BCD-x3: 0101 1000 1001 OTROS..: ?????
´toma 30 ó 40 muestras por espacio de 30sg 1 minuto... ahora sabiendo que la habitación (tomado aprox. con un termómetro 'normal' ve anotando los registros cada vez que se actualiza el listbox.... finaliza el programa. traduce los valores de la tabla a decimal, y compáralos con los que anotaste manualmente con el 'termómetro en mano', pueden suceder algunas cosas... las anotaremos: * las temperaturas de un formato concuerdan casi con lo anotado, perfecto, ya lo tienes... * concuerdan más de un formato : depende de como hayas hecho la conversión esto no debería ocurrir, revisa el código. * no coincide ninguno: trata de convertir ahora todos los datos arrojados en el listbox desde centígrados a grados Farenheit, kelvin, Reamur... en la documentación del aparato debería indicar en que tipo devuelve los grados, lo lógico es que pueda darlo al menos tanto en centígrados como en Faenheit. Usa wikipedia para consultar las equivalencias si no las conoces. Una vez convertido a un formato, vuelve a compararlo con tus anotaciones... * ha fallado todo lo anterior: el formato devuelto sin duda lleva un formato especfico y más complejo´, sin la documentación pertienente, sólo a base de intentos te va a ser difícil resolverlo. Esto es pongamos que la temperatura no se da como un dato específico sino acompañado de hora e indicación de formato, por ejemplo: 001 : hora, minuto, segundo ... ... 101 segundo, minuto, hora 0: grados centígrados 1: grados farenheit 0011 0111 ' 37º los grados..en BCD en fin que puede tener varios campos y cada campo con su formato específico, necesitas la documentación...o de otro aparato similar, para ver por donde van los tiros e intentar cosas similares...
573
« en: Sábado 10 de Mayo de 2008, 22:19 »
El error aparece directamente en la línea de la sentencia select...
tu le estás preguntando:
ensegui="" si ensegui es igual a '''lo que sea''' luego...
debes hacerlo en 2 sentencias, donde 1º asignas a ensegui el resultado del select y después lo comparas, lo puedes hacer en una línea también pero si está perfectamente definido.
Especialmente cuando unos es principiante o cuando no domina un tema especialmente el código a generar debe ser menos críptico aunque resulten en unas líneas más de código, ello ayuda a entender mejor el código generado, luego cuando uno se dominándol sentirá que ya puede 'apretar' el código...
entonces te recomiendo lo siguiente: 1º obtén el valor de 'ensegui' en una línea: ensegui= select...lo que sea (la consulta de la base de datos . 2º Si precisa luego un añadido pués se lo añades:, en otra línea hasta que veas y comprendas que va funcionando, además con el debuger paso a paso (tecla f8) puedes ejecutar línea a línea y consultar si una variable tiene el valor esperado.: ensegui= ensegui & 'loquetengas que añadir para compararlo con otra cosa'
3º preguntas: if ensegui= ' lo que quiero que sea ifgaul a ello' then
Por último no veo claro ese 'and codigo' pués que es codigo?, una variable de qué... ten en cuenta 2 cosas más... una operación and a nivel de números suele no dar problemas a nivel de cadenas según la comparación (esto es si mayúsculas o minúsculas se consideran, los espacios a veces suelen dar problemas por 'no verlos' o las tildes parecidas), pero las fechas suelen salir peor paradas con operadores buleanos si no controlamos en todo momento cual es la entrada a comparar y con qué se compara.... por último y no menos importante... verifica que el formato de fecha tomado de la base de datos coincide con la que tu esperas... ten en cuenta que cuando manejas un dato de tipo 'date' VB tiene la capacidad de convertir el formato de acuerdo a las especificaciones declaradas en e l panel de control en 'idioma y cultura' así como lo propio específicado en las opciones de la base de datos, (busca en la documentación de la base de datos algo como 'collation' para enterarte en profundidad, en cualquier caso puedes verificarlo de la siguiente manera...
sigui= select... msgbox (sigui )
codigo= 'loquesea' msgbox (codigo) esto es antes de entrar en el if... saca por ventana emergente cada dato implicado y así puedes verificar visualmente si lo uno es igual a lo otro.
574
« en: Viernes 9 de Mayo de 2008, 04:26 »
Cuando hablas de red y en cosas de administración en general es oprtuno indicar al menos que sistema operativo empleas en la red manejando en este caso la impresora.
Por ejemplo el comportamiento de Linux será diferente que el de windows, porque el modo de administrar usuarios y grupos es totalmente distinto, son más las diferencias que las semejanzas.
También debes entender la diferencia en la consideración de propietario de un recurso, es distinta de la de un documento. Y el resultado puede depender de como el propietario del documento solicite el recurso y de como el recurso atienda la petición del documento. Perfectamente podría darse el caso de decirte que el propietario es excel o word por ejemplo...
575
« en: Viernes 9 de Mayo de 2008, 04:16 »
Nebire: se pueden borrar (y yo lo hago muy seguido) hilos y mensajes, tambien existe ya el foro Papelera y finalmente el boton de Denunciar. Me estás diciendo que el botón denunciar sirve para eso exactamente ???... porque si es así, es estupendo, hasta el momento pensaba que era para indicar que en un mensaje se procedía con insultos y cosas de ese estilo (más como queja de un forista que de su mensaje, vamos)...
Páginas: 1 ... 21 22 [23] 24 25 ... 29
|
|
|