AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Nue eine CheckBox wird gefunden !

Ein Thema von Minibike · begonnen am 12. Nov 2015 · letzter Beitrag vom 14. Nov 2015
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Minibike
Minibike

Registriert seit: 22. Feb 2008
3 Beiträge
 
#1

Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 16:14
Hallo,
habe seit Tagen ein Problem mit den CheckBoxen, und komme nicht mehr weiter. Wahrscheinlich ein kleines Problem, aber ich hab mir Delphi selbs angeeignet, und habe somit wenig Erfahrung und Ahnung von Delphi. Zum Problem : hab 10 CheckBoxen Dynamisch erzeugt, und kann nur eine davon abfragen, wieso ?

// 10 CheckBoxen erzeugen (0-9)
h := 64; // Höhe
i:=0;
While i <=9 Do Begin
newCheckBox := TCheckBox.Create(newCheckBox);
newCheckBox.parent := newtab;
newCheckBox.name := 'NewCheckBox'+inttostr(k)+inttostr(i);
newCheckBox.caption := 'Neue CheckBox'+inttostr(k)+inttostr(i);
newCheckBox.width := 120;
newCheckBox.left := 80;
newCheckBox.top := h;
newCheckBox.visible := true;
h := h +24;
i:=i+1;
end;



// Die 10 CheckBoxen abfragen
i:=0;
While i<=9 Do
begin
Test := 'NewCheckBox7' + IntToStr(i);
If TCheckBox(FindComponent(Test)).Checked = true then
ShowMessage('Ergebnis : True')
ELSE
ShowMessage('Ergebnis : False') ;
i:=i+1;
end;


Erster Durchlauf (i=0) wird NewCheckBox70 eindeutig gefunden, aber bei der nächsten (i=1) NewCheckBox71 bricht das Prg. zusammen, wieso ?

Gruß Mike, ich hoffe Ihr könnt mir da weiter helfen.........

Geändert von Minibike (12. Nov 2015 um 16:19 Uhr) Grund: verbesserung
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.830 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 16:20
Das Interessanteste hast Du weggelassen: Wie fragst Du ab?

newCheckBox := TCheckBox.Create(newCheckBox); ist auch etwas ungünstig. Nimm besser die Form oder newTab als Owner oder Nil.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Minibike
Minibike

Registriert seit: 22. Feb 2008
3 Beiträge
 
#3

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 17:13
Hallo,
danke für die schnelle Antwort, aber alles was ich Versuche geht nicht, habs mit newTab und Nil versucht.
Ich versuche die ganze Zeit 10 CheckBoxen auf ein TabSheet zu erzeugen. Das Neue TabSheet hab ich so erzeugt:
Delphi-Quellcode:
  //
  k := PageControl1.PageCount + 1;
  newtab := TTabSheet.Create(PageControl1);
  newtab.PageControl := PageControl1;
  newtab.name := 'tab'+inttostr(k);
  newtab.Caption := 'Tab '+inttostr(k);
  //
Danach 2x Label mit Text
  //
  newlabel := TLabel.Create(newlabel);
  newlabel.name := 'tablabel1'+inttostr(k);
  newlabel.caption := 'Bitte Aktivieren Sie die Felder die im Listfenster angezeigt werden sollen.';
  newlabel.Left := 48;
  newlabel.Top := 384;
  newlabel.visible := true;
  newlabel.parent := newtab;
  //
Danach diese CheckBoxen
  //
  h := 64; i:=0;
  While i <=9 Do Begin
    newCheckBox := TCheckBox.Create(newCheckBox);
    newCheckBox.parent := newtab;
    newCheckBox.name := 'NewCheckBox'+inttostr(k)+inttostr(i);
    newCheckBox.caption := 'Neue CheckBox'+inttostr(k)+inttostr(i);
    newCheckBox.width := 120;
    newCheckBox.left := 80;
    newCheckBox.top := h;
    newCheckBox.visible := true;
    h := h +24; i:=i+1;
  end;
  //



jetzt die Abfrage dazu

  i:=0;
  While i<=9 Do
  begin
    Test := 'NewCheckBox7' + IntToStr(i);
    If TCheckBox(FindComponent(Test)).Checked = true then
      ShowMessage('Ergebnis : True')
    ELSE
      ShowMessage('Ergebnis : False') ;
    i:=i+1;
  end;

Müsste doch eigentlich Funktionieren.
Geht ja auch, aber nur die erste CheckBox, bei den nächsten gibts einen abbruch.

Geändert von mkinzler (12. Nov 2015 um 17:39 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 17:25
Es wäre sehr freundlich, wenn du deinen Delphi-Quellcode mit den Delphi-Tags umschließen würdest, dann sieht der Quelltext gleich lesbarer aus.

Aus
Code:
[DELPHI]
procedure foo;
begin
  DoBar();
end;
[/DELPHI]
wird
Delphi-Quellcode:
procedure foo;
begin
  DoBar();
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.078 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 17:28
Du hast die Checkboxen doch selber erzeugt? Warum willst Du die dann suchen?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 17:34
Zum eigentlichen Thema:

Die Dokumentation zu TComponent.FindComponent sagt
Zitat:
Gibt an, ob der Komponente eine bestimmte Komponente untergeordnet ist.

FindComponent gibt diejenige Komponente im Array Components zurück, deren Name mit dem String im Parameter AName übereinstimmt. Mit Hilfe von FindComponent können Sie feststellen, ob eine bestimmte Komponente einer anderen Komponente untergeordnet ist.

Bie den Komponentennamen wird die Groß-/Kleinschreibung nicht berücksichtigt.
Du fragst (ich vermute mal) die Form, ob es dort so einen Komponente gibt. Die Form ist aber gar nicht der Besitzer (Owner) der gesuchten Komponente und darum kannst du die so auch nicht finden.

Häng deine Komponenten an einen Owner und dann frage diesen Owner nach den gesuchten Komponenten ab.

Alternativ kannst du aber auch rekursiv durch alle beteiligten Komponenten durchsuchen, was aber auch nur dann funktioniert, wenn die gesuchten Komponenten einen Owner haben.

Weitere ALternative ist das suchen über die Parent -Beziehung abfragen mit TWinControl.FindChildControl
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 17:36
Du hast die Checkboxen doch selber erzeugt? Warum willst Du die dann suchen?
Da diese Erzeugung zur Laufzeit insgesamt sehr statisch aussieht, würde sich sogar die Verwendung von einem Frame anbieten. Dann wird nur das Frame zur Laufzeit erzeugt und dort ist alles enthalten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.187 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 17:54
Hallo,
probier doch ma Kommentare aus ...

newCheckBox := TCheckBox.Create(newCheckBox); ist auch etwas ungünstig. Nimm besser die Form oder newTab als Owner oder Nil.
Markus Kinzler

newCheckBox := TCheckBox.Create(Self);

Und fertig.

Heiko
Heiko

Geändert von hoika (12. Nov 2015 um 18:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.078 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 17:57
Danach diese Checkboxen
Delphi-Quellcode:
  var ListederCheckBoxen = TList<TCheckBox>;
begin
  //
  ListederCheckBoxen = TList<TCheckBox>.Create;
  h := 64; i:=0;
  While i <=9 Do Begin
    newCheckBox := TCheckBox.Create(newCheckBox);
    ListederCheckBoxen.Add(NewCheckBox);
    newCheckBox.parent := newtab;
    newCheckBox.name := 'NewCheckBox'+inttostr(k)+inttostr(i);
    newCheckBox.caption := 'Neue CheckBox'+inttostr(k)+inttostr(i);
    newCheckBox.width := 120;
    newCheckBox.left := 80;
    newCheckBox.top := h;
    newCheckBox.visible := true;
    h := h +24; i:=i+1;
  end;
  //
end;
jetzt die Abfrage dazu

Delphi-Quellcode:
  i:=0;
  While i<=9 Do
  begin
    If ListederCheckBoxen.Items[I].Checked = true then
      ShowMessage('Ergebnis : True')
    ELSE
      ShowMessage('Ergebnis : False') ;
    i:=i+1;
  end;

ListederCheckBoxen.Free; //
Fertig.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.830 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Nue eine CheckBox wird gefunden !

  Alt 12. Nov 2015, 18:05
Aber das auch gleich beheben:

newCheckBox := TCheckBox.Create(self); If ListederCheckBoxen.Items[I].Checked then
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf