Ĺadny brzuch
No i mam kolejny problem - w komponęcie podczas zmiany kroju lub rozmiaru czcionki występuję stack overflow :( Szukam błędu i szukam, zmieniam co się da i nic to nie daje. Piszę na podstawie książki Delphi. Kompedium programisty. i nic w niej nie ma na ten temat :(
Cały kod dostępny tutaj: http://arturs.aplus....wtopic.php?t=33
Font := AFont - przypuszczam, że to wywoła ponownie SetFont, czyli... zapętli się i... stack overflow :P
Zastanawia mnie dlaczego nie jest FFont := AFont ? i nie zadeklarowałeś FFont: TFont w sekcji prywatnej.
Dla innych właściwości to zrobiłeś tylko nie dla czcionki.
Hmm jak zrobię tak jak mówisz to występuje błąd w bibliotekach w Delphi i komponent w ogóle się nie pokazuje
A co do błedu to trochę opisałem go nieściśle. Błąd występuję jeżeli wywołam z Object Inspectora okno dialogowe do zmianu ustawień Font czyli FontDialog, jeżeli nie zmieniam nim właściwości TFont to wtedy jest wszystko w porządku.
Użytkownik -=PcSA=- edytował ten post 21 maj 2005, 12:16
W takim razie napisz:
inherited Font := AFont;
Przypisując do Font uruchamiałeś prockę SetFont, która jak wiesz wykonuje się przed zapisem nowej wartości w tej zmiennej. Tym samym znów przypisywałeś to samo... i tak w kółko, z tąd stack overflow. Dzięki inherited przypiszesz nową wartość do Font'a z klasy bazowej, bo chyba o to chodzi.
Nadal to samo :(
Ah... przepraszam, wydawało mi się, że dobrze pamiętam, bo sam kiedyś pisałem komponenty, ale jednak skleroza daje się we znaki. Nie mniej jednak u mnie zadziałało :blink: no ale nic...
Musisz użyć metody Assign, czyli Font.Assign(AFont);
Działa u mnie i nie zauważyłem żadnych anomalii przy przypisywaniu/zmianie czcionki.
[dopisane]
Nie bedę pisał nowego posta, może przypadkiem przejrzysz stare ;)
Ad. umieszczenie na liście) Fajnie, ale zmiana kilku literek chyba nie kwalifikuje się do umieszczenia na tej liście :rolleyes:
Użytkownik MatroX edytował ten post 21 maj 2005, 16:30
W końcu działa - dzięki :)
W nagrodę - jeżeli oczywiście pozwolisz - umieszczę Twój nick i e-mail w liście osób które pomogły przy programie :)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Cały kod dostępny tutaj: http://arturs.aplus....wtopic.php?t=33
Font := AFont - przypuszczam, że to wywoła ponownie SetFont, czyli... zapętli się i... stack overflow :P
Zastanawia mnie dlaczego nie jest FFont := AFont ? i nie zadeklarowałeś FFont: TFont w sekcji prywatnej.
Dla innych właściwości to zrobiłeś tylko nie dla czcionki.
Hmm jak zrobię tak jak mówisz to występuje błąd w bibliotekach w Delphi i komponent w ogóle się nie pokazuje
A co do błedu to trochę opisałem go nieściśle. Błąd występuję jeżeli wywołam z Object Inspectora okno dialogowe do zmianu ustawień Font czyli FontDialog, jeżeli nie zmieniam nim właściwości TFont to wtedy jest wszystko w porządku.
Użytkownik -=PcSA=- edytował ten post 21 maj 2005, 12:16
W takim razie napisz:
inherited Font := AFont;
Przypisując do Font uruchamiałeś prockę SetFont, która jak wiesz wykonuje się przed zapisem nowej wartości w tej zmiennej. Tym samym znów przypisywałeś to samo... i tak w kółko, z tąd stack overflow. Dzięki inherited przypiszesz nową wartość do Font'a z klasy bazowej, bo chyba o to chodzi.
Nadal to samo :(
Ah... przepraszam, wydawało mi się, że dobrze pamiętam, bo sam kiedyś pisałem komponenty, ale jednak skleroza daje się we znaki. Nie mniej jednak u mnie zadziałało :blink: no ale nic...
Musisz użyć metody Assign, czyli Font.Assign(AFont);
Działa u mnie i nie zauważyłem żadnych anomalii przy przypisywaniu/zmianie czcionki.
[dopisane]
Nie bedę pisał nowego posta, może przypadkiem przejrzysz stare ;)
Ad. umieszczenie na liście) Fajnie, ale zmiana kilku literek chyba nie kwalifikuje się do umieszczenia na tej liście :rolleyes:
Użytkownik MatroX edytował ten post 21 maj 2005, 16:30
W końcu działa - dzięki :)
W nagrodę - jeżeli oczywiście pozwolisz - umieszczę Twój nick i e-mail w liście osób które pomogły przy programie :)