« 2006年1月 | トップページ | 2006年6月 »

☆MessageDlgの入力

プログラムを入力中、たまたま間違えて、CTRL+Dを押したところ、MessageDlgの入力補助用ダイアログが表示されました。いつもmtConfirmationとか長い単語で面倒だなって思っていたんですが、チェックボックスを選択するだけで簡単にコードを作ってくれます。※文字の入力部分が文字化けするのが残念ですが。

MessageDlg('こんなにボタンは表示させないけど', mtConfirmation, 
 [mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
   mbAll, mbNoToAll, mbYesToAll, mbHelp], 0);

[2007/09/02]
Delphi 2007では動作しないし、HELPにもないので、Delphi 2006 Update2でも調べてみました。 結果として、こちらもHELPにもないし、このダイアログは表示もされません。この記事を書いたときには、Update2はインストールしていなかったのですが、アップデートでなくなったんでしょうか?わざわざ削除する機能でもないでしょうし、謎です(^^;

|

☆グラデーションの描画

GraphUtilユニットの中に縦、横の2種類ですが、グラデーションを描画する手続きを見つけました。

type
  TGradientDirection = (gdHorizontal, gdVertical);

procedure GradientFillCanvas(const ACanvas: TCanvas;
  const AStartColor, AEndColor: TColor; const ARect: TRect;
  const Direction: TGradientDirection);

これを利用すると、ツーバー以外でも自分でバックをグラデーションする?ことができます。

uses
  GraphUtil;

procedure MyDraw(Image: TImage);
var
  Rect: TRect;
begin
  Rect := Image.ClientRect;
  GradientFillCanvas(Image.Canvas,clWhite,clGradientInactiveCaption,Rect,gdVertical);
  SetBkMode(Image.Canvas.Handle, TRANSPARENT);
  Image.Canvas.Font.Color := clBlue;
  Image.Canvas.Font.Style :=[fsBold];
  Image.Canvas.Textout(Rect.Left, Rect.Top, 'グラデーション');
end;

|

★XPmanコンポ

XPmanコンポをフォームに貼り付けると、Edit1.SelTextの返す値がおかしくなります。
マニフェストを作成した場合でも同じです。
(Delphi7でもDelphi2005でもBDS2006でも)

|

■Borlandが開発ツールを売却

今、Delphi-MLにて「Borlandが開発ツールを売却」という記事を知りました。
こんなに苦戦しながらも、がんばって使っているというのに、悲しいです。こんなニュースが流れてくると製品としての完成度の低さも「どうせ売るんだから」という態度に思えてしまいます。今後どうなるのかわかりませんが、製品としてより良いものにしてほしいと願うばかりです。

ITmedia News
Borlandが開発ツールを売却、Segue Software買収

|

★動作が遅い!その3

やはりIDEでの編集が遅すぎてプログラムができません。
現段階では、少し遅くなったなっと感じたら終了して再起動して使うしか方法がないのかな?

|

☆動作が遅い!その2

前回の対応では適切でなかったようで、再びIDEでの編集が遅くなりました。
インターネットでちょっと調べてみますと、既に対応方法を書いておられるページがありました。

レジストリの下記の値を削除すればいいらしいです。
HKEY_CURRENT_USER\Software\Borland\BDS\4.0\known IDE Packages\DelphiのTGIDE100.bplという値

iPentec Delphi2006 情報

|

☆動作が遅い!

長時間プログラムしていると、procedureと入力するだけでも20秒ぐらいかかるようになりました。(CPU Celeron 2.5GHz Mem512MB)
このプログラムは、コンパイル後の実行ファイルサイズが3MBぐらいありますが、Delphi7では快適にプログラムできていました。そこで、オプション→エディタ設定で、バックアップファイルの作成のチェックを外すと快適に動作するようになりました。自分でバックアップすれば問題ないので、これで使っていきます。

|

☆IdTCPClientのOpenWriteBuffer

Indy9のIdTCPClient.OpenWriteBufferがIndy10でエラーになりましたので、次のように書き換えました。

 //Indy9
  I := Stream1.Size;
  FIdTCPClient.OpenWriteBuffer;
  FIdTCPClient.WriteBuffer(Stream1.Memory^, I);
  FIdTCPClient.CloseWriteBuffer;

        
 //Indy10
  FIdTCPClient.IOHandler.WriteBufferOpen;
  FIdTCPClient.IOHandler.Write(Stream1);
  FIdTCPClient.IOHandler.WriteBufferClose;
別に名称まで変える必要ないと思うんだけど・・・。

|

☆DBExpressでトラブル<解決>

前回の問題について Delphi & Borland Users Forum で、にたろう氏より解決方法を教えて頂きました。
パラメータの設定とClientDataSetの開閉の位置を下記のようにすると問題なく動作するようです。

SQLDataSet1.ParamByName('ID').AsInteger := ID;
ClientDataSet1.Close;
ClientDataSet1.Open;

バージョンが変わったんだから仕方ないかも知れませんが、個人的には、Readme等にも特に仕様変更が載っていないのに従来のコードできちんと動作しないのは不満です。

|

« 2006年1月 | トップページ | 2006年6月 »