AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynmaische Label finden

Ein Thema von TheMiller · begonnen am 10. Jul 2005 · letzter Beitrag vom 11. Jul 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Dynmaische Label finden

  Alt 10. Jul 2005, 22:34
Hallo,

erstelle mit folgendem Code dynamische Label, da ich aus einem Wort jeden einzelnen Buchstaben als Label haben möchte:

Delphi-Quellcode:
var
  i,j:integer;
begin
  Label4.Visible:=False;
  Wort:=sl.Strings[random(sl.Count)];
  Label4.Caption:=Wort;
  j:=176;
  for i:=1 to Label4.GetTextLen do
  begin
    Buchstabe:=TLabel.Create(nil);
    Buchstabe.Parent:=Form1;
    Buchstabe.Caption:=Copy(wort,i,1);
    Buchstabe.Left:=j+20;
    Buchstabe.Top:=176;
    j:=Buchstabe.Left;
  end;
end;
Wie kann ich jetzt zum Bleistift alle Labels von "Buchstabe" löschen, oder auf einzelne zugreifen?

Danke im Voraus
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Dynmaische Label finden

  Alt 10. Jul 2005, 22:40
hi,

so geht das:

Delphi-Quellcode:
//i als laufvariable deklarieren (integer)
for i := 0 to form1.ComponentCount - 1 do
begin
  if form1.Components[i].ClassType = TLabel then
  begin
    //hier kannst du mit "form1.Components[i]" arbieten.
    //ggf. typecast durchführen
  end;
end;
aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Dynmaische Label finden

  Alt 10. Jul 2005, 22:47
Oh,

danke. Werd es mal testen.
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Dynmaische Label finden

  Alt 10. Jul 2005, 22:48
Naja,

ich habe hier aber nicht nur dynamische Labels, sondern auch 4 statische Labels... stehe ich auf dem Schlauch?
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Dynmaische Label finden

  Alt 10. Jul 2005, 22:51
Dann benamse die dynamischen Labels so, daß du sie später erkennst.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Dynmaische Label finden

  Alt 10. Jul 2005, 23:02
Oder tu sie dir in ein Array of TLabel im private Teil des Forms
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Dynmaische Label finden

  Alt 10. Jul 2005, 23:31
Zitat von jfheins:
Oder tu sie dir in ein Array of TLabel im private Teil des Forms
Entweder das, oder eine Ableitung von TLabel nehmen.
Ein konstanter Array wäre aber sicher schneller, da man nur die elevanten Controls durchlaufen muss.
"Einfacher" wäre aber die Ableitung (vor allem da du sie eh dynamisch erzeugst):
Delphi-Quellcode:
TMyLabel = class(TLabel)
end;
Delphi-Quellcode:
  for i := 0 to ControlCount - 1 do
    if Coltrols[i] is TMyLabel then
      with TMyLabel(Controls[i]) do
        ...
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Dynmaische Label finden

  Alt 11. Jul 2005, 00:00
So,

habe jetzt diesen Code:

Delphi-Quellcode:
procedure TForm1.Button31Click(Sender: TObject);
var
  i:integer;
begin
  for i := 0 to form1.ComponentCount - 1 do
  begin
    if form1.Components[i].ClassType = TLabel then
    begin
      if Form1.Components[i].Name = 'Label1then
      ShowMessage('JA');
    end;
  end;
end;
Label1 findet er. Doch die auch nachweisbar erstellte TLabel Komponente mit dem Namen Dyn1 findet er nicht, wenn ich diesen Code benutze. Warum?!?

Delphi-Quellcode:
procedure TForm1.Button31Click(Sender: TObject);
var
  i:integer;
begin
  for i := 0 to form1.ComponentCount - 1 do
  begin
    if form1.Components[i].ClassType = TLabel then
    begin
      if Form1.Components[i].Name = 'Dyn1then
      ShowMessage('JA');
    end;
  end;
end;
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Dynmaische Label finden

  Alt 11. Jul 2005, 00:14
Vielleicht ist das falsch:Dyn1:=TLabel.Create(nil) und sollte so aussehen:Dyn1:=TLabel.Create(self{form1})
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Dynmaische Label finden

  Alt 11. Jul 2005, 00:14
Zitat von DJ-SPM:
habe jetzt diesen Code:if form1.Components[i].ClassType = TLabel then
Autsch...
form1 ist eine globale Variable! Was hat die denn da zu suchen? Bitte mal hier nach "Prost Mahlzeit! " suchen...
Außerdem ist die Prüfung auf eine Klasse der is-Operator.
Richtig wäre also:if Components[i] is TLabel then Label1 findet er. Doch die auch nachweisbar erstellte TLabel Komponente mit dem Namen Dyn1 findet er nicht, wenn ich diesen Code benutze. Warum?!? Warum sollte man überhaupt nach einem Control per Namen suchen?
Aber egal.... Hast du ihm auch wirklich einen Namen gegeben?Control.Name := 'Dyn1';
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 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