Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Label erzeugen (https://www.delphipraxis.net/113831-label-erzeugen.html)

punker-lili 15. Mai 2008 11:23


Label erzeugen
 
Hi Leute!

Ich arbeite gerade an einem Programm zurDarstellung von Noten. Für die Darstellung benötigt man natürlich auch Vorzeichen (Kreuz). Das habe ich mirals Schriftart besorgt und möchte es übers Label anzeigen. Leider weiß ich in vornherein nicht, wie viele LAbels ich brauche. Daher ist meine Frage; Wie kann ich Labels dynamisch erzeugen?
wenn das nicht geht, würde es mir reichen, wenn es möglich wäre ein vorhanenes LAbel zu kopieren und an einerbestimmten Stelle wieder einzugügen.
Oder habt ihr vielleicht eine andere Idee, um Vorzeichen darzustellen?

Mit freundlichen Grüßen
Anna

Daniel 15. Mai 2008 11:29

Re: Label erzeugen
 
Moin,

das geht schon dynamisch - ein Label ist am Ende auch nur ein Objekt:

Delphi-Quellcode:
///
///  Angenommen, Dein Label soll auf Form1 (könnte auch Panel1 oder sonst ein Container sein) sitzen:
var myLabel : TLabel;
begin
  myLabel:= TLabel.Create( Form1 );
  myLabel.Parent:= Form1;
  myLabel.Left:= 10;
  myLabel.Top:= 50;
  myLabel.Caption:= 'Hallöle';
  // usw...
end;
Das kann man dann noch in ein Schleifchen packen und dann (mehr oder weniger) beliebig viele Labels erzeugen.

_frank_ 15. Mai 2008 11:31

Re: Label erzeugen
 
wie machst du denn die noten?
ich denke mal, es wäre sinnvoller das ganze zu malen (TCanvas), statt alles mit labels auszurichten.

aber zu der egentlichen Frage, du kannst natürlich labels dynamisch erzeugen:

Delphi-Quellcode:
//in einer form-methode:
label:=TLabel.create(self);//hier wäre self das form und es kümmert sich ums spätere freigeben
label.parent:=self;//das label soll auch auf dem form auftauchen
label.left:=10;
label.top:=10;
label.caption:='Test';
ansonsten kannst du zur designtime auch labels kopieren per markieren,strg+c,strg+v.zur laufzeit erzeugst du ein neues Label (s.o.) und kopierst die Einstellungen in die neue instanz (assign).

HTH Frank

Nuclear-Ping 15. Mai 2008 11:53

Re: Label erzeugen
 
Warum nimmst du nicht für jeden Buchstaben ein eigenes Label?

Ziemlich sinnfrei oder?

Warum willst du dann für solche Sonderfälle Labels nehmen?

Wie schon vorgeschlagen: Mach dir ne Paintbox und schreib das per Canvas.TextOut drauf.

punker-lili 16. Mai 2008 09:08

Re: Label erzeugen
 
na die noten zeichne ich.. aber die Vorzeichen zu zeichnen wäre ein versuch wert.. es war halt meine erste idee die i ein label zu stecken.
ich brauch soviele labels, da die noten verschieden positioniert sind (schon einmal eine naotenpartitur angeguckt?!) und ich erst beim einlesen der Werte weiß, wo ein Vorzeichen hin muss... Daher dachte ich, das es mit Labels recht praktisch geht, denn da habe ich ein Rechteck, was ich präzise positionieren kann.
Also danke Leute für eure Hilfe!

MfG Anna

Matze 16. Mai 2008 09:12

Re: Label erzeugen
 
Das kann aber ungeheuer langsam werden, wenn du da hunderte Labels nutzt. Ich würde es auch intern in ein TBitmap zeichnen und dieses dann ausgeben. Dort kannst du auch pixelgenau Text positionieren und hast nebenbei den Vorteil, dass du das relativ leicht auch ausdrucken lassen oder als Grafik abspeichern kannst.

Nuclear-Ping 16. Mai 2008 09:15

Re: Label erzeugen
 
Zitat:

Zitat von punker-lili
ich brauch soviele labels, da die noten verschieden positioniert sind (schon einmal eine naotenpartitur angeguckt?!)

Wie wärs mit einem Bild zur Veranschaulichung?

Da ich denke, dass du mit Vorzeichen "+" und "-" meinst, kannst du auch in einem Canvas (TBitmap) mit Rechtecken arbeiten (MSDN-Library durchsuchenDrawText).

punker-lili 16. Mai 2008 09:19

Re: Label erzeugen
 
Liste der Anhänge anzeigen (Anzahl: 1)
ähm wir reden gerade von unterschiedlichen vorzeichen.. ich meine gerade die musikalischen Noten und deren Vorzeichen (Kreuz bzw b), wie folgendes Bild z.b. zeigt (in Anhang verschoben):

Bisjetzt hab ich die Notenlinien und die Noten selbst gezeichnet. Daher fehlen mir noch die Vorzeichen.
Es tut mir leid, wenn ihrs etwas anders verstanden habt.. Sorry... :oops:

MfG Anna

[edit=SirThornberry]Bild in Anhang gepackt - Mfg, SirThornberry[/edit]

FAlter 16. Mai 2008 09:22

Re: Label erzeugen
 
Hi,

Zitat:

Zitat von Nuclear-Ping
Da ich denke, dass du mit Vorzeichen "+" und "-" meinst,

Nein, # und b (eigentlich sieht das noch etwas anders aus, geht hier aber nicht besser), dann gibt es noch spezuielle Vorzeichen für Vierteltöne und Doppelvorzeichen (x und bb). Hat nichts mit mathematischen Vorzeichen zu tun, außer, dass es vor der Note steht und das andere vor der Zahl. :)

[edit] Und natürlich noch das Auflösungszeichen. [/edit]

Mfg
FAlter

Nuclear-Ping 16. Mai 2008 09:24

Re: Label erzeugen
 
Ja, ich dachte Schulnoten ... :mrgreen:

Wenn du so eine Noten-Font hast, dann nimm ein TImage / TBitmap (musst du erst erstellen, einem TImage / TPaintBox zuweisen, ...) und richte den Canvas (Canvas.Font.Name) so ein und zeichne per DrawText die Noten entsprechend.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr.

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