Ładny brzuch

Witam. Mam taki problem. Napisaem komponent ktry dziedziczy z TShape. Chciabym przed zniszczeniem komponentu usun z RichEdita linijk tekstu opisujc ten mj biecy komponent. Wskanik do RichEdita te jest wbudowany w komponent. Niestety kiedy uywam funkcji BeforeDestruction() w poniszy sposb:
void __fastcall TMyComponent::BeforeDestruction(void) {  inherited::BeforeDestruction();   if(prichedit!= NULL)  {   prichedit->Lines->Delete(FLineNumber) ;  } }
dostaj wyjtek i komunikat Control has no parent window.
Zmienna FLineNumber i wskanik na RichEdit (prichedit) s zmiennymi skadowymi klasy TMyComponent.
Jeli kto bdzie w stanie mi pomc bd bardzo wdziczny ;)
Pozdrawiam.



na podstawie tego kawalka kodu ciezko cos powiedziec :/
1. [strzal] czy prichedit ma ustawionego Parent'a?
2. czy jesli usuniesz metode BeforeDestruction to wszystko dziala dobrze?


na podstawie tego kawalka kodu ciezko cos powiedziec :/
1. [strzal] czy prichedit ma ustawionego Parent'a?
2. czy jesli usuniesz metode BeforeDestruction to wszystko dziala dobrze?

no to problem na pewno jest przy usuwaniu linii z richedita, prawdopodobnie w momencie kiedy chcesz ja skasowac richedit juz nie istnieje albo nie moze byc odrysowany.
ja tylko jednej rzeczy nie za bardzo rozumiem: po co usuwasz linie z richedita kiedy okno jest juz niszczone? przeciez i tak nic sie nie zdarzy wyswietlic bo okno sie zamknie no nie?
napisz moze jaki jest cel tego usuwania linii, moze sie da to zrobic jakos inaczej :]



Usuwac chce wlasciwie kiedy komponent jest niszczony (czyli np kiedy ktos nad nim del nacisnal). Niestety niszczenie komponentow odbywa sie takze kiedy forma jest zamykana co powoduje wspomniany blad. Usuwanie linii w momencie zamkniecia formy nie jest konieczne, natomiast jest konieczne kiedy usuwany jest komponent (chodzi o wykasownie z richedita kodu svg odpowiedzialnego za wyrysownie danego ksztaltu w przegladarce svg). Niestety uzycie funkcji BeforeDestruction powoduje probe usuniecia tejze linii w czasie niszczenia formy. Byc moze richedit juz wtedy nie istnieje ale czy wtedy wskaznik prichedit != NULL ?
Dzieki za odpowiedz.
Powalcze z tym jeszcze i jak cos wymysle to dam znac:)

ponizszy kod powinien pomoc:void __fastcall TMyShape::BeforeDestruction(void) {    inherited::BeforeDestruction();    if( prichedit != NULL && !prichedit->ComponentState.Contains(csDestroying) )         prichedit->Lines->Delete(FLineNumber); }


ponizszy kod powinien pomoc:void __fastcall TMyShape::BeforeDestruction(void) {    inherited::BeforeDestruction();    if( prichedit != NULL && !prichedit->ComponentState.Contains(csDestroying) )         prichedit->Lines->Delete(FLineNumber); }

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •