Autor Beitrag
Taladan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88


Delphi 2005 Personal
BeitragVerfasst: Mi 06.08.03 16:26 
Wie kann ich in einen Element den Click einer Maus simulieren. Wenn ich z. B. die Coordinaten x,y habe, soll die ein klick genau auf diese coordinaten ausgeführt werden.

Also ungefähr so
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var x,y : integer
begin
   mouseclick?(x,y);
   mach irgendwas....
end;
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 06.08.03 21:49 
Hmm..Ehrlich gesagt, verstehe ich nicht ganz genau, was du meinst.

Willst du, dass abhängig von den Mauskoordinaten was verschiedenes ausgeführt wird? Dann würd ich mir mal die Ereignisse onMouseDown bzw onMouseUp anstelle von OnClick anschauen. Da werden die Koordinaten nämlich mitübergeben...

_________________
We are, we were and will not be.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mi 06.08.03 21:56 
wenn du auf diese Art und Weise auf einen Button deiner Form klicken willst, dann kannst du acuh die Entsprechende Prozedur direkt aufrufen:
ausblenden Delphi-Quelltext
1:
 button1click(sender);					


btw: ich weiß, das das evtl. gar nicht das ist, was du willst, da du aber keinen näheren Verwendungszweck angegeben hast lag es für mich nahe ;)
Andreas_Sans
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Mi 06.08.03 23:13 
ich glaube er meint, dass man einen Mausclick z.B. auf ein label simuliert indem man die Koordinaten des labels angibt auf die man klicken soll
OlliH
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 06.08.03 23:30 
Easy Delphi Helper 2000 - EDH online
Mausclick simulieren
Hits: 593
Modul für den EDH: modul8.edu Download
Eingesendet von: Sven Schneider Mail

Zitat:
Mausclick simulieren

Die folgende Procedure simuliert einen Linksclick an den angegebenen Koordinaten (X=100, Y=200). Es werden damit dann auch das entsprechende OnClick-Ereignis der Komponente ausgeführt.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Timer1Timer(Sender: TObject);
var 
  x,y: integer;
begin
  x:=100;
  y:=200;
  mouse_event(MOUSEEVENTF_leftDOWN,x,y,0,0);
  mouse_event(MOUSEEVENTF_leftUP,x,y,0,0);
end;

Für die rechte Maustaste gilt entsprechend:

MOUSEEVENTF_RIGHTDOWN
MOUSEEVENTF_RIGHTUP
Und das gleiche gibt es auch noch für die mittlere Maustaste:

MOUSEEVENTF_MIDDLEDOWN
MOUSEEVENTF_MIDDLEUP

Moderiert von user profile iconTino: Quote- & Delphi-Tags hinzugefügt.
Andreas_Sans
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Do 07.08.03 01:45 
ich hab einfach Mousedown auf dem Formblatt benutzt und den Bereich eingegrenzt in dem man clicken kann um ein Ereignis auszulösen :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i : integer;
begin
if (x >= 100and (x<= 200and (y >= 100and (y <= 200then begin
//dein eigener programmtext
                                                            end;
end;


hier kann mal also in den Bereich von 100-200 auf der x-Achse und 100-200 auf der y-Achse klicken. Die Koordinaten bilden also ein Rechteck
Taladan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88


Delphi 2005 Personal
BeitragVerfasst: Do 07.08.03 10:41 
Also. Mein Problem ist es, das ich ein DBGrid (MouseDown-Event habe ich hinzugefügt) habe, wo ich per Drag & Drop bestimmte Daten von einen anderen DBGrid bzw Listbox ziehen möchte.
Alles so weit in ordnung, doch leider erhalte ich bei den gelieferten coordinaten von Delphi enteweder die Mousecoordianten oder die coordinaten der Zelle, bei momentaner ansicht. Also nicht der Reelle 79 Datensatz, sondern nur der fünfte der momentanen Ansicht. Also ist eine Bewegung zu diesen Datensatz schwer, da mir mir ja zum einen der ausgangsdatensatz, wo der zeiger steht, gar nicht in der momentanen anzeige zu sehen sein muss (überlange Tabelle). Zum anderen kann er vor beziehungsweise hinter den Datensatz geklickt worden sein, aber ich erhalte immer als anzeige den 7 Datensatz. Also mus ich irgendwie diesen datensatz mit vorhanden mitteln ansteuern.

Nach langer überlegung, dacht ich mir, ich kann dies über einen simulierten Mouseclick tun. Oder kennt jemand eine bessere Möglichkeit?
Leider gibt es ja beim DBGrid nicht die Funktion MouseToCell, was das ganze erheblich vereinfachen würde.
Taladan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88


Delphi 2005 Personal
BeitragVerfasst: Do 07.08.03 11:27 
Ich habe den kode jetzt folgendermaßen aufgebaut.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure THauptform.DBGrid2DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var Cell: TGridCoord;
    a : integer;
    hiddendata : THidden;
begin
     try
          mouse_event(MOUSEEVENTF_leftDOWN,x,y,0,0);
          mouse_event(MOUSEEVENTF_leftUP,x,y,0,0);
     finally
           if (source = listbox1) then
           begin
           a:= (source as TListBox).itemindex;
           hiddendata := ((Source as Tlistbox).Items.Objects[a] as THidden);
           table2.Edit;
           table2verteiler.value := hiddendata.id;
           table2.Post;
           Table2.refresh;
           end;
     end;
end;


Warum führt das Program erst den kompletten code aus und wechselt dann in die entsprechende zeile?