Text in Panel automatisch verschieben

Hallo!

Weiß einer von euch zufällig, wie ich in einem Panel(oder Label) eine Eintragung darin (Panel1.Caption := {Eintragung}:wink: automatisch verschieben kann, d.h. eine Funktion einbauen kann, wie sie auch bei WinAmp für den aktuellen Titel/Track vorhanden ist???

Dank im Vorraus!

Gruss
DelphiUser7

Hallo DelphiUser7!

Hab mich mal vor einiger Zeit damit beschäftigt…
Am einfachsten ists, du legst vorne und hinten eine Komponente drüber, die das Label verdeckt… und dann verscheibst du es mit nem timer nach hinten und vorne… müsstest halt abfangen, wie lang es ist (stichwort canvas) damit es dir nicht wegläuft :wink:

Es geht natürlich auch mit textänderungen… Dann musst du aber, damit es einfach bleibt, eine nicht proportionale schrift nehemen (z.B. courir) und, damit es flüssig läuft immer einige pixel vor und zurücklaufen lassen…
Nimmst du eine proportionale scrift (z.B. arial) musst du jeden einzelnen buchstaben ausmessen (wieder canvas) und berechnen, wie weit es hin und hergeschoben werden muss…

Gruss
Florian

Hallo Florian!
Ich nehme an, mit den Komponenten, die ich hinten und vorne drüberlegen soll, sind Labels/Panels gemeint. Außerdem glaube ich nicht, dass ich durch Verdeckung des Labels/Panels vorne und hinten das Gewünschte Erzielen kann, da ja diese auch jede eine eigene Caption haben…;
Ausserdem habe ich auf delphipraxis.net auch mal nachgefragt, und die Antwort bekommen: Im Objektinspektor, Eigenschaft Autosize;
aber ich werde es mal versuchen;

Gruss
DelphiUser7

Hallo DelphiUser7!

Autosize heisst nur, dass das Teil grösser wird, wenn der text länger wird…

Mit Komponenten meinte ich shapes in der passenden Farbe, sodass man sie nicht vom hintergrund unterscheiden kann…

Florian

Hallo Florian!

Shapes?? Wo finde ich die??

Gruss
DelphiUser7

Hallo Florian!

Die Shapes habe ich gefunden, und platziert, aber eine TCanvas-Komponente gibt es bei mir nicht. Liegt es an der Edition (Delphi 7 PE)?

Gruss
DelphiUser7

Hallo DelphiUser7!

Gibt’s die 7er auch als kostenlose PE? Wusste ich garnicht ,-)
Muss ich gleich mal nachgucken…

Canvas ist keine komponente, mit canvas kannst du die breite eines Labels usw feststellen… form1.canvas…

Florian

Hallo Florian!
Nein, die hab ich mir gekauft (160€);
Gruss
DelphiUser7

Hallo Florian!

Canvas vom Panel (Panel1.Canvas oder Shape1/Shape2.Canvas?
Gruss
DelphiUser7

Hallo DelphiUser7!

Schade, die 6 PE konnte man sich kostenlos bei borland herunterladen…

Florian

Hallo DelphiUser7!

Schau mal hier: http://www.delphi-treff.de/content/edhonline/index.p…

Florian

Hallo Florian!

Dein letzter Link sah ja ganz so aus, als würdest du mir von der ‚Canvas‘-Methode abraten; ehrlich gesagt, ich habe keinen blassen Schimmer, wie ich das mit Canvas realisieren soll;

Gruss
DelphiUser7

Hallo DelphiUser7!

Neee, abraten wollte ich dir davon nicht, nur ist halt ungeführ 100x soviel arbeit wie komplettes verschieben…

Florian

Hallo Florian!
Was jetzt, die 1. Methode mit den Shapes, oder die 3. mit der proportionalen Schriftart?
So wie ich das sehe muss ich allerdings auch bei der nichtproportionalen Schriftart, eine TTimer-Komponente verwenden.

DelphiUser7

Hallo DelphiUser7!

Mach einfach ein label mit dem Text. leg vorne ein shape hin und hinten. und jetzt verschieb das label so weit nach links, bis das ende am shape2-anfang angekommen ist…
und jetzt scheibst du so lange nach rechts, bis der anfang am shape1-ende ist :wink:

Florian

Hallo Florian!
Das mit den Shapes hab ich jetzt hingekriegt, aber wie kann ich den Text nun genau mit Canvas bestimmen, zumal es sich ja immer noch um meinen Mediaplayer dreht, und dabei natürlich mehrere Dateien, und nicht immer nur dieselbe im Label-Feld stehen sollen;

DelphiUser7

label1.width owt
Florian

Hallo Florian!

Was sollte denn die Überschrift deines letzten Beitrags bedeuten?? => label1.width owt;

DelphiUser7

Hallo!

label1.width ist die lösung deines problems… damit stellst du fest, wie breit dein label ist.

owt heisst OhneWeiterenText --> du brauchst den Artikel nicht zu öffnen, weil eh nix drinne steht

Florian

Hallo Florian!

Eine Frage hab ich noch: Wie stell ich denn genau fest, wie breit mein Label ist, ich meine, das kann ich doch auch nachgucken, indem ich während der Entwurfszeit auf den Label klicke, und den Kursor ein bisschen drauf liegen lasse; dann wird ja auch die Breite des Label-Feldes angezeigt, klar, dass ich diese noch irgendwie einlesen muss, aber wozu brauche ich die?
Entschuldigung, dass ich dich jetzt so mit Fragen überhäufe, aber ich programmiere noch nicht sehr lange Delphi, und Delphi ist meine erste Progg-Sprache;

DelphiUser7