Autor Beitrag
dagegen
Hält's aus hier
Beiträge: 5

Win XP
D7 Prof
BeitragVerfasst: Do 12.08.04 11:06 
Hallo, ich habe ein Programm, das Bilder bildschirmfüllend anzeigt und dabei nervt die Maus.
Ein Applikationsfenster ist zusätzlich noch vorhanden und wird mit der Maus auch ausgeblendet.

Bis jetzt habe ich das so gelöst: Bei OnMouseMove und OnKeyDown wird der Timer wieder neu gestartet und die Maus eingeblendet mit Screen.Cursor:=crDefault.
Bei Erreichen von 10 Sek. wird dann im Timer mit Screen.Cursor:=crNone die Maus ausgeblendet.

Problem: Es funktioniert nicht richtig. Ich habe den Eindruck, dass OnMouseMove nicht richtig funktioniert, d.h. auch wenn ich die Maus bewege, geht manchmal das Programmfenster und der Mauszeiger nach Ablauf des Timers weg.

Meine Idee wäre es nun, von Hand die Cursorposition abzufragen und dann zu entscheiden. Oder gibt es eine einfachere Lösung?
Johannes Maier
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Do 12.08.04 11:52 
Hmm ich weiß ja nicht wie das genau gemacht ist, und kenn mich auch nicht so aus, aber liegt das vll. daran, dass das OnMouseMove auf das Formular bezogen ist, und eigentlich bei OnMouseMove auf den Bildern reagieren sollte?

_________________
MfG
Johannes ehem. jbmaier
DelphiFreund
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 120

Win XP
D7 Enterprise
BeitragVerfasst: Do 12.08.04 12:22 
Verwendest du eine Variable die sich hochzählt, und die sich bei einer Bewegung "OnMouseMove" und "OnMouseDown" auf 0 setzt? so würde ich das machen.
Ich hab nämlich eigentlich deine Methode nicht verstanden, wenn du's so machst müsste es funktionieren.

Gruß Delphifreund

_________________
Irren ist menschlich...
DelphiFreund
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 120

Win XP
D7 Enterprise
BeitragVerfasst: Do 12.08.04 12:30 
Ich hab das für dich mal gemacht (5Sek):

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:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    function Setzten: Boolean;
  private
    zaehler: Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  zaehler:= zaehler + 1;
  if zaehler = 5 then begin
    Cursor:= crNone;
  end;
end;

function TForm1.Setzten: Boolean;
begin
  zaehler:= 0;
  Cursor:= crDefault;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Setzten;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Setzten;
end;

end.


Gruß DelphiFreund

_________________
Irren ist menschlich...
dagegen Threadstarter
Hält's aus hier
Beiträge: 5

Win XP
D7 Prof
BeitragVerfasst: Do 12.08.04 13:12 
Hallo, danke für den Programm-Code! Genau so habe ich das auch schon realisiert. Und jetzt tritt das Problem auf, dass OnMouseMove nicht aufgerufen wird, wenn ich z.B. auf den vorhandenen Karteikartenreitern die Maus hin- und herbewege. Ich habe noch nicht vollständig herausgefunden, wann OnMouseMove eigentlich aufgerufen wird, aber definitiv ist es nicht nur von einer Mausbewegung abhängig sondern auch noch von irgendwelchen Elementen/Buttons/was weiß ich innerhalb der Anwendung.