Invert Mouse Hjælp

Tags:    delphi

Du hente programmet på: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=633&lngWId=7
Jeg har brug for nogle kommentarer (//) inde i i teksten, og så en grundig beskrivelse af den...!


[Redigeret d. 05/08-04 19:11:56 af ttjarloev]



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Hmm først vil jeg lige sige at jeg mener der er en fejl i koden.. Men hvis den virker ved dig er det jo fint nok. Men jeg mener altså at

DiffX, DiffY: string;

skulle have været

DiffX, DiffY: integer;

og hvis det er rigtigt skal du fjerne "erne uden om +15, -15 og +0 og fjerne alle StrToInt i den sidste linie.

Men her er en lille forklaring til koden: (Håber du forstår den ellers må du jo lige spørge ;))

[p]
procedure TForm1.Timer1Timer(Sender: TObject); // Denne linie viser at når Timer1 udløber udføres koden mellem begin og end (hvis den er sat til 1000 udføres koden mellem begin og end hvert sekund).
var //Herunder deklareres alle strings, integers og lignende.

Position: Tpoint; //Position.X ,Position.Y. Position er navnet på den TPoint der skal bruges. TPoint er et sted hvor du kan gemme noget input. I en TPoint kan gemmes en x og y værdi på samme måde som der kan gemmes tekst i en string, tal i en integer osv.
PosTempX,PosTempY:integer; //Temp Pos.. Laver 2 integers der kan gemmes tal i med navnene PosTempX og PosTempY.
DiffX,DiffY:string; // Set to Diff Value.. Laver 2 integers der kan gemmes tekst i.

begin //Her begynder den kode der skal udføres.

GetCursorPos(Position); //GetCursorPos er en funktion der henter Cursorens position på skærmen (Position) viser hvad cursorens position skal gemmes i. Altså kommer Position til at indeholde cursorens kordinater på skærmen.
if Position.x {Nu er musens position gemt i Position og her kaldes dens X kordinat så.}<>PosTempX {her tjekkes om cursorens "nygemte" X position er større eller mindre end den der før var gemt. På den måde kan man tjekke om musen har flyttet sig eller om den er det samme sted som før} then PosTempX := Position.x; {her skrives så det der skal ske hvis musen har flytter sig, i dette tilfælde skal PosTempX opdateres til den nye position som er gemt i Position.}
if Position.y<>PosTempY then PosTempY := Position.y; // Her udføres det samme bare med cursorens Y kordinat istedet.

repeat //Denne linie viser hvad der skal gentages.

//Det der skal gentages skal stå imellem repeat og until.

GetCursorPos(Position); //Dette gør at Position bliver opdateret med musens nye kordinater.

until (Position.x<>PosTempX) or (Position.y<>PosTempY); //Denne linie viser hvor længe den skal gentages. I dette tilfælde skal den gantages indtil cursorens x eller y værdi ændrer sig (altså indtil musen flytter sig).

if Position.x>PosTempX {Dette tjekker den gemte X kordinat (gemt i Position) er større end den der er gemt i PosTempX (altså hvis musen har flyttet sig nedad på skærmen)} then DiffX:='-15'; {dette gør at hvis det den tjekkede før var rigtigt (hvis musen havde flyttet sig nedad) skal der trækkes 15 fra stringen DiffX.}
if Position.x<PosTempX {Dette tjekker så om musen har flyttet sig opad istedet og ligger 15 til DiffX istedet} then DiffX:='+15';
if Position.x=PosTempX {Denne tjekker om musen slet ikke har flytte sig og hvis den ikke har det skal der selvfølgelig ikke lægges noget til.} then DiffX:='+0'; //+0;

//Følgende gør fuldstændig det samme bare med cursorens Y kordinater istedet.
if Position.y>PosTempY then DiffY:='-15'; //-15..
if Position.y<PosTempY then DiffY:='+15'; //+15..
if Position.y=PosTempY then DiffY:='+0'; //+0; //Do nothing..


//den følgende linie sætter cursorens position på skærmen til: den gemte X kordiant i Position + det gemte i DiffX og bagefter gør den det samme med Y Kordinaterne.
SetCursorPos(Position.x+strtoint(DiffX),Position.y+strtoint(DiffY));




end;


procedure TForm1.FormActivate(Sender: TObject);
begin
//Change Mouse Button Left To Right

SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 1, NIL, 0); //Denne linie bruger enkelt nok en funtion der bytter om på museknappernes tryk.
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Change Back to Mouse to Normal

SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 0, NIL, 0);
end;

end.
[/p]
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------



Ingen? Kan godt hæve point! I kan lige få min source:

unit Unit1; // -- |>!\\//\\. --
//
interface // This code will Invert your Mouse at Control
// and buttons..ENJOY !
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.Timer1Timer(Sender: TObject);
var
Position: Tpoint; //Position.X ,Position.Y..
PosTempX,PosTempY:integer; //Temp Pos..
DiffX,DiffY:string; // Set to Diff Value..
begin

GetCursorPos(Position); //Cursor Position into Temp
if Position.x<>PosTempX then PosTempX := Position.x; // into PosTempX
if Position.y<>PosTempY then PosTempY := Position.y; // and PosTempY..

repeat
GetCursorPos(Position); //Repeat Until it get a New Cursor Position..
until (Position.x<>PosTempX) or (Position.y<>PosTempY);

if Position.x>PosTempX then DiffX:='-15'; //-15..
if Position.x<PosTempX then DiffX:='+15'; //+15..
if Position.x=PosTempX then DiffX:='+0'; //+0; //Do nothing..

if Position.y>PosTempY then DiffY:='-15'; //-15..
if Position.y<PosTempY then DiffY:='+15'; //+15..
if Position.y=PosTempY then DiffY:='+0'; //+0; //Do nothing..

SetCursorPos(Position.x+strtoint(DiffX),Position.y+strtoint(DiffY));




end;


procedure TForm1.FormActivate(Sender: TObject);
begin
//Change Mouse Button Left To Right

SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 1, NIL, 0);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Change Back to Mouse to Normal

SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 0, NIL, 0);
end;

end.



[Redigeret d. 05/08-04 19:12:24 af ttjarloev]



Hvorfor skrives var inde i koden? Bør man ikk skrive det aller øverst?



Det er faktisk lige meget hvilket af de to steder man skriver det men normalt ville JEG vælge at skrive det først i koden.

Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------



Det er faktisk lige meget hvilket af de to steder man skriver det men normalt ville JEG vælge at skrive det først i koden.


Hvis jeg flytter det op til den øverste var, får jeg fejl!




Det lyder meget mærkeligt.. Det burde være helt lige meget.. Sikker på du har sat det ind det rigtige sted?
Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------



Det lyder meget mærkeligt.. Det burde være helt lige meget.. Sikker på du har sat det ind det rigtige sted?



Det var fordi jeg skrev DiffX, DiffY: string;, ikke iffX, DiffY: integer;

Du får pointene! Tak for hjælpen!



t