Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Anzahl bereits erstellter Komponenten herausfinden (https://www.delphipraxis.net/154216-anzahl-bereits-erstellter-komponenten-herausfinden.html)

Metallicwar 1. Sep 2010 12:33

Anzahl bereits erstellter Komponenten herausfinden
 
Hallo zusammen,
ich möchte Items aus einer CheckListbox, welche anschließend in einem Frame platziert werden(Name, Vorname, etc..) auf einem Formular platzieren. Auf dem Formular dürfen aber nur 10 Frames platziert werden, da ich dieses dann ausdrucken will. Wie finde ich heraus, wie viele Frames bereits platziert worden sind?
Wenn es 10 sind, soll das Formular (mit den Frames) ausgedruckt werden, anschließend das Formular wieder leeren und weiter mit Frames füllen, falls noch nicht alle ausgedruckt wordn sind.

DeddyH 1. Sep 2010 12:36

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Vielleicht denke ich jetzt zu kurz, aber wieso zählst Du beim Erzeugen der Frames nicht einfach mit?

blackfin 1. Sep 2010 12:40

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Delphi-Quellcode:
var
  i,FormCount : Integer;
begin
   FormCount := 0 ;

   for i := 0 to (Form1.ComponentCount - 1) do
   begin
     if (Form1.Components[i].ClassName = 'TFrame') then // oder wie halt deine Frame-Klasse heisst...
     begin
        Inc(FormCount) ;
     end;
   end;  

   if (FormCount < 10) then
   begin
      //
   end
   else
   begin
     //
   end;
end;
Alternativ kannst du auch statt auf ClassName abfragen auch mit "is" arbeiten.

Metallicwar 1. Sep 2010 12:47

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Hi blackfin, deinen Code werd ich gleich mal ausprobieren, werde mich dann nochmal melden :)

Metallicwar 1. Sep 2010 13:03

AW: Anzahl bereits erstellter Komponenten herausfinden
 
puuh^^
Das ist mein momentaner Code:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i:Integer;
begin
    TestForm:=TForm.Create(Self);
    TestForm.ClientHeight:=1200;
    TestForm.ClientWidth:=700;
for i := 0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i] then
    begin
      TestFrame:=TFrame4.Create(Self);
      TestFrame.Name:=''+(CheckListBox1.Items[i]);
      TestFrame.Top:= Random(1200);
      TestFrame.Parent:=TestForm;
      TestFrame.Show;
      TestForm.Show;
      //ShowMessage(checklistbox1.Items[i]);
    end;
end;
So würd ich meinen in den geposteten einbinden:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i, FormCount: Integer;
  iItems: Integer;
begin
   for i := 0 to (TestForm.ComponentCount - 1) do
   begin
     if (TestForm.Components[i].ClassName = 'TestFrame') then
     begin
        Inc(FormCount) ;
     end;
   end;

   if (FormCount < 10) then
   begin
      TestFrame:=TFrame4.Create(Self);
      TestFrame.Name:=''+(CheckListBox1.Items[i]);
      TestFrame.Top:= Random(1200);
      TestFrame.Parent:=TestForm;
      TestFrame.Show;
   end
   else
   begin
      Formular drucken
      Formular leeren
      Formular neu füllen    
   end;
end;
aber wo bringe ich den Code unter???:
Delphi-Quellcode:
begin
    TestForm:=TForm.Create(Self);
    TestForm.ClientHeight:=1200;
    TestForm.ClientWidth:=700;
for i := 0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i] then

SirThornberry 1. Sep 2010 13:06

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Wie bereits erwähnt ist die einfachste und beste Lösung einfach mit zu zählen. Jedesmal wenn du einen neuen Frame erstellst brauchst du nur gleichzeitig eine Variable hochzählen und schon fällt jeglicher weitere Code weg.

Metallicwar 1. Sep 2010 13:29

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Hi, hab Blackout^^ bin schon ganzen Tag am powern ^^ hab bestimmt wieder mal was in falsche line geschrieben:
Problem: Er öffnet das Formular mit den Frames und zeigt erst dann die Meldung an dass es 10 sind.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i:Integer;
  zaehler: Integer;
begin
    zaehler:= 0;
    TestForm:=TForm.Create(Self);
    TestForm.ClientHeight:=1200;
    TestForm.ClientWidth:=700;
for i := 0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i] then
  if zaehler <= 10 then
    begin
      TestFrame:=TFrame4.Create(Self);
      TestFrame.Name:=''+(CheckListBox1.Items[i]);
      TestFrame.Top:= Random(1200);
      TestFrame.Parent:=TestForm;
      zaehler:= zaehler + 1;
      TestFrame.Show;
      TestForm.Show;
    end
    else
    begin
      ShowMessage('Zähler ist 10');
    end;
end;

DeddyH 1. Sep 2010 13:39

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Dann setz doch mal das Testform.Show vor das letzte "end;".

Metallicwar 1. Sep 2010 14:40

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i:Integer;
  zaehler: Integer;
begin
    zaehler:= 0;
    TestForm:=TForm.Create(Self);
    TestForm.ClientHeight:=1200;
    TestForm.ClientWidth:=700;
for i := 0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i] then
  if zaehler <= 10 then
    begin
      TestFrame:=TFrame4.Create(Self);
      TestFrame.Name:=''+(CheckListBox1.Items[i]);
      TestFrame.Top:= Random(1200);
      TestFrame.Parent:=TestForm;
      zaehler:= zaehler + 1;
      TestFrame.Show;
    end
    else
    begin
      ShowMessage('Zähler ist 10');
    end;
    TestForm.Show;
end;
end.
Stimmt fast^^ :)
er springt, auch wenn es 10 Frames sind, in die Zeile TestForm.Show.
*PEINLICH* :!::?::!:

DeddyH 1. Sep 2010 14:49

AW: Anzahl bereits erstellter Komponenten herausfinden
 
Er soll das Formular nur anzeigen, wenn es 10 Frames sind?
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  i:Integer;
  zaehler: Integer;
begin
  zaehler:= 0;
  TestForm:=TForm.Create(Self);
  TestForm.ClientHeight:=1200;
  TestForm.ClientWidth:=700;
  for i := 0 to CheckListBox1.Items.Count-1 do
    if CheckListBox1.Checked[i] then
      if zaehler < 10 then
        begin
          TestFrame:=TFrame4.Create(Self);
          TestFrame.Name:=''+(CheckListBox1.Items[i]);
          TestFrame.Top:= Random(1200);
          TestFrame.Parent:=TestForm;
          zaehler:= zaehler + 1;
          TestFrame.Show;
        end
      else
        begin
          ShowMessage('Zähler ist 10');
          TestForm.Show;
        end;      
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 Uhr.
Seite 1 von 2  1 2      

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