Autor Beitrag
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 09.05.10 11:56 
Alles quatsch ^^

Du hast doch irgendwo stehen
ausblenden Delphi-Quelltext
1:
MousePos: array of TPoint;					


jetzt schreibst du stattdessen
ausblenden Delphi-Quelltext
1:
MousePos: array of TMousePosData;					


und schon kannst du per MousePos[x].Button:=mbLeft z.B. die linke Taste zuweisen

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Stread Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: So 09.05.10 19:33 
Wahrscheinlich ist das doch zu schwer für mich oder ich bin das Wochenende schief drauf :(

Ich habe bisher:
ausblenden Delphi-Quelltext
1:
2:
3:
private
L,Pos:Integer;
MousePos: array of  TPoint;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm12.TimerAufzeichnenTimer(Sender: TObject);
begin
L:=Length(MousePos);
SetLength(MousePos, L+1);
MousePos[L]:=Mouse.CursorPos;
end;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm12.TimerAbspielenTimer(Sender: TObject);
begin
if Pos<Length(MousePos) then
  SetCursorPos(MousePos[Pos].X,MousePos[Pos].Y)
else
  TimerAbspielen.Enabled:=FALSE; 
Pos:=Pos+1;
end;


Bei den Variablen ersetze ich MousePos: array of TPoint durch MousePos: array of TMousePosData
Das ist noch klar.

Das kommt direkt drunter?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type TMouseButton = (mbNone,mbLeft, mbRight, mbDouble);

type TMousePosData=record 
  X,Y: integer;
  Button: TMouseButton;
end;


Mir ist nur nicht klar wie das nun die Maustaste in die Koordinate speichern soll. Ich brauche doch noch was neues im Aufzeichnen und Abspielen Timer?

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:

und schon kannst du per MousePos[x].Button:=mbLeft z.B. die linke Taste zuweisen


Wo und überhaupt warum soll ich das zuweißen? Das MousePos[x] ist nicht das Integer X oder?

PS. Wenns dir zu viel ist kannst du es gerne lassen :oops:
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 09.05.10 19:57 
Hey,

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
type
  TMouseButton = (mbLeft, mbRight, mbDouble);
  TMouseButtons = set of TMouseButton;

  TMouseData = record
    Pos: TPoint;
    Button: TMouseButtons;
  end;

var
  MouseButtons: TMouseButtons;
  MouseData: array of TMouseData;  

procedure TForm1.FormDblClick(Sender: TObject);
begin
  MouseButtons := MouseButtons + [mbDouble];
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  case Button of
    mbLeft : MouseButtons := MouseButtons + [mbLeft];
    mbRight: MouseButtons := MouseButtons + [mbRight];
  end;
end;

procedure TForm1.TimerAufzeichnenTimer(Sender: TObject);
var L: Integer;
begin
  L:=Length(MouseData);
  SetLength(MouseData, L+1);
  MouseData[L].Pos := Mouse.CursorPos;
  MouseData[L].Button := MouseButtons;
  MouseButtons := [];
end;


Ich hab das TMouseButton mal noch im ein Set erweitert, jetz kannst du da alle Buttons rein haun, die du brauchst. Wenn auf die Form geklickt wird, dann speichert er in MouseButtons, welche Buttons gedrückt wurden und schreibt sie dann wenn der Timer zuschlägt in dein Array. Für das Abspielen machste dir jetzt mal selber Gedanken, eig is es ja das gleich, bloß rumgedreht ;)

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Stread Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: So 09.05.10 20:48 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn auf die Form geklickt wird,


Das ist das Problem, ich will die Klicks nicht nur auf die Form beschränken sondern vor allem außerhalb anwenden.
Ich hab schon was, das merkt aber nur ob die Maustaste gedrückt wurde.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm12.TimerButtonklickTimer(Sender: TObject);
begin
if (GetAsyncKeyState(VK_LBUTTON) and $8000) > 0 then
begin
      Button2.Caption := 'Mouse button down';
end
   else
      Button2.Caption := 'Mouse button Up';
end;
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: So 09.05.10 20:53 
Also Bergmanns Version wirst du doch noch mit deiner kombinieren können. Wenn nicht das brich das Projekt vorläufig mal ab und widme dich denk Grundlagen des Programmierens in Delphi. Ansonsten könnten wir ja gleich das ganze Programm für dich schreiben...

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 09.05.10 21:05 
Wenn der Timer genau vor und nach dem Mausklick ausgelöst wird, dann bemerkt dein Tool so aber auch nix von dem Klick. Und bei der Länge eines Mausklicks ist die Wahrscheinlichkeit dafür relativ hoch.

Die einzige Möglichkeit wirklich alle Klicks mitzubekommen führt über Hooks. Das Thema ist aber für dich vermutlich definitiv zu schwierig. Deshalb ist die Prüfung zum Zeitpunkt des Timerereignisses wohl dennoch das Sinnvollste.