AGB  ·  Datenschutz  ·  Impressum  







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

Auf mehrere Labels zugreifen

Ein Thema von F.W. · begonnen am 31. Aug 2003 · letzter Beitrag vom 2. Sep 2003
Antwort Antwort
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

Auf mehrere Labels zugreifen

  Alt 31. Aug 2003, 13:52
1. Sorry, aber ein anderer Titel ist mir nicht eingefallen.
2.Mein Problem:
Es handelt sich um Galgenraten.
Es wird aus verschiedenen Strings einer ausgesucht(über Random). Soviele Buchstaben, wie das Wort hat, soviele Labels werden erstellt und bekommen als Caption einen Unterstrich. Der Hint wird mit dem an der Stelle stehenden Buchstaben versehen.(Ich mache das ganze über eine Schleifenvariable I: Integer)
Der Name der Labels heißt dann 'L'+IntToStr(I)
Wenn nun eine Buchstabentaste gedrückt wird, sollen alle Labels mit dem Hint, der dem Buchstaben entspricht ihre Captions mit dem Hint eintauschen(wenn der Buchstabe im Wort ist, werden alle gleichen Buchstaben "aufgedeckt").
Ich habe das so programmiert:
TLabel('L'+IntToStr(I)).Caption := TLabel('L'+IntToStr(I)).Hint; Aber da kommt immer eine Fehlermeldung:
"Format %p ungültig oder nicht kompatibel mit Argument"

Wie kann ich das anders machen?

Danke schon mal!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Auf mehrere Labels zugreifen

  Alt 31. Aug 2003, 13:57
Moin F.W.,

schau Dir dazu am Besten mal FindComponent an.
Zum einen in der Hilfe, zum anderen auch hier (Hier im Forum suchenFindcomponent))
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#3

Re: Auf mehrere Labels zugreifen

  Alt 31. Aug 2003, 13:57
Hallo!

Was Du brauchst ist die Funktion FindComponent. Die wird dann so benutzt:

Delphi-Quellcode:
VAR myObject : TObject;
begin
  myObject:=FindComponent('L'+IntToStr(i));
  if myObject is TLabel then
  TLabel(myObject).Caption := TLabel(myObject).Hint;
end;
Das myObject brauchst Du nicht unbedingt, aber ich wollte nicht dreimal FindComponent aufrufen.

MfG
Peter

//edit: zu langsam!
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Auf mehrere Labels zugreifen

  Alt 31. Aug 2003, 13:59
Hier findet du ein Demo zu FindComponent:
http://www.luckie-online.de/files/demos/

Und als Dreingabe der Anhang. (Ohne Hint und schon alt.)
Angehängte Dateien
Dateityp: zip galgenm_nnchen.zip (2,1 KB, 14x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#5

Re: Auf mehrere Labels zugreifen

  Alt 31. Aug 2003, 19:40
Ich habs ausprobiert und es geht, aber nicht bei meinen Labels, die ich im laufenden Betrieb erzeugt habe, da passiert nichts.
Delphi-Quellcode:
var
  PosI, I: Integer;
  L: TLabel;
begin
  PosI := 20;
 for I := 1 to Length(RateS) do begin
  L := TLabel.Create(Panel1);
  L.Name := 'L'+IntToStr(I);
  L.Caption := '_';
  L.Hint := UpCase(Char(RateS[I]));
  L.Parent := Panel1;
  L.ShowHint := True;
  L.Top := 20;
  L.Left := PosI;
  L.Font := Label3.Font;
  PosI := PosI+30;
 end;
end;
So erzeuge ich die Labels, beim Klick auf START. Kann es sein, dass da was mit dem Namen nicht stimmt, z.B. das der nicht in die "Liste" der Objekte, die FindComponent durchsucht reingenommen wird?
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#6

Re: Auf mehrere Labels zugreifen

  Alt 31. Aug 2003, 20:01
Hallo!

Da die Labels zum Panel1 gehören, musst Du auch das zum Panel1 gehörige FindComponent aufrufen, also Panel1.FindComponent.

MfG
Peter
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#7

Re: Auf mehrere Labels zugreifen

  Alt 1. Sep 2003, 18:39
Danke! Hat super geklappt!

Eine neue Frage hätte ich noch: Kann man bei Random() auch einen Bereich VON bis eingeben, also das nicht mit 0 sondern mit 123 angefangen wird?

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Auf mehrere Labels zugreifen

  Alt 1. Sep 2003, 18:45
Klar geht das:

random(100)+50; gibt z.B. die Zahlen von 50-150 aus.

oder:

random(300)+123; gibt die Zahlen von 123-423 aus.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#9

Re: Auf mehrere Labels zugreifen

  Alt 2. Sep 2003, 20:00
Garnicht mal so leicht, danke!!

Danke!
Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:10 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