Send en egen melding til alle former i application

Hurtig tutorial på hvordan du sender en tilpassede vinduer melding til alle former i et program
Dette høres ut som det skal være en ganske enkel oppgave. Dessverre dokumentasjonen i delphi mangler på dette temaet. Å starte denne opplæringen opprette et nytt prosjekt i Delphi og tilsett 2 nye former. Lagre alle filene og bruke standard navnene på Form1, Form2, Form3.
Vi er nå klar :)
Det er noen enkle trinn for å følge.

  • Define Message konstanter

    Definer beskjed handlers

    Send melding til alle former
    Definer Message konstanter Dette er enkelt, bare legge erklæringen i bruk i form1 som følger:
    const JR_1 = WM_USER + 1;
    WM_USER er vinduer definert område av WM verdier som du har lov til å bruke. Når du oppretter egendefinerte meldinger alltid starter på WM_USER + X ..., verdier for å unngå er WM_USER + 100, 500, 1000, etc. fordi komponent forfattere har en tendens til å bruke disse felles verdier for sine egne formål.
    Definer beskjed handlers
    For å gjøre dette klarere og redusere koden jeg har laget et skjema klasse som alle former i dette eksemplet vil være basert på.
    Legg denne koden til bruksområder avsnittet under const erklæring nettopp lagt
    typen TMessageForm = klasse ( TForm) beskyttet prosedyre JR1 (var Melding: TMessage); Meldingen JR_1; end;
    Nå kan du legge til følgende kode i gjennomføringen delen
    {- TMessageForm.JR1} prosedyre TMessageForm.JR1 (var Melding: TMessage.); begynne Caption: = 'Message Recieved'; enden,
    Ok, så nå har vi en form klasse som kan svare på vår egen melding. Alt vi trenger å gjøre er å endre alle skjemaer som skal avledet fra TMessageForm stedet for TForm, som så:
    TForm1 = klasse (TMessageForm) end;
    Du må legge 'enhet1' til din bruk klausul i enheter 2 &Co. . 3 som så
    bruker Windows, Meldinger, SysUtils, kurs, grafikk, kontroller, skjemaer, Dialoger, Unit1;
    Du må også gjøre alle former synlige ved oppstart. Vi gjør dette ved å redigere prosjektene .dpr fil. Dette kan gjøres ved åpningen i filen i notepad, eller ved hjelp av prosjektleder.
    Vil åpne Prosjektleder trykke CTRL + ALT + F11, og velg deretter høyreklikk på prosjektnavnet, og velg "vis kilde" Anmeldelser lim inn følgende kode:
    bruker Skjemaer, Windows, Unit1 i 'Unit1.pas {Form1} Unit2 i' Unit2.pas {Form2} Unit3 i 'Unit3.pas {Form3}; product: { $ R * res}
    begynne Application.Initialize; Application.CreateForm (TForm1, Form1); Application.CreateForm (TForm2, Form2); Showwindow (Form2.Handle, SW_SHOW); Application.CreateForm (TForm3, Form3); Showwindow (Form3.Handle, SW_SHOW); Application.Run; enden.
    Vi har lagt Windows til bruksområder delen fordi vi trenger å ringe Showwindow. Showwindow, gjør akkurat hva det står på tinn;..) Det viser en form i håndtaket
    Nå er vi klar til å sende meldinger til alle skjemaene i søknaden
    Send melding til alle former Anmeldelser Legg til en knapp i Form1 og dbl klikk på den. Lim inn denne koden
    {- TForm1.Button1Click} prosedyre TForm1.Button1Click (Sender: TObject.); Var i: Integer; begynne for i: = 0 til Screen.FormCount -1 gjøre Screen.Forms [i] .Utfør (JR_1,0,0); end;
    Nå kjører programmet og din alle sortert;) Hvis du har problemer med å følge denne artikkelen så kan du laste ned hele kildekoden her: