小ネタ

接続情報の確認

TFDConnection 接続エディタの情報タブに表示される情報。開発環境なら、TFDConnectionを配置すれば確認出来るんですが、実行環境でも確認出来ないかと調べて見た所 TFDConnection.GetInfoReport で同じ情報が取得出来るようです。 FormにTButtonとTMemoを配…

Debug時のエラー

Delphiでプログラムを書いていざデバッグ実行を実行すると、ntdll.dllがどうのってエラーでIDEから落ちちゃってデバッグ不能って事態になったとき、レジストリエディタを起動して DelphiXE8の場合 HKEY_CURRENT_USER\Software\Embarcadero\BDS\16.0\Debuggin…

GetItについて

久々の更新。XE8に追加されたパッケージ管理ツールのGetIt。ワンタッチでパッケージのインストール/アンインストールが出来る中々便利なツールです。 起動してみると判りますが、Delphi用とC++Builder用のそれぞれのパッケージが並んでいるので同じ名前のパ…

イベントの再入防止

どこかにTipsとかでありそうなネタだけど。 イベントに入ってきた所で最初にイベントに対してnilを代入する。 処理が終わったらイベントにメソッドを設定し直す。 procedure TForm1.Button1Click(Sender: TObject); begin TControl(Sender).OnClick := Nil; …

TreeView項目のD&D移動

こちらの掲示板の話題です。使用するイベントは、TreeViewのOnDragDrop,OnDragOver,OnMouseDown,OnStartDragの4つです。 usesにWinapi.CommCtrl(XE以前の場合はCommCtrl)を追加。項目の移動先が下記のように表示されます。移動先の表示はTVM_SETINSERTMARK…

Unicode版TEditor の上書きモードの処理修正

Unicode版のTEditor 利用させてもらってるんですが、先日上書きモードで編集してるときに文字が余分に上書きされると報告があがって来ました。とりあえずの修正でまともに動くようになったようなのでメモ。HEditor.pasのTEditor.PutStringToLineメソッドで、…

FirebirdとUDF

思い出したのでメモ。 Firebird1.5でUDF作成して使ってたんですが、環境のアップデートで2.5にバージョンアップする事になり確認してたんですが自作のUDFを呼ぶとサーバーが落ちるという現象に遭遇。 で、色々調べて行き着いた結論が呼び出し規約が違う。ネ…

Indy で添付ファイル付きのメールを送る

Indyを使って添付ファイル付きのメールを送る方法をメモ。基本的な部分はDEKOさんの所で説明されてる方法そのままです。 ただ、その中でContentTypeを指定している部分を削除して指定しないようにするか、または'multipart/mixed'を指定するだけです。 後は…

項目のD&D移動時の移動位置表示 (TabControl/PageControl)

今回は TabControl/PageControl のD&Dでのタブ移動の処理です。余りよろしくない方法な気もしますが。まずは、TabControlでもPageControlでも同じイベント処理が使えるように、またPageControlでタブの移動が出来るようにTCustomTabControlに対するヘルパー…

項目のD&D移動時の移動位置表示 (リストボックス)

なんと無くメモ。リストボックス等の項目をD&Dで移動出来るようにした場合の項目の移動先を表示する処理。リストボックスの場合。FPrevIdxはフォーム変数です。 // OnStartDragイベント FPrevIdxを初期化する procedure TForm1.ListBox1StartDrag(Sender: TO…

バージョン情報を取得する(RTTI使ってみた)

バージョン情報を取得する処理を書いてみました。 RTTIを使う為に バージョン情報を保持するクラスを作ってます。 RTTIはフィールドというかプロパティに対するアクセスしかしてませんが、中々面白いですね。プロパティへのアクセスをループで回せるので処理…

PopupModeプロパティの動作の謎

FormのプロパティにPopupModeというプロパティがあります。このプロパティは複数のFormのZオーダーの管理に影響を与えるプロパティらしいのですがいまいち良く判りません。Form1(MainForm)とForm2があったとして、Form1のFormStyleがfsStayOnTopの時、Form…

日付関係の関数

昨日のエントリで曜日とか祝日の判定処理を作ってる時に気がついたのでメモ。日付関係の判定処理で似たような名前の微妙に処理が違う関数がある模様。 NthDayOfWeekとWeekOfTheMonth NthDayOfWeekは引数で渡した日が月で何番目の曜日かを返して、WeekOfTheMo…

TStringListのOwnsObjectsプロパティ

最近本格的にDelphi2009を使い始めて気がついたんですが、TStringListにOwnsObjectsプロパティが追加されてますね。これをTrueに設定しておくと、Objectsプロパティに代入したTObjectを継承したオブジェクトは関連付けられたアイテムが破棄されるときに一緒…

Tagプロパティを使う

かなりピンポイントなエントリです。 Twitter上で、同じようなイベント一杯書きたく無いって感じのツイートがあったので私はこんな感じでやってますよってのを。質問であったのは、メニュー選択でウィンドウサイズを変更する処理での事でした。 ウィンドウサ…

IEのProxy設定を取得する その2

前回の記事を書いてから良く考えて見直してみると、Proxyの例外を無視してます。 それに、「設定を自動的に検出する」とか「自動構成スクリプトを使用する」にチェックが入ってると機能しないんじゃないかと。 そこで、その辺りも加味してProxyを取得する関…

IEのProxy設定を取得する

Delphiメーリングリストにアップされた東京電力情報のプログラム プロクシ環境下で使えるようにしようかと思ってIEのProxy設定を取得する方法を調べてみた所、レジストリから取得する方法が見つかりました。ただ、私の環境だとポリシーを使ってる為なのか良…

ビルドイベントで使用するマクロ

Rad Studio XEのプロジェクトオプションで指定出来るビルドイベントがありますが、ここの編集画面を開いた時のマクロが空っぽになってます。 まあ、ビルドイベントはあんまり使わない機能かなとも思うんですが使うとなると不便なんでDelphi2009の編集画面か…

Window位置の保存・復元処理

ウィンドウの位置・サイズを保存するとき、Width/Heightをそのまま保存するとウィンドウを最大化してる時に最大化状態のWidth/Heightが保存されてしまうので悲しい状態になります。そこで、GetWindowPlacementを使うと最大化状態であっても通常状態のウィン…