Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi animierter Rahmen,unabhängig welche Komponente drunter liegt (https://www.delphipraxis.net/142051-animierter-rahmen-unabhaengig-welche-komponente-drunter-liegt.html)

PhilCore 21. Okt 2009 08:49


animierter Rahmen,unabhängig welche Komponente drunter liegt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin aus den hohen Norden,

ich habe hier gerade ein kleines Problem.
Ich will eine Unit bauen, die ein animierten Rahmen auf eine Komponente zeichnet (wie Excel -> Zelle kopieren).

Nun habe ich ein kleines Projekt gebaut und komme nicht weiter, denn ich habe zwei Wege ausprobiert.
1.) direkt auf die Form zeichnen (mit MouseDown, ..move, ..Up, Timer), dazu neben dem Panel ein Rechteck aufziehen
2.) Klasse (AnimatedBorder) auf Knopfdruck erstellen und dem Panel geben.

1.) geht (rahmen läuft animiert durch)
2.) geht nur halb (blinkt abwechselnd gestrichelt und durchgezogen)

Vielleicht hat einer eine Idee von Euch.
Anbei das Beispiel.

uligerhardt 21. Okt 2009 09:45

Re: animierter Rahmen,unabhängig welche Komponente drunter l
 
Zitat:

Zitat von PhilCore
Vielleicht hat einer eine Idee von Euch.

Was ist denn dein Problem? Variante 1 funktioniert doch halbwegs? (Nicht mehr, nachdem ein Neuzeichnen nötig wird.)

PhilCore 21. Okt 2009 10:36

Re: animierter Rahmen,unabhängig welche Komponente drunter l
 
Mein Problem ist die Struktur, in der ich die Unit AnimatedBorder einsetzen will.
Ich brauche eine Komponente, die bei uns immer dynamisch erzeugt werden.

Wie ich schon sagte, die erste Variante (auf der Form) geht, ist aber für unseren Zweck nicht einsetzbar.
D.h. ich brauche die zweite Variante (in der Unit).

Kurze Erklärung hinterdran:
Wir haben hier in unserem Produkt eine recht komplizierte Graphische Komponente, die diesen Border aufnehmen soll....
und das einfachste wäre halt eine Komponente, die sich einfach bauen läßt, man den Parent setzt und den externen Timer zuweißt.

uligerhardt 21. Okt 2009 11:00

Re: animierter Rahmen,unabhängig welche Komponente drunter l
 
Das Ding heißt Marching Ants. Vielleicht hilft dir das etwas.

Zu deinem Code: Warum setzt du den den Timer von außen (siehe SetTimer)? Wäre doch günstiger, ihn innerhalb von TAnimatedBorder zu Create'n und Free'en.

himitsu 21. Okt 2009 12:43

Re: animierter Rahmen,unabhängig welche Komponente drunter l
 
Man kann im Prinzip auch TTimer direkt in die Komponente einbauen

TTimer.Create und dann damit arbeiten

PhilCore 21. Okt 2009 14:15

Re: animierter Rahmen,unabhängig welche Komponente drunter l
 
Der Timer wird von außen gesetzt, da wir einen Singleton für TimerObjekte haben und man sich dort mit einem TimerObject registrieren kann.
Unteranderem mit unterschiedlichen Zeiten, Events, Zeiteinheiten und so weiter und sofort.

Vielen Dank für den Hinweis mit den Marching Ants, da sieht die Suche im www gleich anders aus.

uligerhardt 21. Okt 2009 14:28

Re: animierter Rahmen,unabhängig welche Komponente drunter l
 
Zitat:

Zitat von PhilCore
Der Timer wird von außen gesetzt, da wir einen Singleton für TimerObjekte haben und man sich dort mit einem TimerObject registrieren kann.
Unteranderem mit unterschiedlichen Zeiten, Events, Zeiteinheiten und so weiter und sofort.

Aber SetTimer "hijackt" den Timer doch sowieso und macht ihn für andere Zwecke unbrauchbar, oder?

Zitat:

Zitat von PhilCore
Vielen Dank für den Hinweis mit den Marching Ants, da sieht die Suche im www gleich anders aus.

Die richtigen Suchbegriffe zu finden ist nicht immer leicht. :)

PhilCore 22. Okt 2009 07:24

Re: animierter Rahmen,unabhängig welche Komponente drunter l
 
Nochmal zu dem Timer. Wir haben quasi einen Timermanagement an das man einen neuen Timer registrieren kann. Dieser Timer wird verwaltet und auch nur für einen Zweck.
D.h.
Zitat:

Zitat von uligerhardt
Aber SetTimer "hijackt" den Timer doch sowieso und macht ihn für andere Zwecke unbrauchbar, oder?

egal, der Timer ist sowieso nur für diesen Zweck gedacht und wenn er nicht mehr gebraucht wird, wech damit.

Zitat:

Zitat von uligerhardt
Die richtigen Suchbegriffe zu finden ist nicht immer leicht.

Oh, ja und das war mein Problem, welches zu vollsten Zufriedenheit gelöst ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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