Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » KHot 11:53
 » ToM78 11:49
 » Aeternus 11:40
 » m&m 11:40
 » cVas 11:40
 » PaKu 11:36
 » etranger 11:30
 » rooter666 11:22
 » wrrr 11:21
 » Ament 11:19
 » Fl@sh 11:09
 » emigrus 11:05
 » Promilus 11:02
 » DJopek 10:59
 » myszon 10:59
 » J@rek 10:59
 » mnih 10:58
 » esteban 10:43
 » piotrszac 10:40
 » Kenny 10:35

 Dzisiaj przeczytano
 36243 postów,
 wczoraj 22848

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2026
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?!

  1. 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.

    1. dziala , majek 5/04/08 12:45
      dzieki:)


      ... ale jak to?!

  2. 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"

    1. 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?!

  3. 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

    1. 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-2026, TwojePC.PL