sabing Posted May 28, 2012 at 02:31 AM Report #458453 Posted May 28, 2012 at 02:31 AM Pessoal eu estou fazendo um programa para pegar o valor de x e y do mouse o codigo esta funcionando o problema e que eu nao estou conseguindo pegar o valor de x e y do mouse quando eu clico eu estou fazendo apartir desse site abaixo http://www.freepasca...se/index-5.html segue o codigo Program Pzim ; Uses mouse; procedure botao; Var v1,v2:Integer; Event : TMouseEvent; Visible: Boolean; begin InitMouse; ShowMouse; Visible:=True; Writeln('Presione o botao esquerdo do mouse para sair! '); Repeat GetMouseEvent(Event); With Event do If (Buttons=MouseLeftbutton) and (Action=MouseActionDown) then begin If Visible then HideMouse else ShowMouse; Writeln('X',GetMouseX); Visible:=Not Visible; end; Until (Event.Buttons=MouseRightButton) and (Event.Action=MouseActionDown); DoneMouse; end; Begin botao; End.
nunopicado Posted May 28, 2012 at 08:40 AM Report #458466 Posted May 28, 2012 at 08:40 AM Não percebi bem a tua duvida... Corri o teu código, e tirando o facto de só estares a escrever o X, e não o Y, o programa está a trabalhar nestes moldes: Ao clicar no botão esquerdo do rato, ele escreve a posição Ao clicar no botão direito do rato, o programa termina O quê que notas a falhar em concreto? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted May 28, 2012 at 10:44 AM Report #458479 Posted May 28, 2012 at 10:44 AM Eu encontrei uma falha... no IDE/compilador. Testei o programa compilado no Free Pascal 2.6.0, e funcionou perfeitamente - o valor da posição X aparece maravilhosamente bem. O Y só não aparece porque não há nada que busque esta posição e a escreva. Testei o programa compilado no Dev-Pascal, e surgiu o problema referido: aparece sempre "X0", qualquer que seja a posição em que carreguemos. Por isso, a solução é utilizar um compilador decente, e este é o FPC 2.6.0 - o Dev-Pascal usa uma versão super rudimentar de há mais de 10 anos atrás do FPC, pelo que não é, de todo, recomendado. Knowledge is free!
nunopicado Posted May 28, 2012 at 10:57 AM Report #458482 Posted May 28, 2012 at 10:57 AM OK, não testei no Dev. Isso explica qualquer coisa! 😉 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
passarito Posted May 28, 2012 at 04:57 PM Report #458597 Posted May 28, 2012 at 04:57 PM Eu usei algumas vezes o rato em programas meus, e nunca tive qualquer problema. Modo texto e modo gráfico. De notar que uso o Borland Pascal 7... pode ser por aí... Vou procurar as minhas rotinas do rato, se as encontrar direi mais qq coisa. 😉
nunopicado Posted May 28, 2012 at 05:02 PM Report #458601 Posted May 28, 2012 at 05:02 PM Eu usei algumas vezes o rato em programas meus, e nunca tive qualquer problema. Modo texto e modo gráfico. De notar que uso o Borland Pascal 7... pode ser por aí... Vou procurar as minhas rotinas do rato, se as encontrar direi mais qq coisa. 😉 Passarito: O problema não é das rotinas é do compilador mesmo! 🙂 O Código do Sabing funciona bem no FreePascal. Não funciona é no DevPascal. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
passarito Posted May 28, 2012 at 05:11 PM Report #458602 Posted May 28, 2012 at 05:11 PM (edited) Bem, encontrei a unidade que usava para manipular o Rato. Isto foi um colega meu que me deu, não fui nem eu, nem ele que desenvolveu portanto não sei se posso colocar aqui a unidade inteira. Vou postar apenas até à INTERFACE. Um dos moderadores que diga se posso colocar o resto. (****************************************************************************** * MouseLib * * second release, written by Loewy Ron, AUG 90 * * Third release, TP6.0 asm support, LR Jan 91. * * 4TH release, added functions, LR FEB. 91. * * 5th release, added intercept & release functions * ******************************************************************************) unit MouseLib; interface uses dos ; const MOUSEINT = $33; {mouse driver interrupt} LEFTBUTTON = 1; {bit 0} RIGHTBUTTON = 2; {bit 1} MIDDLEBUTTON = 4; {bit 2} CURSOR_LOCATION_CHANGED = 1; {event mask bits} LEFT_BUTTON_PRESSED = 2; LEFT_BUTTON_RELEASED = 4; RIGHT_BUTTON_PRESSED = 8; RIGHT_BUTTON_RELEASED = 16; MIDDLE_BUTTON_PRESSED = 32; MIDDLE_BUTTON_RELEASED = 64; type mouseType = (twoButton,threeButton,another); buttonState = (buttonDown,buttonUp); direction = (moveRight,moveLeft,moveUp,moveDown,noMove); grCursorType = record xH,yH : byte; {x,y Hot Point} data : pointer; {cursor look pointer} end; var mouse_present : boolean; mouse_buttons : mouseType; eventX,eventY,eventButtons : word; {any event handler should update} eventhappened : Boolean; {these vars to use getLastEvent } XMotions,YMotions : word; {per 8 pixels} mouseCursorLevel : integer; {if > 0 mouse cursor is visiable, otherwise not, containes the level of showMouseCursor/hideMouseCursor} const LastMask : word = 0; lastHandler : pointer = Nil; {when changing the interrupt handler temporarily, save BEFORE the change these to variables, and restore them when neccessary} lastCursor : grCursorType = ( xH : 0; yH : 0; data : nil ); {when changing graphic cursor temporarily, save these values BEFORE the change, and restore when neccessary} const click_repeat = 10; { Recommended value for waitForRelease timeOut } procedure initMouse; {when replacing mouse mode do that..!} procedure showMouseCursor; procedure hideMouseCursor; function getMouseX : word; function getMouseY : word; function getButton(Button : Byte) : buttonState; function buttonPressed : boolean; procedure setMouseCursor(x,y : word); function LastXPress(Button : Byte) : word; function LastYPress(Button : Byte) : word; function ButtonPresses(Button : Byte) : word; {from last last check} function LastXRelease(Button : Byte) : word; function LastYRelease(Button : Byte) : word; function ButtonReleases(Button : Byte) : word; {from last last check} procedure mouseBox(left,top,right,bottom : word); {limit mouse rectangle} procedure graphicMouseCursor(xHotPoint,yHotPoint : byte; dataOfs : pointer); procedure HardwareTextCursor(fromLine,toLine : byte); procedure softwareTextCursor(screenMask,cursorMask : word); function recentXmovement : direction; function recentYmovement : direction; procedure setArrowCursor; procedure setWatchCursor; procedure setUpArrowCursor; procedure setLeftArrowCursor; procedure setCheckMarkCursor; procedure setPointingHandCursor; procedure setDiagonalCrossCursor; procedure setRectangularCrossCursor; procedure setHourGlassCursor; procedure setNewWatchCursor; procedure setcaralhoPointingCursor; procedure setEventHandler(mask : word; handler : pointer); function GetLastEvent(var x,y : word; var left_button,right_button,middle_button : buttonState) : boolean; procedure setDefaultHandler(mask : word); procedure enableLightPenEmulation; procedure disableLightPenEmulation; procedure defineSensetivity(x,y : word); procedure setHideCursorBox(left,top,right,bottom : word); procedure defineDoubleSpeedTreshHold(treshHold : word); procedure disableTreshHold; procedure defaultTreshHold; procedure setMouseGraph; procedure resetMouseGraph; procedure waitForRelease(timeOut : word); procedure swapEventHandler(mask : word; handler : pointer); { return old in lastMask and lastHandler } function getMouseSaveStateSize : word; procedure interceptMouse; { get mouse from interrupted program, and stop it .. } procedure restoreMouse; (* mouseLib - Release 2 *) (* *) (* because of quirks in hercules graphic mode that is not detectable *) (* by the mouse driver we have to know when we initMouse if we want *) (* to check for graphic mode or not, if we do we must perform a *) (* setMouseGraph before initGraph, to initGraph in text mode we must *) (* resetMouseGraph before.. , if these calling conventions are not *) (* taken we might have problems in hercules cards! *) (* *) (* each call to hideMouseCursor must be balanced by a matching call *) (* to showMouseCursor, 2 calls to hideMou.. and only 1 to showM.. *) (* will not show the mouse cursor on the screen! *) implementation ..... Edited May 28, 2012 at 05:17 PM by passarito
thoga31 Posted May 28, 2012 at 05:28 PM Report #458604 Posted May 28, 2012 at 05:28 PM Isto foi um colega meu que me deu, não fui nem eu, nem ele que desenvolveu portanto não sei se posso colocar aqui a unidade inteira. Vou postar apenas até à INTERFACE. Um dos moderadores que diga se posso colocar o resto. De facto esta situação é particular. Não sabem que foi o autor original? De qualquer das formas, vou analisar a situação junto do Staff. 😉 Knowledge is free!
passarito Posted May 28, 2012 at 05:30 PM Report #458606 Posted May 28, 2012 at 05:30 PM (edited) De facto esta situação é particular. Não sabem que foi o autor original? Sim, sei. Está logo no inicio. O Autor e o mês/ano. mas não o conheço!!!! * second release, written by Loewy Ron, AUG 90 * Edited: Calma.... Está lá na 2ª, 3ª e 4ª release que foi o Loewy Ron, provavelmente também foi ele que fez a 1ª, mas não tenho a certeza, no entanto descobri isto na net http://www.megalextoria.com/usenet-archive/news141f1/b226/comp/binaries/ibm/pc/d/00015126.html O que pode indicar que é livre.... Edited May 28, 2012 at 05:35 PM by passarito
thoga31 Posted May 28, 2012 at 06:11 PM Report #458618 Posted May 28, 2012 at 06:11 PM Sendo a licença shareware, a publicação da unit no P@P não é permitida. Lamento. Seria uma excelente unit, mas não pode ser. Agradecemos, no entanto, a tua ponderação antes de ter publicado. 😉 Knowledge is free!
passarito Posted May 29, 2012 at 12:34 PM Report #458857 Posted May 29, 2012 at 12:34 PM Para quem quizer experimentar, deixo aqui o link para a unidade mouselib e outras. http://pascal.sources.ru/mouse/mouslib8.htm As regras de utilização são, ao que parece, as da denominação de Shareware.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now