Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi label´s zählen (https://www.delphipraxis.net/97395-label%B4s-zaehlen.html)

MasterTobi 9. Aug 2007 20:05


label´s zählen
 
hey
ich bins mal wieder

ich hab folgende frage:

ich hab jetzt 13 label´s und wenn angenommen 4 davon ein 'x' zeigen dann sollen diese zusammen gezählt werden und in tedit1 ausgegeben werden.

kann mir jemand helfen :)
:coder2:

mfg
tobi

mkinzler 9. Aug 2007 20:07

Re: label´s zählen
 
Überwache Änderungen an der Caption der Labels und zähle dann in einer Variable

MasterTobi 9. Aug 2007 20:10

Re: label´s zählen
 
:wiejetzt:

kannst mir bitte einen code geben

mfg
tobi

Hansa 9. Aug 2007 20:12

Re: label´s zählen
 
Stichwortartig :

gehe die Label.Caption's mit FindComponent "is TLabel" durch und prüfe mit Pos ('x',...), ob eines den Kriterien entspricht. Genauer stahts hier : F1

mkinzler 9. Aug 2007 20:16

Re: label´s zählen
 
Wie werden die Captions gesetzt?

sniper_w 9. Aug 2007 20:16

Re: label´s zählen
 
Ich glaube, das ist schneller...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, lCount: Integer;
  cLabel: TLabel;
begin
  lCount := 0;
  for i:=0 to ComponentCount-1 do
  begin
    if Components[i] is TLabel then
    begin
      cLabel := TLabel(Components[i]);
      // jetzt gewünschte abfrage machen
      if cLabel.Caption = 'x' then
      begin
        // hier zusammen zählen
        Inc(lCount);
      end;
    end;
  end;
end;

3_of_8 9. Aug 2007 20:27

Re: label´s zählen
 
Sauber ist das natürlich nicht wirklich. Wie gesagt: Die beste Lösung wäre, dass du dir einfach mit einem Counter (global oder dem Formular gehörend) merkst, wie viele Labels gerade den entsprechenden Wert haben und bei einer Änderung den Counter inkrementierst bzw. dekrementierst.

SirThornberry 9. Aug 2007 20:44

Re: label´s zählen
 
ich verstehe das Problem nicht. Ich glaub dein Programmablauf ist nicht richtig durchdacht. Du als Programmierer sorgst dafür das sich die Caption eines Labels ändert. Also weißt du auch wann ein X dazu kommt oder verschwindet. Wenn du die Caption änderst kannst du doch im gleichen Moment auch einen Zähler hoch bzw. runter zählen:
Delphi-Quellcode:
var
  lIsX,
  lWasX : Boolean;
begin
  lWasX := DeinLabel.Caption = 'X';
  DeinLabe.Caption := NeueCaption;
  lIsX := DeinLabel.Caption = 'X';
  if (lWasX and not(lIsX)) then
    XAnzahl := XAnzahl - 1
  else if (not(lWasX) and lIsX) then
    XAnzahl := XAnzahl + 1;

Hawkeye219 9. Aug 2007 20:58

Re: label´s zählen
 
oder so:

Delphi-Quellcode:
begin
  Dec (XAnzahl, Ord(DeinLabel.Caption = 'X'));
  DeinLabel.Caption := NeueCaption;
  Inc (XAnzahl, Ord(DeinLabel.Caption = 'X'));
end;
Gruß Hawkeye

Hansa 9. Aug 2007 22:01

Re: label´s zählen
 
Wozu wird ein Zähler gebraucht ? Sniper hat die von mir angesprochene Logik bereits (fast) realisiert. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.
Seite 1 von 3  1 23      

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