AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mouseover bei einem Formular...?

Ein Thema von DieTa · begonnen am 4. Sep 2003 · letzter Beitrag vom 4. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2      
DieTa

Registriert seit: 4. Sep 2003
Ort: Moers, NRW
11 Beiträge
 
Delphi 7 Personal
 
#1

Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 17:20
Servus,

Also ich weiß nicht wer von Euch das Dock bei MacOS-X kennt. Ist im Grunde bei der Windows-Taskleiste der selber Effekt, wenn diese langsam nach unten gleitet .

Nun... im Grunde geht es auch nicht um das "nach unten gleiten", sondern viel mehr um das wieder zum Vorschein bringen. Bei der Taskleiste geht das indem man im Grunde in den Bereich kommt, wo diese vorher war.

Hat jemand eine Idee, wie man das realisieren kann!?


Ciao
DieTa
Ciao
DieTa
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 17:28
Also irgendwie habe ich das ncith so ganz verstanden
Wenn du keinen Hook auf die Maus hast und dann WM_MOUSEMOVE abfängst, hättest du prakitsch ein OnMouseOver für dein Formular.
Aber irgnediwe habe ich so das Gefühl, dass ich dich nicht verstanden habe
Alexander
  Mit Zitat antworten Zitat
DieTa

Registriert seit: 4. Sep 2003
Ort: Moers, NRW
11 Beiträge
 
Delphi 7 Personal
 
#3

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 17:31
Hmmm ich glaube auch *g*

Du kennst die Funktion "Taskleiste ausblenden", oder?
Sowas möchte ich gerne nachbauen

Wenn diese ausgeblendet ist, fährst Du mit der Maus an den unteren Bildschirmrand und die Taskleiste kommt zum Vorschein.
Ciao
DieTa
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 17:40
via MouseMove erkennst du ob eine Maus über dem Formular ist.
Und hab ich einen Timer aktiviert der solange läuft bis die Maus das Formular verlässt. In ihm wird das natürlich geprüft.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
DieTa

Registriert seit: 4. Sep 2003
Ort: Moers, NRW
11 Beiträge
 
Delphi 7 Personal
 
#5

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 17:48
@Neolithos: Alles klar, dann werde ich das mal so testen.

Allerdings habe ich hier momentan noch ein anderes Problem. Wenn ich einen Button anklicke, soll sich das Formular in Richtung Bildschirmrand bewegen. Sollte das schon dort sein, soll es sich um 70 Pixel darüber hinaus in den negativen Bereich bewegen. Das macht es aber nicht. Auch bewegt es sich z.B. einwandfrei von zB Position "left" 100 nach 500, nur eben nicht von 500 nach 100 zurück. Ich lege mal den Code bei...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if YPos = 0 then
  begin
  for i := YPos to -70 do
  begin
    form1.Left := i;
    sleep(10);
  end;
  end
  else
  if not YPos = 0 then
  begin
  for i := YPos to 0 do
  begin
    form1.Left := i;
    sleep(10);
  end;
end;
end;
Ciao
DieTa

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
Ciao
DieTa
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 18:01
überprüfe mal to un downto
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
DieTa

Registriert seit: 4. Sep 2003
Ort: Moers, NRW
11 Beiträge
 
Delphi 7 Personal
 
#7

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 18:21
@neolithos:
Ok.. das mit dem downto klappt - im Grunde genommen. Allerdings klickt man den Button, es passiert nen Moment gar nichts und dann ist das Teil auch schon im Bildschirmrand drin

Ich habe es so realisiert:
Delphi-Quellcode:
var
  j: integer;
  i: integer;

begin
  for i := 0 downto -60 do
  begin
    form1.Left := i;
    sleep(30);
   end;

  for j := 255 downto 0 do
    begin
    form1.AlphaBlendValue := i;
    sleep(30);
  end;
end;
PS. Daniel B: Ich hoffe das ist jetzt der richtige
Ciao
DieTa
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#8

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 18:31
Du musst dem Fenster auch die Möglichkeit zum neuzeichnen geben.

einfachsten:
Application.ProcessMessages; professionel:
SetWindowPos
UpdateWindow
verwenden


Ein Beispiel:

Delphi-Quellcode:
procedure SlideWindow(ahwndWin : HWND; arcEnd : TRect; adwTimerInterval : Cardinal);
var rcStart : TRect;
    dwTimerStart,
    dwTimerEnd,
    dwTime : Cardinal;
    iX,
    iY,
    iHeight,
    iWidth : Integer;
    fPos : Double;
begin
  GetWindowRect(ahwndWin, rcStart);

  if fPWApp.smFullDrag and not PWRect.Compare(rcStart, arcEnd) then
     begin
       dwTimerStart := GetTickCount;
       dwTimerEnd := GetTickCount + adwTimerInterval;
       dwTime := GetTickCount;

       while dwTime < dwTimerEnd do
         begin
           fPos := (dwTime - dwTimerStart) / adwTimerInterval;

           iX := rcStart.Left - Round((rcStart.Left - arcEnd.Left) * fPos);
           iY := rcStart.Top - Round((rcStart.Top - arcEnd.Top) * fPos);
           iWidth := PWRect.Width(rcStart) - Round((PWRect.Width(rcStart) - PWRect.Width(arcEnd)) * fPos);
           iHeight := PWRect.Height(rcStart) - Round((PWRect.Height(rcStart) - PWRect.Height(arcEnd)) * fPos);

           SetWindowPos(ahwndWin, 0, iX, iY, iWidth, iHeight,
             SWP_NOZORDER or SWP_NOACTIVATE or SWP_DRAWFRAME);
           UpdateWindow(ahwndWin);
           dwTime := GetTickCount;
         end;
     end;

  SetWindowPos(ahwndWin, 0,
    arcEnd.Left, arcEnd.Top,
    PWRect.Width(arcEnd), PWRect.Height(arcEnd),
    SWP_NOZORDER or SWP_NOACTIVATE or SWP_DRAWFRAME);
  UpdateWindow(ahwndWin);
end;
adwTimerInterval setze ich meist auf 400
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
DieTa

Registriert seit: 4. Sep 2003
Ort: Moers, NRW
11 Beiträge
 
Delphi 7 Personal
 
#9

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 18:50
*hust*

habe ich eigentlich erwähnt, das ich erst seit 2 Tagen Delphi benutze? Mein Vorkenntnisse sind etwas VB und TurboPascal *g*

naja.. ich lese mich mal weiter ein...

Frage zu diesem:
Application.ProcessMessages; wo muss das genau hin? Einfach in die Prozedur rein?

Mit dem MouseOver klappt übrigens wunderbar
Ciao
DieTa
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#10

Re: Mouseover bei einem Formular...?

  Alt 4. Sep 2003, 18:55
Delphi-Quellcode:
var
  j: integer;
  i: integer;

begin
  for i := 0 downto -60 do
  begin
    form1.Left := i;
    Application.ProcessMessages;
    sleep(30);
   end;

  for j := 255 downto 0 do
    begin
    form1.AlphaBlendValue := i;
    Application.ProcessMessages;
    sleep(30);
  end;
end;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 +1. Es ist jetzt 01:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz