App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[Delphi] Ist ein bestimmtes Objekt unter der Maus?
- Ersteller Dalai
- Erstellt am
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Hey Leute,
ich komme mal wieder nicht weiter...
Ich bin grade dabei, eine Funktion zu schreiben, die mir einen Boolschen Wert zurückgibt, ob sich die Maus über einem bestimmten, dabei aber beliebigen Objekt befindet.
Um das näher zu erläutern, schreibe ich mal, was ich bis jetzt habe:
Diese Funktion nimmt aber nur Objekte vom Typ TForm entgegen.
Wie kann ich es erreichen, dass ich der Funktion ein beliebiges Objekt übergeben kann (also auch TLabel, TButton usw)?
Geht das mit dem Handle des entsprechenden Objekts? Wenn ja, wie komme ich dann an die Eigenschaften des Objekts ran, also Höhe, Breite usw?
Gibts evtl. schon eine derartige Funktion?
Ich danke euch im Voraus für eure Hilfe/Mühe.
Dalai
ich komme mal wieder nicht weiter...
Ich bin grade dabei, eine Funktion zu schreiben, die mir einen Boolschen Wert zurückgibt, ob sich die Maus über einem bestimmten, dabei aber beliebigen Objekt befindet.
Um das näher zu erläutern, schreibe ich mal, was ich bis jetzt habe:
Code:
function blub(Objekt: TForm): Boolean;
var
Maus_Pos: TPoint;
begin
Result:= False;
Windows.GetCursorPos(Maus_Pos); //Maus-Position lesen
//befindet sich die Maus auf der X-Achse innerhalbs des Objekts?
if ((Maus_Pos.x > Objekt.Left) AND (Maus_Pos.x < Objekt.Left + Objekt.Width)) then
begin
//befindet sich die Maus auf der Y-Achse innerhalbs des Objekts?
if ((Maus_Pos.y > Objekt.Top) AND (Maus_Pos.y < Objekt.Top + Objekt.Height)) then
begin
Result:= True; //Wenn beides zutrifft, dann ist die Maus über dem Objekt
end;
end;
end;
Diese Funktion nimmt aber nur Objekte vom Typ TForm entgegen.
Wie kann ich es erreichen, dass ich der Funktion ein beliebiges Objekt übergeben kann (also auch TLabel, TButton usw)?
Geht das mit dem Handle des entsprechenden Objekts? Wenn ja, wie komme ich dann an die Eigenschaften des Objekts ran, also Höhe, Breite usw?
Gibts evtl. schon eine derartige Funktion?
Ich danke euch im Voraus für eure Hilfe/Mühe.
Dalai
Zuletzt bearbeitet:
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.249
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Schau Dir mal die Win-API-Funktion WindowFromPoint() an.
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Über die Funktion bin ich schon gestolpert, aber ich merke erst jetz, dass mir die was nützen kann
Ich hole mir also mit dieser Funktion das Handle des Objekts, aber wie mache ich dann weiter?
Wie komme ich an die Eigenschaften des Objekts ran bzw. wie kann ich prüfen, ob sich das gewünschte Objekt (das Objekt, was meiner Funktion übergeben wird) unter der Maus befindet?
Ich hole mir also mit dieser Funktion das Handle des Objekts, aber wie mache ich dann weiter?
Wie komme ich an die Eigenschaften des Objekts ran bzw. wie kann ich prüfen, ob sich das gewünschte Objekt (das Objekt, was meiner Funktion übergeben wird) unter der Maus befindet?
Antarctica
Grand Admiral Special
- Mitglied seit
- 11.09.2004
- Beiträge
- 2.444
- Renomée
- 34
- Standort
- Kupferstadt Stolberg
- Mein Laptop
- HP 625, V140, 4GB RAM, 32GB SSD, Ubuntu 15.04 (WT279EA)
- Prozessor
- Intel Core i5-4690, 4x 3.50GHz, boxed (BX80646I54690)
- Mainboard
- ASRock H97M Pro4 (90-MXGTA0-A0UAYZ)
- Kühlung
- Scythe Big Shuriken 2 Rev. B (SCBSK-2100)
- Speicher
- 2x Exceleram Black and White 8GB PC3-12800 DDR3-1600 Kit (EBW301A)
- Grafikprozessor
- Gigabyte GeForce GTX 750 Ti OC low profile, 2GB GDDR5, DVI, 2x HDMI, DisplayPort (GV-N75TOC-2GL)
- Display
- Samsung SyncMaster T24A350, 24" (LT24A350EW)
- SSD
- Samsung SSD 960 EVO 500GB, PCIe (MZ-V6E500BW)
- HDD
- 2x Seagate GoFlex Desk 3TB, USB 3.0 (STAC3000201/STAC3000202)
- Optisches Laufwerk
- Samsung SH-224BB schwarz, SATA, retail (SH-224BB/RSMS)
- Soundkarte
- on-board
- Gehäuse
- Inter-Tech IT-5908
- Netzteil
- be quiet! System Power S6 80Plus 300W ATX 2.2 (S6-SYS-UA-300W/BN080)
- Betriebssystem
- Microsoft: Windows 10 Pro 64Bit, DSP/SB (deutsch) (PC) (FQC-08922)
- Webbrowser
- Mozilla Firefox
Code:
function blub(Objekt:TControl): Boolean;
var
Maus_Pos: TPoint;
begin
Result:= False;
Windows.GetCursorPos(Maus_Pos); //Maus-Position lesen
//befindet sich die Maus auf der X-Achse innerhalbs des Objekts?
if ((Maus_Pos.x > Objekt.Left) AND (Maus_Pos.x < Objekt.Left + Objekt.Width)) then
begin
//befindet sich die Maus auf der Y-Achse innerhalbs des Objekts?
if ((Maus_Pos.y > Objekt.Top) AND (Maus_Pos.y < Objekt.Top + Objekt.Height)) then
begin
Result:= True; //Wenn beides zutrifft, dann ist die Maus über dem Objekt
end;
end;
end;
wird aufgerufen mit
blub(Form1 as TControl);
blub(Button as TControl);
blub(Edit as TControl);
Das dürfte die einfachste Lösung sein *fg*
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.249
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Und was ist, wenn das Fenster von einem anderen Fenster verdeckt wird? WindowFromPoint() beachtet solche Fälle, Dein Code nicht. Kann natürlich sein, dass das für Dalai unwichtig ist.
@Dalai: Sorry, ich kann kein Delphi, aber geht mit Delphi nicht sowas in der Art: CWnd wnd = new CWnd(hWnd); ? Also dass man eine TForm (oder was auch immer) an ein vorhandenes Fensterhandle hängt, statt ein neues Fenster zu erzeugen?
@Dalai: Sorry, ich kann kein Delphi, aber geht mit Delphi nicht sowas in der Art: CWnd wnd = new CWnd(hWnd); ? Also dass man eine TForm (oder was auch immer) an ein vorhandenes Fensterhandle hängt, statt ein neues Fenster zu erzeugen?
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
@TiKu:
Ich will oder besser muss gezwungenermaßen selbst einen MouseWheelDown/-Up-Handler schreiben, damit ich ein beliebiges Objekt scrollen kann. Das soll es aber nur tun, wenn sich die Maus über diesem Objekt - das nicht unbedingt den Fokus hat (!) - befindet.
@Antarctica:
wird aufgerufen mit
blub(Form1 as TControl);
blub(Button as TControl);
blub(Edit as TControl);
Das funktioniert schon wunderbar.
Jetzt gibt es nur noch ein Problem: Wie berechne ich die absoluten Left und Top-Werte des Objekts in Relation zum aktiven Formular? Denn die Left-/Top-Werte des Objekts beziehen sich ja nur auf die Form, wenn dieses auch der Parent ist, nicht jedoch, wenn zb. ein Panel der Parent eines Frames ist und ich die Position des Frames haben will...
Richtig, das ist unwichtig für mich.Und was ist, wenn das Fenster von einem anderen Fenster verdeckt wird? [...]
Kann natürlich sein, dass das für Dalai unwichtig ist
Ich will oder besser muss gezwungenermaßen selbst einen MouseWheelDown/-Up-Handler schreiben, damit ich ein beliebiges Objekt scrollen kann. Das soll es aber nur tun, wenn sich die Maus über diesem Objekt - das nicht unbedingt den Fokus hat (!) - befindet.
Das gibt mir auch nur ein Handle zurück. Aber ich weiß nicht, wie ich von diesem Handle dann auf die Eigenschaften des Objekts komme.aber geht mit Delphi nicht sowas in der Art: CWnd wnd = new CWnd(hWnd); ? Also dass man eine TForm (oder was auch immer) an ein vorhandenes Fensterhandle hängt, statt ein neues Fenster zu erzeugen?
@Antarctica:
wird aufgerufen mit
blub(Form1 as TControl);
blub(Button as TControl);
blub(Edit as TControl);
Das funktioniert schon wunderbar.
Jetzt gibt es nur noch ein Problem: Wie berechne ich die absoluten Left und Top-Werte des Objekts in Relation zum aktiven Formular? Denn die Left-/Top-Werte des Objekts beziehen sich ja nur auf die Form, wenn dieses auch der Parent ist, nicht jedoch, wenn zb. ein Panel der Parent eines Frames ist und ich die Position des Frames haben will...
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Ich habe eine Lösung gefunden:
Code:
function blub(Objekt_Handle: THandle): Boolean;
var
Maus_Pos: TPoint;
Handle2: THandle;
begin
Result:= False;
Windows.GetCursorPos(Maus_Pos); //Maus-Position lesen
Handle2:= WindowFromPoint(Maus_Pos); //Handle des Objekts unter der Maus lesen
//Wenn die Handles identisch sind, dann muss wohl die Maus über dem
//gewünschten Objekt sein
if (Handle2 = Objekt_Handle) then
Result:= True;
end;
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
@ TiKu: Ich danke dir. Du hattest den richtigen Riecher.
@Antarctica: Danke auch dir. Vielleicht kann ich so etwas später nochmal gebrauchen.
CU Dalai
@Antarctica: Danke auch dir. Vielleicht kann ich so etwas später nochmal gebrauchen.
CU Dalai
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 52K