記事カテゴリ

ユーザー機能

カウンター


 2017年12月13日(水) 14:08 JST

[Delphi] アプリケーションの多重起動を防止する (Win32)

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    7,434

Atomを使う方法 FindWindow を使う方法などアプリケーションの多重起動防止方法にはいろいろありますが、 ここではもっとも実装が簡単だと思われるMutexを使った方法をご紹介します。
Windows APIの CreateMutex を使用して Mutex を作成します。すでに同じ名前を持つ Mutex が作成されていた場合、 CreateMutex は「ERROR_ALREADY_EXISTS」を返します。この場合実行を進めると二重起動となるので、 すぐに RelaseMutex で Mutex を開放して終了します。その他の場合には、通常通りプログラムを起動します。

※注意 CreateMutex を使用するには、uses 節に Windows ユニットを追加する必要があります。

[Delphi] 長いファイル名の途中を省略する

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    3,411

MinimizeName 関数を使用します。
インストール画面などでよく見かける、ファイル名の途中を...で省略した文字列を作成するために、DelphiではMinimizeName関数が用意されています。

注意 この関数を使用するためには、usesにFilectrlユニットを追加する必要があります。

[Delphi] TMemoで、先頭行/最終行/指定行へ移動する

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    12,550

Windows APIをいくつか使って移動行数を計算し移動しています。

  • EM_LINEFROMCHAR  現在のカーソル位置を取得するのに使用
  • EM_LINESCROLL       行を移動させるのに使用
  • EM_GETLINECOUNT   TMemoの行数を取得するのに使用
  • EM_LINEINDEX          現在のカーソル位置を設定するのに使用

[Delphi] 2行表示のリストを作成する

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    2,805

2行表示のリストを作成するには、OnDrawItem イベントと OnMeasureItem イベントを使用します。
以下のステップで行います。

  1. OnMeasureItemイベントで2行分表示するための高さを確保します。
  2. OnDrawItemイベントでCanvasにテキストを描画します。
  3. Styleを「lbOwnerDrawVariable」に変更します。(自分で中身を書き換えますよ!という定義)

この方法は、TCheckListBox でも使用できます。(2行目が固定で“2行目”になっているので、お好みに合わせて変更してください。 また、Styleを「lbOwnerDrawVariable」に変更するのを忘れないでください。)

[Delphi] ボタンのキャプションを2行にする

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    5,575

ボタンのキャプションを2行表示したいと思ったことはありませんか?
実はボタンのキャプションを2行にするのはすごく簡単です。しかし、コンポーネントにしないで実現することは難しいのでコンポーネントを作成してみます。
作り方は、TButtonを継承したボタンを作成します。このボタンのCreateParamをオーバーライドします。
ここでウィンドウ作成パラメータ(Style)にBS_MULTILINEという値を付けl加えることで、2行表示ができるようになります。

注 コンポーネントの作成は[コンポーネント]メニューの新規作成から行えます。


サイトカレンダー

サイトカレンダーをスキップ

2017年 12月
«
»
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

新着情報

記事 新着(24時間)

-

コメント 新着(2日)

-

トラックバック 新着(2日)

-

リンク 新着(2週)

新しいリンクはありません

ファイル (14日)