🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #1612

Re: "programowy event" jak zmusic MDIParent do reakcji na zmiany w MDIChild? (BC++B)

#1612
From: Radio
Date: Tue, 17 Feb 1998 23:06
70 lines
3569 bytes
>Mam zagwozdke typu metodlogicznego. Mam program typu Parent z kilkoma
>childami. Childy to okienka z grafikami, na ktorych wykonuwane sa
>zmiany, oczywiscie forma parent je widzi bo sa w niej zagniezdzone
>ale jak wymusic natychmiastowa na nie reakcje (wystarczy mi ocziwscie na
>reakcje na zmiany z dokonywane z aktywnym childem).

Przepraszam, bo nie rozumiem - czy chodzi o aplikację MDI (okienko główne a
w nim okna dokumentów?), czy o program nadrzędny i powiązane z nim np. DDE
programy podrzędne... W pierwszej sytuacji to jest proste.
W każdym oknie MDIChild zadeklaruj unit okna głównego (MDIForm) w części
implementacyjnej (za słowem kluczowym Implementation).
W unicie okna głównego zdefiniuj procedury obsługi zdarzeń okienek
dokumentów.
Z okienek dokumentów odwołuj się do procedur w oknie głównym.
Jeżeli chodzi o rozpoznanie, które okno jest aktywne - w oknie MDIForm masz
property ActiveMDIChild, MDIChildCount...

A w helpie jest dosyć wyczerpujący opis tworzenia aplikacji MDI. Przeczytaj
najpierw te artykuły. To co próbujesz robić jest skazane na niepowodzenie
IMHO.

Zrobienie aplikacji wielodokumentowej jest dosyć proste - ale trzeba trochę
pograć zwłaszcza ze sprytnym odwoływaniem się do okien dokumentów.
Zwrócę Ci uwagę na następującą konstrukcję:

kreowanie nowego okienka MDIChild (TFrmChild w unicie Child)

interface
  uses Child

....
  with TFrmChild.Create(Self) do {tworzę nowe okno MDIChild}
  begin
    frmTyp:='_19702';
{ustawiam sobie zmienną w utworzonym oknie TFrmChild - tak naprawdę to jest
to property okna (OKNA TO TEŻ KOMPONENTY)}
    frmNumer:=No;
{Tu też ustawiam zmienną}

    Loader('_19702',No);
{a tu wywołuję procedurę z okna dokumentu}
  end;
           {a tu już nie mam dostępu bezpośredniego do okna}

Ile ja się wcześniej nakombinowałem, zanim znalazłem tę konstrukcję w jakimś
przykałdzie Borlanda...

Warto też opanować technikę tworzenia kolejnych podkals okna MDIChild -
dzięki temu możesz odwoływać się do struktur zdefiniowanych w nadrzędnej
klasie w oknach utworzonych na jej bazie. Przydaje się kiedy odwołujesz się
do aktywnego childa - np:

(MDIForm.ActiveMDIChild as TFrmWzorDoc).HT1.Print(0,999);

Co to oznacza? -
1.  Załóżmy, że wszystkie okna dokumentów (MDIChild) są wywiedzone z klasy
TFrmWzorDoc.
2. Klasa ta zawiera kontrolkę HTML o nazwie HT1.
3. Kontrolka HT1 posiada procedurę Print która drukuje dokument.
Wywołanie powyższej procedury dla dowolnego okna dokumentu wydrukuje
zawartość kontrolki - to bardzo wygodne - nieprawdaż?

Jeżeli natomiast chcesz komunikować się między programami - sorki nigdy
czegoś takiego nie robiłem.

Jak już sobie to przestudiujesz pytaj o następne szczegóły.


Tak więc siedź i knuj
Radio
Technical Details
Message-ID: <6cd5el$qp2$2@info.nask.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!not-for-mail
References: <34E9C87D.2AC4@ccgate.ari.ch>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!not-for-mail
From: "Radio" <promedia@lodz.pdi.net>
Newsgroups: pl.comp.lang.delphi,pl.comp.lang.c
Subject: Re: "programowy event" jak zmusic MDIParent do reakcji na zmiany w MDIChild? (BC++B)
Date: Wed, 18 Feb 1998 00:06:42 +0100
Organization: NewsServer at NASK N.O.C.
Lines: 73
Message-ID: <6cd5el$qp2$2@info.nask.pl>
References: <34E9C87D.2AC4@ccgate.ari.ch>
NNTP-Posting-Host: pmone232.lodz.pdi.net
X-Newsreader: Microsoft Outlook Express 4.71.1712.3
X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit