Thursday, December 01, 2005

Delphi / DDE #4

「TDdeClientItem」で、サーバ側の値の変化に合わせて、データを受け取ります。空フォームに TDdeClientConv x 1 を追加して、起動時にリンクを接続、終了時に切断するようにしておきます。

 さらに、TButton x 1, TLabel x 1, TDdeClientItem x 1 を追加、リンク接続時に、以下をコードを加えます。

// クライアントの関連付け
DdeClientItem1.DdeConv := DdeClientConv1;

// アイテムの設定
DdeClientItem1.DdeItem := 'item1';

 「.DdeConvプロパティ」に、先に作った TDdeClientConv を指定。「.DdeItemプロパティ」に、読み込みたい「アイテム」を設定して関連付けます。リンクが接続済みならば、データは「.Text プロパティ」に入ります。

 ボタンのイベントに

procedure TForm1.Button1Click(Sender: TObject);
begin
 // データ読み出し
 Label1.caption := DdeClientItem1.Text;
end;

 実行して、ボタンを押せばサーバの topic1 -> item1 の値が表示されるはずです。ただ、それはボタンを押した時点での値です。

 button1 を削除して、DdeClientItem1 の 「OnChange イベント」に

procedure TForm1.DdeClientItem1Change(Sender: TObject);
begin
 // データの受け取り
 Label1.caption := DdeClientItem1.Text;
end;

 サーバ側の項目の値が変化した時に発生するのが、「OnChangeイベント」です。ここで、データを受け取る処理を入れておけば、常に最新のデータを扱えることになります。値の変化が、2秒後なのか、20秒後なのか、20分後なのかプログラムする側は、気にする必要はなく、イベントにデータを更新する処理を入れればいいだけです。
 <宿題2>

 ・TLabel x 6
 ・TDdeClientConv x 2
 ・TDdeClientItem x 6

 ・何もしなくてもserver側と同期したデータがラベルに表示される

0 Comments:

Post a Comment

<< Home