« 2004年5月 | トップページ | 2004年7月 »

■@ITの記事

@nifty FDelphiフォーラムで、紹介されていたものですが、@ITのサイトで
.NET完全対応で生まれ変わったDelphi 8
という特集があります。

|

■Delphi8完全開発ガイド

今日、本屋でdotNETマガジン(翔泳社)という雑誌を見つけました。この雑誌は、今までも店頭で見たことはあるのですが、内容がほとんどVB.NETネタなので、購入したことはありませんでした。
しかし今月号(7月号)には、特別付録小冊子「Delphi8完全開発ガイド」というものがついているではないですか。ということで、早速購入して読んでみました。内容は、主にWin32アプリを.NETアプリへ移行する際の注意点をまとめたものとなっています。私の感想としては、もっと移行の際の問題点をクリアする方法を示してほしかったです。(付録の小冊子に要望すること自体無理があるかもしれませんが)例えば、Delphi8にはJpegユニットがありませんが、その解決方法としてDelphi7でDLLを作成し、それをDelphi8で使うというアイディアがありましたが、DBのBLOBフィールドにJPEGを入れるような場合には、この方法ではクリアできません。(DBに画像データを入れるべきじゃないというのは、この際別問題として)
又、文字列操作の.NET化を説明するための例題に、わざわざコンパイラのような難しいものを取り上げなくても、もっと簡単なサンプルの方がわかりやすいんじゃないかと思いました。
(えっ、肝心の本誌の方ですか?Delphiの記事がないので読んでないです。)

|

☆DBGridのマウスホイール

Delphi7で作成したプログラムが、WindowsXP上でマウスホイールできないので、なんとかならないかと相談を受けました。このプログラムは、社内用に開発したもので、OSは、Windows98(SE)、2000Pro、XP(Pro)、メーカーも様々な多数のマシン上で使っていますが、今まで問題になったことはありませんでした。しかし、この度、新規に購入したマシン全てでマウスホイールできないという現象が発生しましたので、下記のようにCM_MOUSEWHEELメッセージを処理して対応しました。

TMyDBGrid = class(TDBGrid)
private
  procedure CMMouseWheel(var Unused: TCMMouseWheel);
      message CM_MOUSEWHEEL;

  (略)

procedure TMyDBGrid.CMMouseWheel(var Unused: TCMMouseWheel);
var
 iRow,iRowCount:integer;
 Delta: integer;
begin
 Delta := Unused.WheelDelta;
 if (0 < Delta) then //上スクロール
  begin
   if (Self.Row <> 1) then  //最上段でない場合
    //最上段に移動させます。
    Self.DataLink.DataSet.MoveBy(-(Row-1))
   else
    //3行スクロール
    Self.DataLink.DataSet.MoveBy(-3)
  end
 else
  begin  //下スクロール
   iRowCount:= Self.RowCount - Self.FixedRows; //表示行数の計算
   if (iRowCount > Self.Row) then
    begin
     //最下段に移動させます。
     iRow:=Self.Row;
     Self.DataLink.DataSet.Moveby(iRowCount-iRow);
    end
   else
    //3行スクロール
    Self.DataLink.DataSet.MoveBy(3);
  end;
 Unused.Result := 1;
end;

|

« 2004年5月 | トップページ | 2004年7月 »