[Turbo Pascal 7.0] ¿uso del ratón?

genie -  
 Titouan -
Hola a todos,
quiero saber cómo usar el ratón en Turbo Pascal (por ejemplo, el usuario elige las opciones haciendo clic en ellas)
no tengo ni idea, por eso necesito su ayuda
gracias de antemano por su ayuda :)
Configuración: Windows XP Firefox 2.0.0.14

5 respuestas

  1. Titouan
     
    para mostrar el ratón en tp7 en un programa a pantalla completa hay que usar el ensamblador:

    program souris;

    uses crt;

    begin
    writeln('no hay ratón');
    readln;
    asm
    mov ax, 1h; {poner la función 1h en ax}
    int 33h; {interrupción que maneja el ratón}
    end;
    writeln('con el ratón');
    readln;
    end.
    1
  2. watou Mensajes publicados 241 Estado Miembro 28
     
    hola kx !!

    quiero saber si has probado a trabajar con eso porque a mí no me funcionó !!

    gracias por responderme !
    --
    El mundo no será destruido por quienes hacen el mal, sino por quienes los miran sin hacer nada.
    0
  3. KX Mensajes publicados 19031 Estado Moderador 3 020
     
    No, en efecto no he probado de usarla, solo la había depurado para que compilara, pero debo admitir que soy incapaz de hacer mejor en lo que respecta a una unidad «ratón»...
    --
    La confianza no excluye el control
    0
  4. byakhlefncr Mensajes publicados 260 Estado Miembro 63
     
    Disculpe, no me di cuenta de las solicitudes.

    1. la unidad utilizada es Drivers y la tengo en formato precompilado (Drivers.tpu) y olvidé si estaba con turbo pascal o si la había añadido.

    ////////////////////////////////////////////////////////////////////////////////
    Para el uso del ratón en Pascal.

    initevents; // inicialización del gestor de eventos del ratón.
    doneevents; // Detiene el gestor de eventos.
    hidemouse; // ocultar el puntero del ratón.
    showmouse; // Mostrar el puntero del ratón.

    getmouseevent(even); // para recuperar en 'even' de tipo 'TEvent' los eventos del ratón.

    if (even.buttons=mbleftbutton) then // Prueba del clic izquierdo.

    even.where.x; // Posición del cursor del ratón en X
    even.where.y; // Posición del cursor del ratón en Y
    //////////////////////////////////////////////////////////////////////////////////
    2. He utilizado estas funciones en programas y funcionaban de maravilla, pero desafortunadamente con los sistemas operativos actuales los programas fallan al usar las funciones de gráficos.

    3. Estas funciones están incorporadas en la ayuda de Turbo Pascal.
    0
  5. byakhlefncr Mensajes publicados 260 Estado Miembro 63
     
    Hola,

    Para el uso del ratón en Pascal.

    initevents; // inicialización del manejador de eventos del ratón.
    doneevents; // Detener el manejador de eventos.
    hidemouse; // ocultar el puntero del ratón.
    showmouse; // Mostrar el puntero del ratón.

    getmouseevent(even); // para recuperar en 'even' de tipo 'TEvent' los eventos del ratón.

    if (even.buttons=mbleftbutton) then // Prueba del clic izquierdo.

    even.where.x; // Posición del cursor del ratón en X
    even.where.y; // Posición del cursor del ratón en Y

    Buena suerte
    -1
    1. watou Mensajes publicados 241 Estado Miembro 28
       
      hola!
      quiero saber el nombre de la unidad que contiene estas funciones y procedimientos!
      y ¿funciona con dev-pascal?
      y ¿qué es el tipo TEvent?
      0
      1. KX Mensajes publicados 19031 Estado Moderador 3 020 > watou Mensajes publicados 241 Estado Miembro
         
        Dev-Pascal, Turbo-Pascal... es el mismo lenguaje todo eso...

        No he encontrado el nombre de la unidad de la que habla byakhlefncr sin embargo según tus necesidades puedes ir a hacer compras por internet y encontrar unidades creadas por otros programadores (aquí por ejemplo), lamentablemente algunas de ellas son muy antiguas y ya no son compatibles con el hardware que usamos actualmente...

        Espero encontrar algo mejor pronto...
        --
        La confianza no excluye el control
        0
      2. KX Mensajes publicados 19031 Estado Moderador 3 020 > watou Mensajes publicados 241 Estado Miembro
         
        Aquí hay una unidad que encontré en Internet (aquí) creada originalmente para Turbo Pascal 5.5; la adapté para que compile bajo Dev-Pascal 1.9.2 (no he verificado su correcto funcionamiento).
        Para el manual de uso de esta unidad será necesario descargar el zip proporcionado por el programador (en inglés).
        unit mouse; interface uses dos; type array32word = array[0..31] of word; const hand : array32word =($ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff, $ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff, $0000,$0000,$0700,$0500,$0500,$05FC,$0554,$0D54, $1554,$1004,$0804,$0404,$0208,$0208,$0208,$0208); var mouse_clicked_x, mouse_clicked_y : word; function mouse_area(var xma):word; function mouse_clicked(button:word):boolean; function mousex:word; function mousey:word; function mousebutton:word; function mouse_swreset:boolean; procedure get_sensitivity(var x,y,speed:word); procedure set_sensitivity(x,y,speed:word); procedure physical_movement(var x,y:integer); procedure set_ratio(x,y:word); procedure cond_off(ux,uy,lx,ly:word); procedure set_speed2(threshold:word); procedure mouse_cursor(onoff:boolean); procedure mouse_position(var button_stat,x,y:word); procedure set_mouse_position(x,y:word); procedure set_mouse_x_bounds(xl,xu:word); procedure set_mouse_y_bounds(yl,yu:word); procedure set_mouse_cursor(x,y:word;var point:array32word); procedure set_text_cursor(aorh,startof,endof:word); function mouseparams(var num_buttons:word):boolean; function button_pressed(button:word;var count,x,y:word):boolean; function button_released(button:word;var count,x,y:word):boolean; implementation function mouse_area(var xma):word; var x:integer; mx,my,button : word; ma : array[1..100,1..4] of word absolute xma; begin x:=1; mouse_position(button,mx,my); while ma[x,1]<>0 do begin if (mx>=ma[x,1]) and (mx<=ma[x,2]) and (my>=ma[x,3]) and (my<=ma[x,4]) then begin mouse_area:=x; exit end; x:=x+1 end; mouse_area:=0 end; function mouse_swreset:boolean; var regs:registers; begin regs.ax:=$21; intr($33,regs); mouse_swreset:=regs.ax=$ffff end; procedure get_sensitivity(var x,y,speed:word); var regs:registers; begin regs.ax:=$1b; intr($33,regs); x:=regs.bx; y:=regs.cx; speed:=regs.dx end; procedure set_sensitivity(x,y,speed:word); var regs:registers; begin regs.ax:=$1a; regs.bx:=x; regs.cx:=y; regs.dx:=speed; intr($33,regs) end; procedure physical_movement(var x,y:integer); var regs:registers; begin regs.ax:=$b; intr($33,regs); x:=regs.cx; y:=regs.dx end; procedure set_ratio(x,y:word); var regs:registers; begin regs.ax:=$0f; x:=x and $7fff; y:=y and $7fff; regs.cx:=x; regs.dx:=y; intr($33,regs) end; procedure cond_off(ux,uy,lx,ly:word); var regs:registers; begin regs.ax:=$10; regs.cx:=ux; regs.dx:=uy; regs.si:=lx; regs.di:=ly; intr($33,regs) end; procedure set_speed2(threshold:word); var regs: registers; begin regs.ax:=$13; regs.dx:=threshold; intr($33,regs) end; function mouseparams(var num_buttons:word):boolean; var regs: registers; begin regs.ax:=$0; intr($33,regs); mouseparams:=regs.ax=$ffff; num_buttons:=regs.bx end; procedure mouse_cursor(onoff:boolean); var regs: registers; begin if onoff then regs.ax:=$1 else regs.ax:=$2; intr($33,regs) end; procedure mouse_position(var button_stat,x,y:word); var regs: registers; begin regs.ax:=$3; intr($33,regs); button_stat:=regs.bx; x:=regs.cx; y:=regs.dx end; function mousex:word; var b,x,y : word; begin mouse_position(b,x,y); mousex:=x end; function mousey:word; var b,x,y : word; begin mouse_position(b,x,y); mousey:=y end; function mousebutton:word; var b,x,y : word; begin mouse_position(b,x,y); mousebutton:=b end; procedure set_mouse_position(x,y:word); var regs: registers; begin regs.ax:=$4; regs.cx:=x; regs.dx:=y; intr($33,regs) end; procedure set_mouse_x_bounds(xl,xu:word); var regs: registers; begin regs.ax:=$7; regs.cx:=xl; regs.dx:=xu; intr($33,regs) end; procedure set_mouse_y_bounds(yl,yu:word); var regs: registers; begin regs.ax:=$8; regs.cx:=yl; regs.dx:=yu; intr($33,regs) end; function button_pressed(button:word;var count,x,y:word):boolean; var regs:registers; begin regs.ax:=$5; regs.bx:=button; intr($33,regs); count:=regs.bx; x:=regs.cx; y:=regs.dx; button_pressed:=(regs.ax=1) end; function mouse_clicked(button:word):boolean; var trash1 : boolean; count : word; begin trash1:=button_pressed(button,count,mouse_clicked_x,mouse_clicked_y); mouse_clicked:=count>0 end; function button_released(button:word;var count,x,y:word):boolean; var regs:registers; begin regs.ax:=$5; regs.bx:=button; intr($33,regs); count:=regs.bx; x:=regs.cx; y:=regs.dx; button_released:=(regs.ax=0) end; procedure set_mouse_cursor(x,y:word;var point:array32word ); var regs : registers; begin regs.ax:=$9; regs.bx:=x; regs.cx:=y; regs.es:=seg(point[0]); regs.dx:=ofs(point[0]); intr($33,regs) end; procedure set_text_cursor(aorh,startof,endof:word); var regs:registers; begin regs.ax:=$0a; regs.bx:=aorh; if aorh=0 then begin startof:=startof or $00ff; endof:=endof and $ff00 end; regs.cx:=startof; regs.dx:=endof; intr($33,regs) end; end.

        --
        La confianza no exime de control
        0