AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi viele ähnliche Befehle zusammenfassen
Thema durchsuchen
Ansicht
Themen-Optionen

viele ähnliche Befehle zusammenfassen

Ein Thema von cRayZo · begonnen am 2. Nov 2007 · letzter Beitrag vom 3. Nov 2007
Antwort Antwort
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#1

viele ähnliche Befehle zusammenfassen

  Alt 2. Nov 2007, 20:59
nicht unbedingt wie ihr jetzt denkt
for to und all das kenn ich, nur ich hab ein anderes Problem.

Wenn ich sagen wir mal Label01.Caption, label02.Caption,...,Label20.Caption habe, wie kann ich in einer schleife bestimmen dass sich ein Teil des Namens der Bezeichnung ändert, um nicht immer hintereinander irgendwelche ähnlichen Labeldefinitionen schreiben zu müssen.
Iwie so vll
Delphi-Quellcode:
for x:=1 to 20 do begin
(label+'x').Caption:='Hallo'+inttostr(x);
end;
aber das klappt nicht, wär ja auch zu einfach dann^^
wie geht das richtig? lg cRayZo
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: viele ähnliche Befehle zusammenfassen

  Alt 2. Nov 2007, 21:03
Findcomponent ist dein Freund.
Aber wäre es vielleicht nicht besser (je nach deinem Konzept) alles in eine array oder, noch besser, in eine TobjectList zu packen?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: viele ähnliche Befehle zusammenfassen

  Alt 2. Nov 2007, 23:56
Hi,

eine weitere Möglichkeit ist es, die Liste Components des Owner nach den Labels zu durchsuchen. Das macht natürlich nur Sinn, wenn du alle Labels oder einen mathematisch eingrenzbaren Bereich bearbeiten möchtest.

In meinem Bsp. soll der Owner ein Panel (Panel1) sein.
Delphi-Quellcode:
  For Counter := 0 to Panel1.ComponentCount - 1 do
    IF Panel1.Components[Counter] is TLable then
      (Panel1.Components[Counter] as TLable).Caption := 'Hallo';
Du kannst natürlich auch auf den Componentennamen mittels (Panel1.Components[Counter] as TLable).Name als String zugreifen und für die Bearbeitung die entsprechenden Labels "filtern".

Sirius Methode läuft sozusagen anders herum. Du bildest wie in deinem Beispiel einen Namen und übergibst diesen FindComponent. Wird das passende Label gefunden, so liefert FindComponent dieses zurück. Damit kannst du dann auch auf die Caption zugreifen.

Delphi-Quellcode:
var Lable : TLable;
    LableName : String;
...
  For Counter := 0 to 20 do begin
    LableName := Format('Lable%d', [Counter]);
    Lable := self.FindComponent(LableName);
    If Assigned(Lable) then
      Lable.Caption := 'Hallo';
  end;
Gruß oki
42
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: viele ähnliche Befehle zusammenfassen

  Alt 3. Nov 2007, 00:15
Hi oki,

ich hoffe doch mal, dass dein Lable ein schlimmer Tippfehler ist...
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: viele ähnliche Befehle zusammenfassen

  Alt 3. Nov 2007, 09:53
Upppps

Kann man das irgentwie löschen?

P.S. War doch Absicht! Wollte nur testen ob jemand aufpasst!

Gruß oki
42
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#6

Re: viele ähnliche Befehle zusammenfassen

  Alt 3. Nov 2007, 19:05
Zitat von oki (in Beitrag 3):
In meinem Bsp. soll der Owner ein Panel (Panel1) sein.
jo das Prinzip hab ich verstanden
wenn ich jetzt aber bei diesem Beispiel werden ja einfach alle Components mit Tlabel umbenannt.
Was ich ja ursprünglich wollte, ist, dass ich pro schleifendurchgang jeweils ein anderes Label anspreche, dessen caption ich verändern möchte. Die labels sind numerisch, mit dem Wort "Label" davor, sortiert.
Kann man das nicht genauso einfach machen, wie mit deiner Lösung?
Zitat von oki (in Beitrag 3):
Delphi-Quellcode:
For Counter := 0 to Panel1.ComponentCount - 1 do
    IF Panel1.Components[Counter] is TLable then
      (Panel1.Components[Counter] as TLable).Caption := 'Hallo';
halt einfacher, wär einfach zu schön, wenns so wie in meinem ersten Post ginge
lg cRayZo
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: viele ähnliche Befehle zusammenfassen

  Alt 3. Nov 2007, 21:27
Zitat von cRayZo:
halt einfacher, wär einfach zu schön, wenns so wie in meinem ersten Post ginge
Nee, das geht nicht. Weil Pascal ist je ne ordentliche Programmiersprache, wo solcher Hokuspokus nicht geht
Variablennamen werden zur Laufzeit nicht mitgenommen.

Die Varianten von oki und mir funktionieren nur, weil die Klasse TComponent (und alle Nachfahren) den Komponentennamen dann doch mitspeichert.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: viele ähnliche Befehle zusammenfassen

  Alt 3. Nov 2007, 21:46
Für soetwas würde ich die n Label in ein Array packen und dynamisch erzeugen, ober aber automatisch erzeugen lassen und dann in ein array schreiben (das kannst du dann wiederum mit findcomponents bzw. Panel1.Components machen).

Dynamisch erzeugen:

Delphi-Quellcode:
type
  Form1 = class(Tform)
    [...]
    Label : array[1..20] of TLabel;

[...]

  for i:=1 to 20 do
    Label[i] := TLabel.Create(Self);
  // Dann noch Parent zuweisen und positionieren
  for i:=1 to 20 do
    Label[i].Caption := 'Hallo ' + IntToStr(i);
[...]
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  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 17:36 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