EN | CZ
O společnostiProduktyObchodPodpora
Moravské přístroje
Hlavní stránka
O společnosti
Stažení software
Stažení dokumentů
Produkty
Control Web
Strojové vidění VisionLab
Kamery DataCam a osvětlovače DataLight
Průmyslový počítačový systém DataLab
Vědecké kamery
Speciální technika
Ceník
Aktivace produktů
Služby
Školení
Zakázková řešení
Podpora
Volba kamery a objektivu pro Strojové vidění
Control Web - Ukázkové aplikace

Hlavní stránkaPodporaFAQControl Web 2000 FAQ

Tipy pro snadnou spolupráci DDE Clienta systému Control Web s programem Microsoft Excel

Tipy pro snadnou spolupráci DDE Clienta systému Control Web s programem Microsoft Excel

Upozornění: Následující tipy jsou doporučeny pro spolupráci s programem Microsoft Excel 97. S tímto programem byly také veškeré tipy testovány. V případě neočekávaného chování zmíněného programu se, prosím, obracejte na dodavatele, případně přímo na firmu Microsoft nebo její lokální distributory.

Tip 1 - Otevření programu Excel

Pokud chcete programově (míněno z běžící aplikace CW) otevřít Excel, případně jinou službu DDE serveru, musíte mít DDE client ovladač nakonfigurovaný tak, aby umožňoval spouštění služby a zároveň musíte mít uvedenu identifikaci dané služby. Identifikací služby může být přímo cesta se jménem spustitelného (EXE) souboru nebo symbolický odkaz na zprostředkovatele služby, v případě Excelu ^.xls. V aplikaci stačí zavolat na vhodném místě programu DQMI proceduru ovladače:

system.DriverQueryProc( '<jméno ovladače>', 'run_service', &nResult );

Tato procedura by měla být volána výhradně v okamžiku, kdy daný ovladač (DDE client) není připojen k žádnému serveru.

Tip 2 - Otevření dokumentu v běžící aplikaci Excel

Programové otevření existujícího souboru předpokládá, že DDE client nejprve naváže spojení s aplikací DDE serveru a předá jí požadavek na otevření souboru. V první fázi tedy client započne s pokusem o spojení a čeká na výsledek:

program pgServiceConnect;
  begin
    system.DriverQueryProc( 'ddeserv', 'topic SYSTEM', &nResult );
    system.DriverQueryProc( 'ddeserv', 'connect', &nResult );
    nCompletionStatus = 0;
    while (nCompletionStatus < 100) and (not bServConnected) do
      nCompletionStatus = nCompletionStatus + 1;
      system.DriverQueryProc( 'ddeserv', 'connected?', &bServConnected );
      pause 0.01;
    end;
    pause 0.2;
  end;
end_program;

Pokud je proměnná bServConnected = true, pak přichází na řadu fáze druhá. Serveru je předán požadavek na otevření souboru. Po této akci může dojít k samovolnému odpojení DDE serveru. I tak je lepší provést toto odpojení programově. Program vypadá následovně:

program pgServiceOpenExec;
  begin
    system.DriverQueryProc( 'ddeserv', 'execute [open("c:\show1.xls")]', &nResult );
  end;
end_program;

Pozor! Jméno souboru je potřeba předávat s plnou cestou, jinak se může stát, že se nepodaří soubor nalézt a Excel vytvoří chybové okno, které bude zobrazeno až v okamžiku, kdy jej uživatel vybere jako aktivní aplikaci. Do té doby nebude Excel odpovídat na žádné další požadavky (!!!). Pokud si nejste jisti, jak operace skončí, je doporučeno vypnout chybové hlášky Excelu:

system.DriverQueryProc( '<jméno ovladače>', 'execute [Error(False)]', &nResult );

Poslední fází je připojení k DDE serveru Excelu (se správně nastaveným předmětem -- viz DQMI procedura topic). Připojení může být realizováno obdobně jako v ukázce programu pgServiceConnect, viz výše.

Tip 3 - Uzavření Excelu

Excel je možné programově uzavřít třemi způsoby: bez uložení změn v dokumentu, s dotazem na uložení změn a posledním způsobem je uložení všech změn bez dotazu před ukončením.

Uzavření bez uložení změn:

system.DriverQueryProc( 'dde', 'execute [Error(False)]', &nResult );
pause 1;
system.DriverQueryProc( 'dde', 'execute [Quit()]', &nResult );

Uzavření s dotazem na uložení změn (nedoporučujeme používat z důvodu neznámé prodlevy odpovědi uživatele):

system.DriverQueryProc( 'dde', 'execute [Close.All()]', &nResult );
pause ???;
system.DriverQueryProc( 'dde', 'execute [Error(False)]', &nResult );
pause 1;
system.DriverQueryProc( 'dde', 'execute [Quit()]', &nResult );

Uzavření s uložením změn bez dotazu (doporučujeme):

system.DriverQueryProc( 'dde', 'execute [Save()]', &nResult );
pause ???; (* dostatečná prodleva ... *)
system.DriverQueryProc( 'dde', 'execute [Close.All()]', &nResult );
pause 3;
system.DriverQueryProc( 'dde', 'execute [Error(False)]', &nResult );
pause 1;
system.DriverQueryProc( 'dde', 'execute [Quit()]', &nResult );
 
 | O společnosti | Produkty | Podpora | Stažení software | Stažení dokumentů | 
Moravské přístroje, a.s., Masarykova 1148, Zlín-Malenovice, 76302