Entwickler-Ecke

Sonstiges (Delphi) - Auf Bilder statt Buttons klicken


leviathan - Mi 08.01.03 01:22
Titel: Auf Bilder statt Buttons klicken
Hallo zusammen,

vorweg: ich programmiere seit rund 4 Stunden Delphi und bin daher blutiger Anfänger (habe allerdings einige Jahre Turbo Pascal 5.5-Erfahrung). Ich bitte also um Nachsicht :? .

Beim Rumprobieren mit Buttons, Menus und Bitmaps bin ich auf eine Idee gekommen, von der ich leider noch nicht weiss, wie ich sie realisieren kann: Ich habe ein Foto meines Arbeitszimmers als Hintergrundbild für mein Formular ausgewählt. Ich möchte nun auf Teile des Bildes (und nicht auf klobige Standard-Buttons!) klicken und damit Aktionen auslösen. Wie schaffe ich das?

Meine Idee war, Buttons über Teile des Bildes zu ziehen (z.B. über CD-Player --> Abspielen eines Waves o.ähnl.) und diese einfach unsichtbar zu machen. Wenn ich die button-eigenschaft "visible" allerdings auf "false" stelle, ist der button nicht nur unsichtbar, sondern weg und funktionsunfähig.

Wer hat eine Idee? Vielen Dank und besten Gruß,

der Leviathan


Anonymous - Mi 08.01.03 01:42
Titel: Re: Auf Bilder statt Buttons klicken
Verschiedene Möglichkeiten hast Du z.B.:

1) Label, AutoSize := false, Transparent := True, kein Text und in OnClick etwas ausführen.
2) Auf ImageClick reagieren und die Mauskoordinaten auswerten.
3) ...

In allen Fällen wäre es sinnvoll, das Programm unter anderen Auflösungen und Schriftarten (Windows-Einstellungen) zu testen.

Gruß Tom


Anonymous - Mi 08.01.03 01:53

Das mit den Buttons wird nicht funktionieren. Was not Visible ist, das kann auch nicht angeklickt werden. Das beste wäre mit Regionen zu arbeiten. Da könntest du auch nicht rechteckigen Bereichen arbeiten. Das ist aber nichts was Delphi mitliefert, sondern Windows API.

Das beste und einfachste für einen Delphianfänger wäre ein transparentes TImage. Dazu nimst du ein kleines einfarbiges Bild und schaltest das Image transparent und stretch. Dann ziehst du das Image so wie du es brauchst.


leviathan - Mi 08.01.03 18:23

Hallo!

Vielen Dank für die Lösungsvorschläge, die ich erfolgreich umgesetzt habe. Mit meinem Bild habe ich aber gleich ein neues Problem: Es "überdeckt" eines meiner Labels. Kann man für images, labels etc. (ähnlich wie in einem Grafikprogramm) verschiedene Layer definieren? Oder zumindest einen Schalter wie "immer im Vordergrund"?

Besten Gruß,
Levi


Ex0rzist - Mi 08.01.03 23:08

Du kannst einen Rechtsklick auf das Element machen, was verdeckt wird und auf "Nach vorn setzen" (o.ä.) klicken. Genausogut kannst du die anderen auch nach hinten setzen.