TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[Delphi] Potrzebna pomoc z MDI - create , majek 5/04/08 12:15 Piszę pewien edytor. Mam jednak pewien problem. WMam okienko główne i w nim akcję:
Form_new:=TForm_new.Create(self);
no i teraz powiedzmy ze otworze sobie takie 3 okienka. Po zamknięciu któregokolowiek z nich - program wywala błąd. Zapewne chodzi o to, że na tej formatce mam zdarzenie onClose:
Action := caFree;
Form_new:=nil;
Teraz pytanie, bo nie mogę sobie przypomnieć, a dawno nie pisalem w delphi - jak tworzyć unikatowe "dzieci" żeby każde było niezależne od drugiego. mam nadzieje, że jasno to opisałem - coś w stylu "this:=nil ? :)"
... ale jak to?!
- Prawdopodobnie masz tylko jeden wskażnik do , Sherif 5/04/08 12:31
którego podstawiasz adresy kolejno tworzonych obiektów (okien). W module okna klasy TForm_new używaj Self.- dziala , majek 5/04/08 12:45
dzieki:)
... ale jak to?!
- nie zapominaj , Deus ex machine 5/04/08 12:41
zmieniac nazw nowo tworzonym okienkom. Juz dawno MDI nie pisalem, ostatnio w licencjacie uzywalem. Po create Form_new, ustaw Form_new.name, zeby kazde okno mialo inna. Nie pamietam, zebym mial jakies problemy przy MDI. Przy tworzeniu aplikacji wybralem na poczatku template MDI i dalej juz szlo .)
Poczytaj tutaj http://delphi.about.com/...ginners/l/aa031103a.htm"Uti non Abuti" - dobra uwaga , majek 5/04/08 12:52
a przy okazji - wziałem się z magisterkę:) i mam nadzieję, że program do poniedziałku napiszę:) a czas ucieka...
... ale jak to?!
- Taki ten kod nieco pokrętny , JOTEM 5/04/08 16:51
Żeby to miało sens, i żeby TForm_new było oknem dzieckiem z prawdziwego zdarzenia to powienieneś wypierniczyć globalną zmienną Form_new, zamiast niej użyć lokalnej zmiennej w procedurze, gdzie tworzysz okno dziecko, albo użyć konstrukcji:
with TForm_new.Create(Self) do
begin
...
name:='coś tam zalezne od treści danego okna dziecka-dokumentu';
...
end;
Nie rozumiem zaś zupełnie użycia
Form_new:=nil;
a tym bardziej
Self:=nil;
Operujesz na obiektach, a nie na interface'ach i self:=nil jest bezużyteczne.
W OnClose dajesz po prostu Action:=caFree i tyle.
Dodatkowo przypominam, że jak już decydujesz sie na stworzenie niezalecanego MDI, to stosuj sie do kanonów sztuki i odwołuj się do okien dzieci jedynie poprzez przygotowane mechanizmy MDIChilCount, MDIChildren i ActiveMDIChild głównej formy, bez użycia jakichkolwiek własnych uchwytów do okien. Wtedy nie będziesz miał limitu ilości okien i okna dzieci będą na prawdę niezależne.
Pozdrawiam.Poryjemy..zrobaczymy - błądzik taki mały , JOTEM 5/04/08 17:22
oczywiscie w przykładzie caption zamiast name. Name lepiej nie tykać.
Dodatkowo samo wpisanie takiego kodu jaki miałeś pierwotnie nie powinno powodować błędu przy zamykaniu okien. Nie wiem, czy gdzieś indziej nie jest coś skaszanione.Poryjemy..zrobaczymy
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|