![]() |
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. |
AW: Anzahl bereits erstellter Komponenten herausfinden
Vielleicht denke ich jetzt zu kurz, aber wieso zählst Du beim Erzeugen der Frames nicht einfach mit?
|
AW: Anzahl bereits erstellter Komponenten herausfinden
Delphi-Quellcode:
Alternativ kannst du auch statt auf ClassName abfragen auch mit "is" arbeiten.
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; |
AW: Anzahl bereits erstellter Komponenten herausfinden
Hi blackfin, deinen Code werd ich gleich mal ausprobieren, werde mich dann nochmal melden :)
|
AW: Anzahl bereits erstellter Komponenten herausfinden
puuh^^
Das ist mein momentaner Code:
Delphi-Quellcode:
So würd ich meinen in den geposteten einbinden:
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;
Delphi-Quellcode:
aber wo bringe ich den Code unter???:
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;
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 |
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.
|
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; |
AW: Anzahl bereits erstellter Komponenten herausfinden
Dann setz doch mal das Testform.Show vor das letzte "end;".
|
AW: Anzahl bereits erstellter Komponenten herausfinden
Delphi-Quellcode:
Stimmt fast^^ :)
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. er springt, auch wenn es 10 Frames sind, in die Zeile TestForm.Show. *PEINLICH* :!::?::!: |
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 17:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz