AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Anzahl bereits erstellter Komponenten herausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl bereits erstellter Komponenten herausfinden

Ein Thema von Metallicwar · begonnen am 1. Sep 2010 · letzter Beitrag vom 1. Sep 2010
Antwort Antwort
Seite 1 von 2  1 2      
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#1

Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 12:33
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 12:36
Vielleicht denke ich jetzt zu kurz, aber wieso zählst Du beim Erzeugen der Frames nicht einfach mit?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#3

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 12:40
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.

Geändert von blackfin ( 1. Sep 2010 um 12:44 Uhr)
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#4

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 12:47
Hi blackfin, deinen Code werd ich gleich mal ausprobieren, werde mich dann nochmal melden
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#5

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 13:03
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

Geändert von mkinzler ( 1. Sep 2010 um 13:09 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 13:06
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#7

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 13:29
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;

Geändert von mkinzler ( 1. Sep 2010 um 13:30 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 13:39
Dann setz doch mal das Testform.Show vor das letzte "end;".
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#9

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 14:40
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*

Geändert von mkinzler ( 1. Sep 2010 um 14:48 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Anzahl bereits erstellter Komponenten herausfinden

  Alt 1. Sep 2010, 14:49
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 19:14 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