Autor Beitrag
Slipstream
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 06:49 
Guten Morgen,

auf Anforderung eines Kunden suche ich eine Möglichkeit, Buttons folgendermassen darzustellen:

1. Der Button muss Transparenz unterstützen.
2. Der Button muss PNG unterstützen.
3. Der Button muss auf HotTrack mit einer Anzeige-Änderung reagieren (wenn die Maus darüberfährt)
4. Der Button muss auf Klick mit einer Anzeige-Änderung reagieren.

Ich habe jetzt allerlei ausprobiert, aber mit den Bordmitteln von Delphi XE7 komme ich nicht weiter:

Derzeit werden die Buttons mit der Jedi-Komponente TjvTransparantButton dargestellt. Das sichert die korrekte Darstellung der Glyphs, die aus abgerundeten Quadraten bestehen. Leider bietet diese Button-Komponente keine HotTrack-Funktionalität oder nur, wenn es um die Anzeige von Text im Button geht. Da hier aber kein Text (Caption) angezeigt wird, sondern nur die Grafik, nützt mir das nichts.

Hat irgend jemand eine Idee, wie ich dieses Problem lösen soll? Der Kunde besteht auf solchen "Kleinigkeiten" und darauf, die einzelnen Buttons selber zu zeichnen (was er natürlich nicht wirklich beherrscht, ich muß die Buttons dann in Dreierfolgen nochmal selber anordnen, zudem füllen die Buttons nicht immer den ganzen Bereich aus, mal rechts-, mal linksbündig angeordnet, mal unten zwei Pixel Abstand, mal nur eines, und das Ganze dann noch mit verschiedenen Auflösungen, 72 dpi und 96 dpi. Aber das ist wieder ein anderes Thema ...
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 07:18 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Slipstream
Slipstream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 07:23 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Guten Morgen Slipstream,

als Basis würde ich zum TButtonControl oder zum TGraphicControl tendieren. Letzteres benötigt nachträglich Klick- und Mausereignisse.


Vielen Dank für deinen Hinweis. Die Stunden, bis ich eine solche Komponente selbst entwickelt habe, würde der Kunde wohl kaum berappen wollen. Daher suche ich nach einer entsprechenden Komponente, am besten kostenlos, die zur Not aber auch was kosten darf. Wir stehen hier ein wenig unter Zeitdruck und müssen daher auf was Fertiges zurückgreifen.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 07:30 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Slipstream
Slipstream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 07:33 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Da suchst du die Nadel im Heuhaufen, wenn du mich fragst. Es wäre sinnvoller, die Restzeit in die Entwicklung der Komponente zu stecken.


Ich mache die Regeln, nach denen ich arbeiten muss, nicht selber. Wie ich oben schon geschrieben habe, suchen wir nach einer Komponente, die diese Dinge beherrscht. Soeben teste ich TMS-Buttons, mal schauen, ob da was dabei ist. Wenn aber jemand schon so eine Komponente im Einsatz hat, dann wäre es nett, mir einen entsprechenden Link zu schenken.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 07:41 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Slipstream
Slipstream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 07:53 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Welche Anforderungen erfüllt die TjvTransparantButton nicht, und was genau soll beim HotTracking passieren ? Wann soll es ausgelöst werden ... ?


TjvTransparantButton erfüllt alle Anforderungen ausser der, dass er nicht darauf reagiert, wenn der Mauszeiger darüberfährt. Die Anforderung des Kunden: "... dass wenn man mit der Maus über die Buttons geht, sich ein wenig der Hintergrund ändert ..."
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 08:00 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Slipstream
Slipstream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 08:16 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Welcher Hintergrund soll sich ändern und zu was soll er sich ändern?


Es gibt hierzu keine weiteren Informationen. Der Kunde weiss vermutlich nicht genau, wovon er redet, er will einfach, dass sich irgendwas ändert, wenn die Maus drüberfährt, ein zusätzlicher Rahmen, ein anderes Bild ... mehr ist dem Kunden dazu nicht zu entlocken.

Ich probiers jetzt mal anders, denn wie ich eben entdeckt habe, kann ich auch mit einer ImageList arbeiten. Dort kann ich dann im Property Images die Sub-Properties ActiveImage, DisabledImage, DownImage und HotImage belegen. Das funktioniert, so lange der Button nicht disabled wurde. Ich hoffe jetzt nur, dass der Kunde nicht darauf besteht, dass auch disabled Buttons auf "wenn die Maus drüberfährt" reagieren sollen :roll:

Habe Problem soeben als gelöst markiert, ich denke, so wird es gehen.

Hab vielen Dank für deine Hilfestellung. Manchmal scheint es zu helfen, wenn man einfach mal mit jemandem darüber spricht. :D
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 08:36 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Slipstream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 08:50 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Gerne doch. :D Einzig die .Images.ActiveImage Eigenschaft funktioniert richtig. In den anderen ImageLists tut sich garnichts. Eine schöne Komponente ist mir das.


Also bei mir funktionierts jetzt richtig. Man muss allerdings die Glyphs, falls man sie zvor bereits zugewiesen hat, wieder entfernen, sonst gilt die Glyph-Bitmap. Hab nämlich auch erst gedacht, es funktioniert nicht, aber sobald das Property Glyph leer ist, reagiert der Button auf "Mausdrüberfahren".
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.06.17 08:51 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Slipstream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 08:53 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Gut zu wissen, danke!


Gerne :)

Ob die Wahl der Imagelist eine Rolle spielt, weiss ich nicht, aber ich habs mit der TjvImageList gemacht, weil der Button ja auch von den Jedis ist.
Slipstream Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26
Erhaltene Danke: 5



BeitragVerfasst: Do 22.06.17 13:47 
Nachtrag:

Man muss nicht mehrere Imagelisten verwenden, wenn die Grafiken stets gleich gross sind, sondern einfach nur den jeweiligen Index angeben. Habe hier für 10 Buttons dieselbe Imagelist in Gebrauch, mit je vier Grafiken pro Button. Allerdings muss man schon ziemlich aufpassen, die Grafiken immer in der richtigen Reihenfolge einzulesen und den richtigen Index zu "erwischen". Das Dialog-Modul der TvjImageList fügt nämlich eine Grafik stets hinter die aktuell markierte Grafik ein. Man muss daher beim Beginn einer Grafik-Einlese-Sitzung immer erst die letzte Grafik anklicken, sonst wird die Grafik irgendwo mittendrin eingefügt und nicht ans Ende der Liste angehängt. Und am Ende muss man entweter "übernehmen" klicken oder OK, sonst werden die Änderungen nicht übernommen.

Nicht zu vergessen: Bevor man mit dem Einlesen beginnt, muss man die Grösse der Grafiken festlegen (Width und Height) und sollte auch die Transparentfarbe auswählen.