AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mausrad mit Label, Scrollbar, etc. benutzen
Thema durchsuchen
Ansicht
Themen-Optionen

Mausrad mit Label, Scrollbar, etc. benutzen

Ein Thema von kurtm1 · begonnen am 18. Dez 2005 · letzter Beitrag vom 27. Dez 2005
Antwort Antwort
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#1

Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 18. Dez 2005, 17:58
Also es geht darum, mit dem Mausrad verschiedenen Aktionen zu setzen.

Zum Beispiel möchte ich den Wert einer Scrollbar mit dem Mausrad verändern können.
Weiters soll eine Aktion ausgelöst werden, wenn ich mit dem Cursor über einem normalen Label bin, und micht mit dem Mausrad spiele.

Wie kann das realisiert werden?

thx
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 18. Dez 2005, 18:09
das Form hat entsprechende Mausradereignisse. Du musst also nur innerhalb dieses Ereignisses prüfen welches Control sich unter dem Cursor befindet und kannst dementsprechend reagieren. Wenn du selbst komponenten schreibst brauchst du auch einfach nur die Messages abfangen. Allerdings ist dort vorraussetzung dass, das control den Focus hat und somit würde das Label ausscheiden und man müsste zuvor auch erst die entsprechende Komponente anklicken oder per tab wählen damit diese den focus bekommt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#3

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 18. Dez 2005, 19:05
Zitat von SirThornberry:
das Form hat entsprechende Mausradereignisse. Du musst also nur innerhalb dieses Ereignisses prüfen welches Control sich unter dem Cursor befindet und kannst dementsprechend reagieren.
Das war mir auch klar, nur weiß ich eben nicht, wie ich abfragen kann, welches Objekt jetzt unter dem Cursor ist..
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#4

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 20. Dez 2005, 12:50
push

hat wer eine idee/lösung?
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 20. Dez 2005, 12:55
Angeblich gibt es ja die Eigenschaften

Delphi-Quellcode:
form1.left
form1.top
scrollbar1.left
scrollbar1.top
scrollbar1.height
scrollbar1.width

mouse.x
mouse.y
wie das aussieht wenn das form selbst auch nur in ein anderes eingebettet ist weiss ich nicht
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#6

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 20. Dez 2005, 13:10
ok das würde schon gehen, ist aber wohl sehr sehr umständlich..


//EDIT: Hier mal mein Code, habe jetzt alles mal in eine Funktion verpackt:

Delphi-Quellcode:
function MouseWheel (Sender:TControl;WheelDelta:Integer;MousePos:TPoint):shortint;
begin
        if (Mousepos.X-Form1.Left>=Sender.Left) and (MousePos.X-Form1.Left<=Sender.Left+Sender.Width) and
        (MousePos.Y-form1.Top>=Sender.Top) and (MousePos.Y-form1.Top<=Sender.Top+Sender.Height) then
        begin
        if WheelDelta>0 then Result:=1
        else
        Result:=-1;
        end
        else
        result:=0;
end;
Aufgerufen wird das dann im "TForm1.FormMouseWheel" Event:
Delphi-Quellcode:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
        ScrollBar1.Position:=ScrollBar1.Position+MouseWheel(ScrollBar1,WheelDelta,MousePos);
        ScrollBar2.Position:=ScrollBar2.Position+MouseWheel(ScrollBar2,WheelDelta,MousePos);
end;
Sollte denk ich klar sein. Das einzige was man noch beachten muss: Wenn man die Funktion so verwendet wie ich sie oben habe, muss auf der Form "bsstyle=bsnone" eingestellt werden, sonst stimmen die Y Werte der Objekte nicht. (Dies hängt mit der Titelleiste zusammen)
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#7

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 26. Dez 2005, 22:36
für alle hier nochmal die Version mit korrigierten Y Werten, daher kann die Form jetzt ganz normal mit bsSingle verwendet werden:

Delphi-Quellcode:
function MouseWheel (Sender:TControl;WheelDelta:Integer;MousePos:TPoint):shortint;
begin
        if (Mousepos.X-Form1.Left>=Sender.Left) and (MousePos.X-Form1.Left<=Sender.Left+Sender.Width) and
        (MousePos.Y-form1.Top>=Sender.Top+GetSystemMetrics(4)) and (MousePos.Y-form1.Top<=Sender.Top+Sender.Height+GetSystemMetrics(4)) then
        begin
        if WheelDelta>0 then Result:=-1
        else
        Result:=1;
        end
        else
        result:=0;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 27. Dez 2005, 08:22
Hai kurtm1,

was häst Du denn von diesem Lösungsansatz?:
Delphi-Quellcode:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: integer; MousePos: TPoint; var Handled: boolean);
const
  DeltaDiv = 20;
var
  ControlOnMouse: TControl;
begin
  ControlOnMouse := ControlAtPos(ScreenToClient(MousePos), False, True);
  if (ControlOnMouse is TScrollBar) then // Für alle Scrollbars
  begin
    with (ControlOnMouse as TScrollBar) do
    begin
      Position := Position - (WheelDelta div DeltaDiv);
    end;
  end;
  if (ControlOnMouse = Label1) then // Nur für Label1
  begin
    with (ControlOnMouse as TLabel) do
    begin
      Label1.Caption := IntToStr(StrToInt(Label1.Caption) + WheelDelta);
    end;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#9

Re: Mausrad mit Label, Scrollbar, etc. benutzen

  Alt 27. Dez 2005, 08:39
hmm sieht auch gut aus und funzt auch problemlos

kürzer ist es auch noch

perfekt
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:38 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