Oppure

Loading
01/08/14 21:28
Buongiorno, sto realizzando un progetto LEGGERMENTE complesso e volevo renderlo un pochino più user friendly, e tra varie migliorie mi sembrava giusto aggiungere la funzionalità del mouse.
So già che esiste una unità chiamata mouse.TPU e mi sono documentato sul sito free Pascal org doc lib rtl o quello che è. Non è grande quindi mi sono quasi studiato a memoria le procedure/funzioni che contiene.
Ora viene il problema. Ho scelto di arrendermi ad usare FPC su dosbox in quanto presenta diverso problemi di compatibilità, nonostante mi sembri più "puro" rispetto ai programmi per windows.
Oggi inizio a pensare che la scelta di usare dev Pascal che compila per prompt dei comandi (in realtà scrivo con geany e con dev compilo solo, ma non c'entra) non sia più tanto migliore, in quanto ha un altro problema grave che ne compromette l'usabilità in alcuni progetti: NON va il MOUSE!!! D: :grr:

Mi sono sbattuto più di un'oretta su internet senza trovare alcunché di rilevante, quindi vorrei chiedere a voi saggi.
E prometto che questa sarà l'ultima volta che userò Pascal e poi passerò al C.

SI può usare in qualche modo il mouse in programmi Pascal sotto Windows, ovvero emulati via prompt dei comandi????
02/08/14 12:58
Poggi Marco
Ciao!

Prova questo semplice programma:
Program TestMouse;
Uses crt, mouse;

Var evento:TMouseEvent;

begin
  InitMouse;
  Writeln('Move mouse cursor to square 10,10 to end');
  textColor(3);
  Repeat
    GetMouseEvent(evento);
    goToXY(1, 3);
    write(' X,Y= (',evento.X:3,',',evento.Y:3,') Bottone: ',evento.buttons);
    write(' azione: ',evento.action:3);
  Until (evento.X=10) and (evento.Y=10);
  DoneMouse;
  textColor(7);
  writeln; writeln; write('Fine... ');
  readln; writeln;
end.
Funziona correttamente ?
aaa
03/08/14 14:10
Postato originariamente da Poggi Marco:

Ciao!

Prova questo semplice programma:
Program TestMouse;
Uses crt, mouse;

Var evento:TMouseEvent;

begin
  InitMouse;
  Writeln('Move mouse cursor to square 10,10 to end');
  textColor(3);
  Repeat
    GetMouseEvent(evento);
    goToXY(1, 3);
    write(' X,Y= (',evento.X:3,',',evento.Y:3,') Bottone: ',evento.buttons);
    write(' azione: ',evento.action:3);
  Until (evento.X=10) and (evento.Y=10);
  DoneMouse;
  textColor(7);
  writeln; writeln; write('Fine... ');
  readln; writeln;
end.
Funziona correttamente ?



nuoooo!!!! MITICO! MICIDIALE!!!:hail:

potrei per favore avere qualche informazione in più su qquesto "meccanismo"? giusto per curiosità :)
io facevo solo x:=getmousex e non funzionava!

grazie mille!!!:k:

PS: ho notato che evento è un record...
19/08/14 12:43
scusate, mea culpa.

sono abituato a leggere sulla documentazione solo le procedure e funzioni, non i tipi e tutta quella roba lì che non mi piace. penso che dovrò iniziare.

non mi sono accorto che nel tuo programma hai messo tutti gli attributi del record, bello!

qui è tutto quello che hai detto, completo:
freepascal.org/docs-html/rtl/mouse/…

certo, non dice proprio tutto, come ad esempio in questo caso non specifica i valori di "action", ma mi basta di gran lunga questo. grazie ancora
02/09/14 18:07
Bonnox
sperando di fare del bene a qualcuno, vi riporto i miei stati del mouse. possiamo contribuire tutti al miglioramento di questa tabella database! =D



riepilogo azioni mouse:

0: stazionamento (rimane 0 anche se si muove il cursore di windows all'interno di un "pixel" dos)

1: pressione di un tasto

    1: sinistro

    2: destro

    4: rotella centrale premuta

2: compare subito dopo la pressione di un tasto ma non so cosa significhi

3: non lo ho incontrato

4: movimento (attraversamento di più "tiles";)
Ultima modifica effettuata da Bonnox 02/09/14 18:31
aaa