Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi runde Schaltflächen (https://www.delphipraxis.net/48729-runde-schaltflaechen.html)

Marvel 29. Jun 2005 16:55


runde Schaltflächen
 
Hi Leute.
folgendes Problem:
1. Ich will in meinem Prog nich einfach Buttons machen, die sind zu langweilig. Statdessen will ich Images nehmen, die halt als Buttons dienen.
2. Ich will keine rechteckigen Images nehmen, die sind mir zu langweilig ;-), sondern runde und abgerundete Images.

Nun kann man das natürlich einfach transparent werden lassen, aber dann wird das OnClick-Ereigniss trotzdem ausgelöst, wenn man auf transparente Stellen klickt. Das is sehr störend, so wie ich das machen will.
Jetzt hab ich schon ne Weile rumgesucht und mit den Regions experimentiert. Bei Buttons würde das auch ein A funktionieren, aber bei Images is nix... Versteh ich zwar nicht ganz, aber ihr habt da sicher ne Ahnung...

Also meine Frage: wie kann ich Images so beschneiden, dass das OnClick-Ereigniss (und andere) nur auf einer bestimmten Fläche ausgelöst werden?

Danke im Voraus. Ich hab wie immer großes Vertrauen in euch....

jfheins 29. Jun 2005 17:00

Re: runde Schaltflächen
 
Du könntest dir einen Image-Button ableiten, der das OnClick nur auslöst, wenn an dieser Stelle z.B. min. 50% Deckfähigkeit ist ;)

Jarmen_Kell 29. Jun 2005 17:10

Re: runde Schaltflächen
 
Oder dich davon einfach nicht stören lassen und am Anfang der OnClick-Prozedur abfragen, an welcher Stelle das passiert ist. (Da wäre dann natürlich MouseDown, -Up praktischer).
Wenn die Position innerhalb des Kreises, runden Rechtecks, was auch immer liegt, dann wird das Ereignis ausgelöst und wenn nicht ... tja dann wohl eher nicht.

r2c2 29. Jun 2005 17:19

Re: runde Schaltflächen
 
Oder du leitest von TButton - oder ne besser direkt von TWinControl ab. Den Button kannst du dann rund(oder wie auch immer) Zeichnen. Das hätte dann auch den Vorteil, dass man auch sieht, dass der Button gerade gedrückt wird(sofern du das natürlich so proggst). Du musst den Button dann nur Pseudo-3D Zeichnen. Is nicht so schwer, wie sich das jetzt vielleicht anhört. Sollte also machbar sein...

mfg

Christian

Marvel 29. Jun 2005 17:47

Re: runde Schaltflächen
 
Also erstma danke...
zu jfheins: was meinst du mit 50% Deckfähigkeit?

zu Jarmen_Kell: und wie kann ich das halbwegs praktisch prüfen? Muss ich ja ne Fläche festlegen, in der das Ereigniss ausgelöst wird. Was nehme ich da? wie prüfe ich, ob der Punkt drin is?

zu r2c2: mit Komponentenentwicklung kenn ich mich jetzt nich so aus... also das heißt.. ich hab keine Ahnung, wie ich das machen müsste.

Jarmen_Kell 29. Jun 2005 18:04

Re: runde Schaltflächen
 
Kommt auf die Form an.
Wenn es z.B. ein Kreis ist, ist es noch relativ simpel.
Den Mittelpunk hast du ja wohl (Zur Not Bei MouseD, - U: Object.Widht/2 und Object.Height/2)
Dann rechnest du den Abstand zwischen Klick-Punkt und Mittelpunkt aus und guckst, ob das im Kreisradius liegt.
Je komplizierter die Form ist, desto schwerer ist es natürlich, aber mit der guten Mathematik ist doch alles möglich :)

Bernhard Geyer 29. Jun 2005 18:27

Re: runde Schaltflächen
 
Darf auch ein paar € kosten? Dann probier mal das ElPack mit aktivierter eigener Theming-Engine aus. Du kannst die von XP definierten Themes-DLL auch unter Win98-2003 verwenden unabhängig von aktivierten XP-Theme. Und dort gibt es auch gerundete Buttons.

Marvel 29. Jun 2005 18:40

Re: runde Schaltflächen
 
kann man da nich irgendwie ne Fläche machen und dann irgendwie "if Point(X,Y) in Fläche" abfragen? Enttäuscht mich...

naja... nee, soll nix kosten.

Zettuu 29. Jun 2005 19:08

Re: runde Schaltflächen
 
Wenn Du mit ner Transparenzfarbe arbeitest, dann check doch einfach ab, ob der Click auf der Transparenzfarbe ausgeführt wurde.

Marvel 29. Jun 2005 19:49

Re: runde Schaltflächen
 
Hey.... das is clever


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz