AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Schüttel-Funktion / Fenster hin und her schütteln /Windows 7

Schüttel-Funktion / Fenster hin und her schütteln /Windows 7

Ein Thema von Muchacho · begonnen am 9. Okt 2009 · letzter Beitrag vom 21. Okt 2009
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.505 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 9. Okt 2009, 15:23
OK, WM_MOVE geht leider nicht ... das wird nur einmal nach dem Verschieben ausgelöst

Left und Top ändern sch leider auch erst nach vollendetem Verschieben, aber nicht wärenddessen
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var r: Integer;
begin
  if Left < _y then r := 1 else r := 0;
  if Top < _x then Inc(r, 2);
  if r <> _r then Inc(_c) else _c := 0;
  if _c > 5 then Beep;
  _x := Left;
  _y := Top;
  _r := r;
end;
also geht das auch so auch nicht
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#12

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 9. Okt 2009, 15:36
Ich denke ich habe eine Idee:

Ich muss mich bei diesem Problem höchstwahrscheinlich überhaupt nicht mit Maus-Ereignissen beschäftigen.
Es reicht doch, wenn ich mir die TForm-Ereignisse Top und Left merken kann.

Klartext:

Wenn in einer gewisser Zeitspanne sich die Form.Top und Form.Left Werte ändern und darüber hinaus in einem bestimmten Bereich bewegen (horizontal und vertikal), dann könnte man annehmen, dass ein Fenster geschüttelt wurde (!)

Was mein Ihr dazu?

Muchacho
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#13

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 9. Okt 2009, 15:38
Zitat von himitsu:
OK, WM_MOVE geht leider nicht ... das wird nur einmal nach dem Verschieben ausgelöst

Left und Top ändern sch leider auch erst nach vollendetem Verschieben, aber nicht wärenddessen
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var r: Integer;
begin
  if Left < _y then r := 1 else r := 0;
  if Top < _x then Inc(r, 2);
  if r <> _r then Inc(_c) else _c := 0;
  if _c > 5 then Beep;
  _x := Left;
  _y := Top;
  _r := r;
end;
also geht das auch so auch nicht
Super himitsu

ich habe vorher Deinen Beitrag nicht gesehen.

Offensichtlich denkst Du etwas schneller als ich, da Du sogar schon einen Source-Entwurf vorgestellt hast.

Muchacho
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#14

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 9. Okt 2009, 15:45
Zitat von himitsu:
OK, WM_MOVE geht leider nicht ... das wird nur einmal nach dem Verschieben ausgelöst

Left und Top ändern sch leider auch erst nach vollendetem Verschieben, aber nicht wärenddessen

also geht das auch so auch nicht
Ups himitsu,

"währenddessen" ist natürlich ausschlaggebend

Da was wirklich zählt sind nur die "End-Ergebnisse" einer z.B.: links-rechts Bewegung

Muchacho

P.S.: Also muss ich weiter nach einer Lösung suchen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.505 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 9. Okt 2009, 16:44
vom Prinzip her tüfte es schon so funktionieren ...
du mußt da leider noch an der VCL vorbei die tatsächliche aktuelle Fensterposition ermitteln,
also Left und Top gegen die "wirklichen" Positionen austauschen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#16

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 9. Okt 2009, 20:54
Hi

Ich habe mit Hilfe himitsu (Danke!) einen Weg gefunden, mein Problem zu Lösen.

Sobald die Titel Leiste angeklickt wird, wird TTimer.Enbabled = true gestartet
mit einem Interval = 1

und alles andere kann man (in dem OnTimer Ereignis) mit etwas Geschicklichkeit,
während TTimer läuft, auslesen und entsprechend auswerten.

Nach ca. 2 Sekunden wird der TTimer auf Enabled = false gestellt (dafür sorgt dann eine interne Variable) und somit ausgeschaltet.


Allerdings bleibt noch eine alle letzte Frage offen:

Wie kann ich erfahren, dass eine Titel Leiste eines Windows Fenster (fsMDIChild) angeklickt wurde?


Weiß man Antwort auf diese Frage ist dieses Problem gelöst!

Gruß

Muchacho
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 10. Okt 2009, 00:04
Und wenn ich die Titelleiste anfasse und erst nach 2 Sekunden das Fenster schüttel?
Könnte einen Anwender evtl. verwirren.

Unter Win7 kann ich das Fenster mit der Maus solange festhalten wie ich möchte und das Schütteln löst die Reaktion aus.

Im Prinzip ist es doch so, dass die Titelleiste angefasst wird (Mouse-Button-Down) und dann auf spezielle Bewegungen (rechts-links) reagiert wird, bis die Maus-Taste losgelassen wird (Mouse-Button-Up)

Vielleicht sollte man das einfacher global lösen und diese Funktion für das gesamte Betriebssystem bauen, mittels eines Maus-Hooks.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#18

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 10. Okt 2009, 00:14
Zitat von Sir Rufo:
Und wenn ich die Titelleiste anfasse und erst nach 2 Sekunden das Fenster schüttel?
Oliver
Hi Oliver

Natürlich hast Du Recht !!!

Am Anfang habe ich alle diese Probleme nicht erkannt.

So gesehen, werde ich von dem Projekt ablassen, da es gibt zu wenig (bzw. Keine) Möglichkeiten
dieses Ereignis abzufangen (halten mit der Maus) um anschließend vernünftig zu behandeln.

Im Hinblick auf die Zukunft (Windows 7) ergibt dies sowieso nicht viel Sinn.

Gruß

Muchacho
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 10. Okt 2009, 00:28
Wenn du die Funktion global umsetzt (nur so macht das irgendwie sinn) mit einem Hook, dann sollte das auch reibungslos funktionieren.

Wäre auch ein nettes kleines offenes Projekt, wo diese Titelleisten-Gimmicks von Win7 für ältere Win-Versionen zugänglich gemacht werden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.505 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Schüttel-Funktion / Fenster hin und her schütteln /Windo

  Alt 10. Okt 2009, 00:29
Also das Titelleiste anklicken kann man abfangen ... da sendet ja Windows eine Nachricht an das Fenster

und das Problem mit dem Anfassen und erst nach 2, 10, 60 oder wieviel auch immer Sekunden erst schütteln, ist ja schon gelöst ... siehe mein Code ... dem ist es egal wann geschüttelt wird, man muß nur eine gewisse Zeit schütteln

praktisch bei 200ms Timer und mit dem dortigen Wert 5 = 1 Sekunde lang schütteln

das Problem ist nur, daß man nicht ausversehn auf ein normales Verschieben reagiert
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 05:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf