Zadanie polega na tym aby Form2 miała zadeklarowane dane w zależności od parametrów wprowadzonych przez Form1.
W moim przypadku opcja wybrana w ComboBox(Form1) powinna się wyświetlać jako opis CheckBoxa(Form02).
Niestety nie mogę zrobić tego metodą Form2->ChceckButton1->Caption = ComboBox1->Items->Strings[ComboBox1->ItemIndex];
bo wyskakuje mi access violation
Project ... raised exception class EAccessViolation with message 'Access violation at address 00402722 in module '...'. Read of address 00000334'. Process stopped. Use Step or Run to continue. |
(Co ciekawe, na "testowym" projekcie poniżej takie rozwiązanie działa - być może błąd jest spowodowany tym, że chwilę wcześniej jast ładowany XML do pamięci poprzez TinyXML).
Do rozwiązania problemu użyłem więc zmiennej globalnej, która "niesie" informacje o wybranej opcji.
Kod wygląda tak:
KOD cpp: UKRYJ
AnsiString niesie;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
AnsiString a = "Alfa"; AnsiString b = "Bravo"; AnsiString c = "Charlie";
ComboBox1->Items->Add(a); ComboBox1->Items->Add(b); ComboBox1->Items->Add(c);
ComboBox1->ItemIndex = 0; //wartosc na start
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
niesie = ComboBox1->Items->Strings[ComboBox1->ItemIndex];
ShowMessage("Unit1 = " + niesie);
Form1->Hide();
Form2->Show();
}
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
AnsiString a = "Alfa"; AnsiString b = "Bravo"; AnsiString c = "Charlie";
ComboBox1->Items->Add(a); ComboBox1->Items->Add(b); ComboBox1->Items->Add(c);
ComboBox1->ItemIndex = 0; //wartosc na start
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
niesie = ComboBox1->Items->Strings[ComboBox1->ItemIndex];
ShowMessage("Unit1 = " + niesie);
Form1->Hide();
Form2->Show();
}
KOD cpp: UKRYJ
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
extern AnsiString niesie;
ShowMessage("Unit2 = " + niesie);
CheckBox1->Caption = niesie;
}
: TForm(Owner)
{
extern AnsiString niesie;
ShowMessage("Unit2 = " + niesie);
CheckBox1->Caption = niesie;
}