Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

ColorPicker

色選択ダイアログ

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

ColorPicker (VCL / Delphi)

VCL(Delphi)向けに実装した シンプルかつ実用的なカラーピッカーコンポーネント一式です。
RGB 編集・Hue バー・SV エリア・スポイト(画面ピック)を組み合わせた
モーダルダイアログ形式のカラーピッカーを提供します。

スポイト機能は
画面キャプチャ + 前面フォーム方式を採用しており、
他アプリに入力を送らずに「他アプリ上の色を拾っているように見せる」動作を実現しています。


特徴

  • VCL 標準コンポーネントのみで構成
  • RGB / Hue / Saturation / Value をすべて操作可能
  • 数値入力とマウス操作の完全同期
  • 画面スポイト機能付き
    • 他アプリを触らない
    • 左クリックで確定
    • 右クリック / ESC / 非アクティブ化で即キャンセル
  • モーダルダイアログとして簡単に利用可能
  • マルチモニタ非対応(意図的に単純化)

構成

コアユニット

ユニット 内容
ColorPickerPick 画面キャプチャ+前面フォーム方式のスポイト
ColorPickerHueBar Hue(色相)選択バー
ColorPickerSVArea Saturation / Value 選択エリア
ColorPickerRGBEditFrame RGB 数値入力フレーム

UI 統合

ユニット 内容
ColorPickerDialogFrame 各ピッカーを統合するフレーム
ColorPickerDialog モーダル表示用のダイアログフォーム

サンプル

ユニット 内容
MainForm 使用例(Panel と色のやりとりのみ)

使い方(基本)

delphi
uses ColorPickerDialog;

procedure TFormMain.Button1Click(Sender: TObject);
var
  Form : TFormColorPickerDialog;
begin
  Form := TFormColorPickerDialog.Create(nil);
  try
    Form.Color := Panel1.Color;
    if not Form.Execute then Exit;
    Panel1.Color := Form.Color;
  finally
    Form.Free;
  end;
end;
  • Color プロパティに初期色を設定
  • Execute が True の場合のみ色を反映
  • Cancel 時は何も変更されません

スポイト操作

操作 動作
左クリック 色を確定
右クリック キャンセル
ESC キャンセル
フォーム非アクティブ 即キャンセル

※ スポイト中は画面を 静止画像として扱います


設計方針

  • 実装は VCL の素直な使い方を優先
  • フレームとダイアログを分離し、再利用可能な構成
  • スポイトは OS フック等を使わず、安全側の設計
  • 拡張よりも 安定性と分かりやすさを重視

制限事項

  • マルチモニタ非対応
  • スポイト中の画面更新(動画・アニメーション)は反映されません
  • DPI スケーリングは環境依存(必要に応じて調整してください)

ライセンス

用途に応じて自由に利用・改変してください。
(必要であればライセンス表記を追加してください)


補足

本実装は
「スポイト機能が Windows / VCL 的に成立するか」
を確認した PoC を元に整理・統合したものです。

そのため、構造は意図的に単純で、
実アプリへの組み込みを前提としています。