Myszka, klopot ze wspolrzednymi

Odpowiedz Nowy wątek
Ganiwalld
2005-04-08 16:55
Ganiwalld
0

Witam, mama taki klopot potzrebuje pobrac poycje myszki z pewnego meisjca na pulpicie. ALe chce zeby to sie działo w nastepujacej koelsjnosci wciskam buttom najezdam na miejsce ktre chce wybrac i wciskam LPM, programik pobiera wpolrzedne punktu i wysyla je np do labela

Napisałem coś takiego:

procedure TOpcje.pobieranieClick(Sender: TObject);
var
  pozycja: TPoint;

begin
getcursorpos(pozycja); //pobieranie
//wysyłanie
EditPozX.Text := IntToStr(pozycja.X);
EditPozY.Text := IntToStr(pozycja.Y);
end;

jednak efekt jest taki ze uzyskuje wpolrzedne buttona ktory wciskam:(

Jak mam to pzrerobic aby uzuskac efekt jaki potzrebuje

Pozostało 580 znaków

2005-04-08 17:05

Rejestracja: 15 lat temu

Ostatnio: 4 lata temu

0

Może zrób tak, żeby po wciśnięciu Buttona zmianiała się wartość jakiejś zmiennej globalnej typu boolean na True, a potem w onClick formy podstaw ten kod co podałeś z warunkiem, że sprawdzi się tylko gdy zmienna boolean jest True.


Pozostało 580 znaków

2005-04-08 17:14

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

To działa ale tylko w obrębie formy:

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private      { Private declarations }
  ShowXY : boolean;
  procedure PokazWSP(var MSG:Tmessage); message WM_LBUTTONDOWN;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if ShowXY then exit;
ShowXY:=true;
end;

procedure TForm1.PokazWSP(var MSG: Tmessage);
var x,y:word;
begin
if (ShowXY) and (MSG.WParam=MK_LBUTTON) then
   begin
   x:=MSG.LParamLo;
   y:=MSG.LParamHi;
   showmessage(CurrToStr(x)+', '+CurrToStr(y));
   ShowXY:=false;
   end;
end;

end.

// Powolny jestem :)


Nowe pomysły są inną kombinacją starych elementów. Nie ma nowych elementów. Są tylko nowe kombinacje.

Pozostało 580 znaków

Ganiwalld
2005-04-08 18:19
Ganiwalld
0

THX bula

a da sie to jakos przerobić zeby działao w obrebie calego ekranu??

Pozostało 580 znaków

2005-04-08 19:42

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

http://4programmers.net/faq.php?id=510


Nowe pomysły są inną kombinacją starych elementów. Nie ma nowych elementów. Są tylko nowe kombinacje.

Pozostało 580 znaków

2005-04-08 21:05

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

Ja bym to napisał tak: ;)

Deklarujesz zmienną Hook typu HHOOK jako zmienna globalną i...

W kodzie przycisku:

  Hook:=SetWindowsHookEx(WH_JOURNALRECORD,  HOOKPRC, hInstance, 0); //uruchamiasz nasłuch na nacisniecie klawisza myszy

W OnClose Formy:

  UnHookWindowsHookEx(Hook);

i piszesz taką procke:

function HookPRC(Code: Integer; wParam:WPARAM; lParam: LPARAM): Longint; stdcall;
var
 MSg: TEventMsg;
 p: TPoint;
begin
 Msg:=PEventMsg(lParam)^;
 if Msg.message=WM_LBUTTONDOWN then begin
   GetCursorPos(P);
   Form1.Label1.Caption:=IntToStr(p.X)+' '+IntToStr(p.Y);
 end;
end;

pm_coder:={PIT};

Pozostało 580 znaków

gani
2005-04-08 21:58
gani
0

[Error] Opcje1.pas(118): Undeclared identifier: 'HOOKPRC'

wywala takie cus:(

Pozostało 580 znaków

2005-04-09 13:16

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

W sekcji

type

dodaj: function HookPRC(Code: Integer; wParam:WPARAM; lParam: LPARAM): Longint; stdcall;


pm_coder:={PIT};

Pozostało 580 znaków

gani
2005-04-10 16:14
gani
0

[Error] Opcje1.pas(201): Incompatible types: 'regular procedure and method pointer'
[Error] Opcje1.pas(66): Unsatisfied forward or external declaration: 'TOpcje.HookPRC'

teraz takie cos:/

// inwencji trochę, a jak nie, to wyszukiwarka/google... - Ł

Pozostało 580 znaków

gani
2005-04-13 11:32
gani
0

szukalem ale nic nie znalalzem moze ktos pomuc i powiedizec jak naprawic ten blad

// F1 [mf]

Pozostało 580 znaków

2005-04-13 16:07

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

w SetWindowHookEx przed nazwą procedury (tej w parametrze) musi być @


Nowe pomysły są inną kombinacją starych elementów. Nie ma nowych elementów. Są tylko nowe kombinacje.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0