ども、Norimakiです。

今回はStringGridのセルの背景色を変えるという事でやってみようかと思います。
背景色を変えるという事で、OnDrawCellというイベントを使います。

StringGridには問題があるらしく、DefaultDrawingをFalseにしてからでないと
不具合が生じるなどと言われていますが、個人的にはその不具合について
どういうものなのかわからないので、取り合えずTrueで使ってます。

何か問題が発生すれば考えます。

「TStringGridのセルの背景色を変える」の続きを読む…

ども、Norimakiです。

アプリケーションではデータの管理が必要になってきますが、
そのたびごとにいろいろと仕組みをごちゃごちゃといじるのは面倒だなと。

そう思いまして、KVSマネージャなるものを作ろうかと思いました。
データの作成を同じ手続きで作れるようにと。

KVSというのは、Key-Value Store(キーバリューストア)と呼ばれるもので、
データを格納するのにキーと値(バリュー)を1:1で組み合わせるという
方式なんだそうです。

良くわかりませんが、キーが決まれば値が決まる。という方式の様です。

それを使ってデータ格納クラスを作ってみようかと。

「KVSマネージャを作ってみる」の続きを読む…

ども、Norimakiです。

今回はアプリケーション固有のファイルについて書いてみます。

これは単にそのアプリケーションがどのような挙動をするのか
という事を設定するだけのファイルになります。

まずはソースをご覧ください。

「アプリケーション固有のファイル 【GV_Application】」の続きを読む…

ども、Norimakiです。

今、開発環境の再構築をしていて、やっとスタートラインに
立てるかどうかというところまでやってきました。

基本的にやりたいことは、

・アプリケーションを終了した際、次回起動の為にフォーム位置・サイズを覚えておく。
・その他のコンポーネントのプロパティを保存しておく
・これらの作業を簡単な手続きで済ませられるようにする。

こんな感じです。

「複数ユーザーに対応するにはどうすればよいか?」の続きを読む…

ども、Norimakiです。

今回はプロパティリストクラスを書いてみました。
こちらもまだ発展途上で中途半端な機能がありますが、
今の所、問題がないのでそのまま使っています。

そもそも何ができるかという事ですが、
ソースにも書いてありますが、

・コンポーネントとプロパティを登録して(AddComp)
・コンポーネントのプロパティ値を取得してリスト化して(SetCompProp)
・リスト化したコンポーネント値をコンポーネントに設定する(RestoreCompProp)

基本的にはこの3つを行います。

コンポーネントのプロパティ値をリスト化して保存し、
必要に応じてプロパティ値を回復するというクラスです。

用途としては、フォームの位置やサイズ、
スプリッタでサイズを変更したパネルの幅などを記憶しておき、
アプリケーションの終了時にファイルなどに保存。

そして次回アプリケーションを起動したときに、
そのファイルを読み込んでプロパティ値を回復させる。

という感じで使用しようと思っています。

これに、以前紹介したイベントマネージャを組み合わせて、
FormCreate部でコンポーネントとプロパティを登録するだけで
読込・復帰・保存をやってくれるようにしています。

中には自分で作った関数などを使用していることもあって、
このままでは使えませんが、そのうちにその部分も合わせて
記事にする予定ですので、しばしお待ちください。

「プロパティリスト」の続きを読む…

ども、Norimakiです。
とりあえず、今使っているイベントマネージャのソースです。

色々と手直しするところがあるんですが、
現時点ではこれで動いているのでこのまま使っているという次第で。

基本的にはAddEventでイベントを登録して、
DoEventsでイベントを実行させるという手順になります。

実際にイベントを実行させる場所としては、

>> Delphiのプロジェクトファイルをいじる その2

でも挙げた通り、システム的にはプロジェクトファイルになります。

あとは、アプリケーションごとに必要な場合は
アプリケーションでその都度、DoEventsを呼べば
登録したイベントを呼んでくれます。
「イベントマネージャ 【ソース編】」の続きを読む…

ども、Norimakiです。
今回はアプリケーションベースファイル【NY_Application.pas】について。

>> Delphiのプロジェクトファイルをいじる その2

ここら辺(↑)で使用する関数を NY_Application.pas で定義します。基本的にはアプリケーションの開始と終了の際に処理する部分を定義します。

・アプリケーションで使用する共通クラスの領域確保、解放
・多重起動チェック
・エラーメッセージ、エラーコードの定義
・システムエラーメッセージ処理
・浮動小数点例外処理
・システム変数の設定

・フォーム位置、サイズの保存、復元
・ユーザーアカウント処理
・IniFile処理
・ライセンスチェック

こんな感じです。

で、NY_から始まるユニットは基本的にアプリケーションごとの変更は不要です。
なので、共通ファイルなわけですが。

アプリケーションごとに変更が必要なファイルに関しては、GP_といった
Gから始まるユニット名になっています。

「アプリケーションベースファイル 【NY_Application.pas】」の続きを読む…

ども、Norimakiです。

以前、

>> Delphiのプロジェクトファイルをいじる

ということで、プロジェクトファイルについて書いてみました。
その際、

・GP_StartUpCheck
・GP_Init
・GP_Fin
・GP_Finalize

の関数については改めてという事だったので、
ここでその関数について軽くご紹介しておきます。

「Delphiのプロジェクトファイルをいじる その2」の続きを読む…

ども、Norimakiです。
2つのStringGridの左上の位置を同期させたいという場合があります。

正確には、左上のColあるいはRowのどちらか一方の同期。
ということになりますが。

具体的にはグリッドで表のようなものを表示させる際に、
横に長い表になる場合、一番左のタイトルだけは固定で表示させておきたい。

なんていう場合は多いと思います。
そういう時に使えそうなTipsです。

「2つのStringGridの左上の位置を同期させる」の続きを読む…

ども、Norimakiです。
今回はTVirtualStringGrid的なものが出来ないか考えてみようと思います。

TreeViewに関してはTVirtualTreeViewなるコンポーネントが存在します。

TVirtualTreeViewを使えばTVirtualStringGrid的な事も出来るんですが、
Grid使うならやっぱりStringGridかなとも思うわけで。

ということで、チャレンジ的にちょっとやってみようかと思い立ちました。

「TVirtualStringGridを考えてみる」の続きを読む…