Cze All.
Mam taki dziś problemik: Jak klikam na różne elementy w listBox to otwierają mi się nowy form będący kopią Form3 (dynamicznie), każdy z nich otrzymuje nową nazwe (form->Name). Na głównym formie mam buttona który za zadanie ma wstawić pewien tekst do komponentu memo1 na tym dynamicznym formie. Robie to tak Form3->Memo1->Lines->Add("nowy tekst"); ale to nie działa - pewnie dla tego że nie wie na którym to formie ma się pojawić. Pytanie moje jest więc taki: Jak rozróżnić te formy i jak wstawiać tekst na określony form??
Z góry dzieki za każdą pomoc.
Tak myślę sobie żeby zrobić tablicę Form i później ją przeszukiwać. Tylko nie wiem jak ja stworzyć gdyż jak daje TForm3 *tab = new TForm3 [i]; to jest błąd odnośnie konstruktora. A liczbę elementów w listBox mam zmienną więc i rozmiar tej tablicy powinien być ustalany dynamicznie.
Parys napisał(a)
Cze All.
Mam taki dziś problemik: Jak klikam na różne elementy w listBox to otwierają mi się nowy form będący kopią Form3 (dynamicznie), każdy z nich otrzymuje nową nazwe (form->Name). Na głównym formie mam buttona który za zadanie ma wstawić pewien tekst do komponentu memo1 na tym dynamicznym formie. Robie to tak Form3->Memo1->Lines->Add("nowy tekst"); ale to nie działa - pewnie dla tego że nie wie na którym to formie ma się pojawić. Pytanie moje jest więc taki: Jak rozróżnić te formy i jak wstawiać tekst na określony form??
Z góry dzieki za każdą pomoc.
Nie rozumiem...Skoro tworzysz dynamicznie jakas forme nadajesz jej jakas nazwe np Form4. I na Form4 jest rowniez dynamicznie utworzony jakis Memo4. I skoro chcesz wywolac w Memo jakis tekst to dlaczego odwolujesz sie do Form3->Memo1... ??? Nie rozumiem. :-/
Ja tak tworzę te formy:
void __fastcall TForm1::ListBox1DblClick(TObject *Sender)
{
TForm3 *form=new TForm3(this);
form->Name=ListBox1->Items->Strings[ListBox1->ItemIndex];
form->Show();
}
I na tym Form3 jest tylko Memo1.
Czyli otwieram kilka form bedących kopią Form3. Tak więc nie jest to Form4 i Memo4.
Jeśli masz dynamiczną ilość form, to lepiej wykorzystać np. deque (ja tak robię).
Przykład:
int i = 0;
typedef deque<TForm3*,allocator<TForm3*> > Tformy;
typedef Tformy::iterator iterFormy;
Tformy formy;
//Twoje dodawanie formy:
TForm3 *form = new TForm3(this);
form->Name="Frm" + IntToStr(i++);
form->Show();
formy.push_back(form); //tu wrzucamy nową formę do deque
//Przykład wpisania do każdego Memo tekstu "asd"
//można też odwołać się przez index -> formy[3]->Memo1->Lines....
iterFormy iter;
for (iter = formy.begin(); iter < formy.end(); iter++)
(*iter)->Memo1->Lines->Add("asd");
</div>
Obsługa deque -> F1
Marooned napisał(a)
typedef deque<TForm3*,allocator<TForm3*> > Tformy;
^
W tym miejscu pokazuje mi sie taki błąd: E2299 Cannot generate template specialization from 'deque<_Tp,_Alloc>'
Szukałem w helpie co z tym zrobić ale nic nie odnalazłem co robie nie tak. Proszę o jeszcze jakąś pomoc. :)
Ok Już działa pomogło mi to:
http://4programmers.net/Forum/106393?h=deque#106393
THX ALL :)
//wow, nawet nie pamiętałem, że tak ładnie to opisałem na forum [green] - M