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
 
 » PiotrexP 12:15
 » Sherif 12:13
 » rainy 12:12
 » Wolf 12:10
 » metacom 12:08
 » zibi13 12:07
 » rooter666 12:06
 » Chrisu 12:06
 » ulan 12:06
 » Holyboy 11:58
 » Robek 11:57
 » Magnus 11:50
 » NimnuL 11:44
 » fuzjon 11:41
 » Kenny 11:38
 » emigrus 11:21
 » myszon 11:20
 » ngP 11:11
 » yeger 11:09
 » Killer 11:08

 Dzisiaj przeczytano
 36895 postów,
 wczoraj 25433

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2025
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-2025, TwojePC.PL