Hallo Experten!
Ich habe auf einem Fenster mehrere Edits (48 Stück, 8Zeilen a 6Edits).
Diese sind bisher halbwegs logisch benannt:
Edit11 Edit12 Edit13…
Edit21 Edit22
Jetzt würde ich jeweils die Elemente einer „Zeile“ in ein struct schreiben, um die Zeilen in einer Schleife zu füllen:
struct VisComponents
{
TEdit \*Edit[6]; //6 Zeiger auf Edits.
};
VisComponents EditArray[8]; //Array aus structs angelegt
for (int i=0; i++; i
So habe ich bisher versucht das zu programmieren, aber es waren keine Edit-Felder zu sehen.
Die Schleife wurde im Debugger auch gar nicht durchlaufen.
Wie kann ich etwas in dieser Art realisieren, dass ich im Prinzip ein Array aus Edits habe das ich in Schleifen durchlaufen kann?
System: NT4SP6 / W2K mit Borland C++Builder5 Pro
Tausend Dank, Christof
Oh man, was hab ich dabei nur gedacht?
So richtig:
struct VisComponents
{
TCheckBox \*CheckBox;
TEdit \*Edit[6];
{;
Spaeter, bei OnFormCreate():
for (int i=0; iLeft = 16;
Fields[i].CheckBox-\>Top = 80+(i\*32);
Fields[i].CheckBox-\>Enabled = true;
Fields[i].CheckBox-\>Visible = true;
for (int j=0; jLeft = 125+(j\*65);
Fields[i].Edit[j]-\>Top = 80+(i\*32);
Fields[i].Edit[j]-\>Visible = true;
Fields[i].Edit[j]-\>Enabled = true;
}
}
Sind aber trotzdem keine Felder zu sehen.
Gruss, Christof
versuch mal noch das hier :
iLeft = 16;
Fields[i].CheckBox->Top = 80+(i*32);
Fields[i].CheckBox->Enabled = true;
Fields[i].CheckBox->Visible = true;
for (int j=0; jLeft = 125+(j*65);
Fields[i].Edit[j]->Top = 80+(i*32);
Fields[i].Edit[j]->Visible = true;
Fields[i].Edit[j]->Enabled = true;
Fields[i].Edit[j]->:stuck_out_tongue_winking_eye:arent = Checksum; /*ich nehm an Checksum ist der Name der Form*/
}
}
Gruss
Hans
Hat jetzt geklappt, ich hab vergessen, die Eigenschaft Parent der Edits zu setzen.
Jetzt hab ich ein neues Problem.
Ich will die OnClick-Methode der Checkboxen umschreiben, um beim Click auf diese Checkboxen die Editfelder in dieser Reihe sichtbar und enabled zu schalten.
Wie kann ich diese Methode einer dynamisch erzeugten Komponente ueberladen (um ihr den Index der Zeile mitzugeben)?
Gruss, Christof
Hallo Christof,
ich habs auch noch nicht verstanden, eigentlich sollte der Ausdruck ‚Name = new Komponente(Parent);‘ schon die Parent-Komponente festlegen…
Jetzt hab ich ein neues Problem.
Ich will die OnClick-Methode der Checkboxen umschreiben, um
beim Click auf diese Checkboxen die Editfelder in dieser Reihe
sichtbar und enabled zu schalten.
Wie kann ich diese Methode einer dynamisch erzeugten
Komponente ueberladen (um ihr den Index der Zeile mitzugeben)?
Ueberladen ist nicht notwendig, man muss nur zuweisen:
Also in Deiner Schleife noch hinzufuegen:
Fields[i].CheckBox->OnClick = MyOnClickMethod;
Fields[i].CheckBox->Tag = i;//die Reihe vermerken
und die OnClick - Methode:
void __fastcall TMyForm::MyOnClickMethod(TObject *Sender)
{
TCheckBox* CheckBox = dynamic_cast(Sender);
if (CheckBox)
{//falls das casting eine Checkbox gefunden hat
for(int i=0; iFields[CheckBox->Tag][j];
if(Edit)
{//das casting hat Editfeld gefunden,
//das Enabled vom Checkbox Status abhaengig machen
Edit->Enabled = CheckBox->Checked;
}
}
}
}
So, so muesst’s gehen! Have fun,
Hans
Tausend Dank, noch ein paar kleine Aenderungen, dann gings.
Ich bin nur nicht zum antworten gekommen.
Gruss, Christof