AGB  ·  Datenschutz  ·  Impressum  







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

Viele Labels, viel Code?

Ein Thema von dcg · begonnen am 19. Jun 2006 · letzter Beitrag vom 22. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
dcg

Registriert seit: 4. Jun 2006
6 Beiträge
 
Delphi 7 Personal
 
#1

Viele Labels, viel Code?

  Alt 19. Jun 2006, 22:24
Moin Moin,

ich hätte mal ne Frage bezüglich Labels, aber auch andere Codeteile aus Proceduren sind damit gemeint.
Und zwar habe ich ein Programm mit 64 (später sogar 128) sichtbaren Labels, per Klick auf einen Button müssen diese alle auf Font-Farbe "Grün" gesetzt werden, bin ich nun gezwungen 64mal Label(x).Font.Color:= clgreen zu schreiben (die Labels sind aber nicht alle der Reihe nach durchnummeriert) oder gibt es dafür Abkürzungen?

Gruß
Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Viele Labels, viel Code?

  Alt 19. Jun 2006, 22:28
Du könntest die Referenzen in einen Array ablegen, über den du dann eine Schleife laufen lassen kannst.
Markus Kinzler
  Mit Zitat antworten Zitat
dcg

Registriert seit: 4. Jun 2006
6 Beiträge
 
Delphi 7 Personal
 
#3

Re: Viele Labels, viel Code?

  Alt 19. Jun 2006, 22:29
Wie müsste das dann aussehen?

Wie ich ein Array ablaufen lassen kann ist klar, aber in Verbindung mit dem Label?

Gruß
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Viele Labels, viel Code?

  Alt 19. Jun 2006, 22:31
...oder auf Components, die Property von TForm zurückgreifen. Die kannst du dann durchlaufen und bei allen Instanzen von TLabel mit Tag=irgendwas Font.Color auf clGreen stellen. Mit Tag=irgendwas meine ich, dass du dir einen beliebigen Wert aussuchen kannst (high(Integer) zum Beispiel) und den allen zu verändernden Labels zuweist.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Viele Labels, viel Code?

  Alt 19. Jun 2006, 22:31
Du könntest aber auch all deinen Labels einen Namenspräfix verpassen inklusive fortlaufender Nummer, dann kannst du toll mit Hier im Forum suchenFindComponent durch die Labels iterieren.
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Viele Labels, viel Code?

  Alt 19. Jun 2006, 22:31
Delphi-Quellcode:
var
meineLabels : array[1..10] of TLabel; //fixe Größe
meineLabelsdyn : array[1..10] of TLabel; //dynamische Größe

//füllen (fix)
meineLabels[1] := label1;

//füllen (dyn)
setlength(meinelabelsdyn,length(meineLabelsDyn)+1); //array um 1 verlängern.
meineLabelsDyn[high(meineLabelsDyn)] := labelX; //Das neu angefügte Element füllen
...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Viele Labels, viel Code?

  Alt 19. Jun 2006, 22:35
Du könntest z.B. die labels dynamisch erzeugen:

Delphi-Quellcode:
var
   lar: Array of TLable;
   i, n: Integer;
...
begin
...
  n := 64;
  setLength( lar, n);
  for i := 0 to n-1 do
  begin
    lar[i] := TLabel.Create(self);
    lar[i].Owner := self;
    lar[i}.Top := ...
    ...
  end;
   ...
 
  for i := 0 to n-1 do
  begin
    lar[i].Font.Color := clgreen ;
  end;
Markus Kinzler
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Viele Labels, viel Code?

  Alt 20. Jun 2006, 06:01
Hi,

wie wäre es hiermit

Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ComponentCount-1 do
    if Components[I] is TLabel then
      TLabel(Components[I]).Font.Color := clGreen;
end;
Uwe
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Viele Labels, viel Code?

  Alt 20. Jun 2006, 07:41
Oder mit FindComponent, das wäre noch besser, wenn man nicht ALLE Labels färben möchte, sondern nur bestimmte.

Dafür muss man dann aber alle Labels mit dem gleichen Prefix versehen. z.B. "Label" und dahinter dann eine fortlaufende Nummer.

So könnte man dann über eine Schleife auch auf jedes Label zugreifen. -> "Label"+IntToStr(i).
Sascha
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Viele Labels, viel Code?

  Alt 20. Jun 2006, 09:25
Hallo,

ich habe hier noch eine Lösung, die eine Mischung aus anderen Lösungsvorschlägen ist.
Sie findet alle Labels, deren Name mit 'label' beginnt.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ContNrs, StrUtils;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    Labels : TObjectList;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var lk : Integer;
begin
  // Objekt-Liste für alle Labels erstellen.
  Labels := TObjectList.Create;

  // Suche alle Komponenten, deren Namen mit label beginnt.
  for lk := 0 to ComponentCount - 1 do begin
    if (Components[lk] is TLabel) and (StartsText('label', Components[lk].Name))
    then begin
      Labels.Add(Components[lk]);
    end;
  end; // for lk
end; // FormCreate

procedure TForm1.Button1Click(Sender: TObject);
var lk : Integer;
begin
  // Schriftfarbe der Labels auf Grün setzen.
  for lk := 0 TO Labels.Count - 1 do begin
    TLabel(Labels[lk]).Font.Color := clGreen;
  end; // for lk
end; // Button1Click

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // Freigabe der Label-Liste.
  FreeAndNil(Labels);
end; // FormDestroy

end.
Viele Grüße,
pszopp
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:56 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