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;
}







