Delphi
Delphi は Turbo Pascal から発展した(?) Windows アプリケーションの開発ツール。
Borland, Inprise, CodeGear などブランドの変遷を経て、現在は エンバカデロ の製品。
ブックマーク http://www.delicious.com/nishimotz/delphi
プロジェクト kikiwwl
過去のブログ記事
- Delphi+PHP Delphi 2007 の Indy コンポーネントを使い、ファイルを HTTP 経由でアップロードし、PHP5 でダウンロードする動作を確認 (2007)
- CodeGear RAD Studio 2007 Professhonal TStringList
- Borland Developer Studio 2006 CSVファイルの扱い
- http://www.amazon.co.jp/exec/obidos/ASIN/479801768X Windowsプログラミング逆引きクロス大辞典
C++Builder
since 2015-02-25
How to make your Delphi applications more accessible
NVDA で操作できるアプリを作る方法を調べてみる。
以下、C++Builder XE7 のインストーラーで英語を選んでインストールした場合。
FMX でも VCL アプリケーションではなく Others の中の「SDI Application」を選ぶと、わりとアクセシブルなアプリのテンプレートとして使える。
TLabel はオブジェクトナビゲーションで操作できないので、TStaticText を使うこと。
VCL の Hint プロパティはステータスバーに表示されるが、MSAA の accName などには反映されない。
フォームは右クリック View as Text して DFM ファイルを見ると、オブジェクトナビゲーションに対応したオブジェクト構造を見ることができる。
なぜか一番上に書いたものがオブジェクトナビゲーションでは後ろに配置されるので、逆順に並べなくてはならない。
TMemo にフォーカスを移動すると、キャレットがある行だけが通知されるらしい。
2行目以降や空行にキャレットがある状態で、いったん Tab して Shift+Tab で戻ってくると非常に違和感がある。
OnEnter イベントハンドラにこんなことを書いて、キャレットを先頭にむりやり戻してみる。。
void __fastcall TSDIAppForm::Memo1Enter(TObject *Sender) { Memo1->SelStart = Memo1->Perform(EM_LINEINDEX, 0, 0); }
Delphi for Python
since 2022-03-23
https://github.com/Embarcadero/DelphiVCL4Python
https://github.com/Embarcadero/DelphiFMX4Python
https://blogs.embarcadero.com/introduction-to-python-gui-development-with-delphi-for-python-vcl-fmx/
- 動画の説明によると Delphi でフォームを作って、Python 用に(バイナリファイルとして)エクスポート、それを Python + delphivcl/delphifmx から読み込んで GUI アプリとして配布、ということができる
以下、Windows 11 + Python 3.10 (x64) にて。
> pip install delphivcl > pip install delphifmx
https://github.com/Embarcadero/DelphiVCL4Python/blob/main/samples/HelloWorld/hellodelphivcl.py
https://github.com/Embarcadero/DelphiFMX4Python/blob/main/samples/HelloDelphiFMX.py
<html> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">なるほど Python で VCL と FMX の GUI 作れた。。すこしはアクセシブルな GUI が作れるといいのだが NVDA ではウィンドウのタイトルしか読み上げなかった。無償で使えるのはありがたい <a href="https://t.co/P6OCbEcTrp">pic.twitter.com/P6OCbEcTrp</a></p>— にしもつ (@24motz) <a href="https://twitter.com/24motz/status/1506443588414042115?ref_src=twsrc%5Etfw">March 23, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">さすがに VCL はちゃんと NVDA で読み上げるアプリになっていた。 <a href="https://t.co/ZnRvDATiQ9">pic.twitter.com/ZnRvDATiQ9</a></p>— にしもつ (@24motz) <a href="https://twitter.com/24motz/status/1506464966093668356?ref_src=twsrc%5Etfw">March 23, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </html>