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
 
 » rulezDC 23:13
 » Qjanusz 23:13
 » Wojtekar 22:48
 » ReeX 22:44
 » Wedrowiec 22:42
 » Conan Bar 22:41
 » DYD 22:39
 » Pawiano 22:38
 » Shark20 22:31
 » Wedelek 22:29
 » Kool@ 22:27
 » rbxxxx 22:25
 » stefan_nu 22:22
 » Curro 22:20
 » Holyboy 22:17
 » fiskomp 22:10
 » DJopek 22:10
 » Flo 22:09
 » Artaa 22:08
 » rainy 22:05

 Dzisiaj przeczytano
 41115 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
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?!

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