「開発室」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
| 133行目: | 133行目: | ||
== Delphi 10 Seattle の不具合 == | == Delphi 10 Seattle の不具合 == | ||
Windows 10、ディスプレイ 1 (メイン: 125%)、ディスプレイ 2 (サブ: 100%) の Per-Monitor DPI で確認 | Windows 10、ディスプレイ 1 (メイン: 125%)、ディスプレイ 2 (サブ: 100%) の Per-Monitor DPI で確認 | ||
=== Per-Monitor DPI にてフォーム表示直後にスケーリングされない === | === Per-Monitor DPI にてフォーム表示直後にスケーリングされない === | ||
| 146行目: | 144行目: | ||
::ステータスバーを貼りつけるとなぜか直る | ::ステータスバーを貼りつけるとなぜか直る | ||
::WS_POPUP を含めるとなぜか直る (Position で poDefault が効かないなどの副作用あり) | ::WS_POPUP を含めるとなぜか直る (Position で poDefault が効かないなどの副作用あり) | ||
=== Per-Monitor DPI にて Constraints を指定していると正常に動作しない === | === Per-Monitor DPI にて Constraints を指定していると正常に動作しない === | ||
2016年2月23日 (火) 23:18時点における版
Mery 3 (コードネーム: Alpaka) ベータ版置き場の予定
Mery のエディタエンジン TNotePad の作者さんの開発記録によると TNotePad (真魚) の 64 ビット版は開発・公開を中止されたようです。Delphi XE2 では無理という雰囲気の内容でしたので、Mery の 64 ビット対応についても私の技術力でどこまで対応できるかは分かりませんが、最悪、やっぱ開発やめますというケースも想定してこの「開発室」でこっそりベータ版を公開していこうと思います。
予定
- 64 ビット対応
- 正規表現エンジン「鬼車」から「鬼雲」に変更
- Tidy HTML5 採用
やってみたいこと
- ツールバーの大きいアイコンが欲しい
- Glyfz の「Office 2016」が素敵。でも「Office 2010」の全部セットで $125 でも良いかもしれない
- オシャレな exe アイコンが欲しい
- デザインが統一された商用のアプリケーションアイコン一式が欲しい
- 自動アップデートの実装
- 技術的好奇心でやってみたいけど、サーバ増強が必要かもしれない
- 自動でアップデートされてしまうとブログサイトの閲覧数が確実に減る (アイコンとか買いたいのでアフィ踏んで欲しい)
- 通信するアプリはデジタル署名がないとノートン先生に消される率が高そう
開発環境
- Embarcadero Delphi XE2
- Delphi 10 Seattle だとオーバースペック
- exe のファイルサイズが 400KB 程膨らむけど Delphi 10 Seattle よりはだいぶマシ
- ちなみにその 400KB は XE2 から搭載されたスキン機能のせいらしい
- Microsoft Visual C++ 2008
- Visual C++ 2015 だとオーバースペック
- 鬼雲、Tidy、Hunspell の 32 ビット版、64 ビット版がそれぞれビルドできれば何でも良い
現状
- 本体の 64 ビット対応
- Active Script の 64 ビット対応がヤバかった
- Tidy HTML5 採用
- なんかできそうな気がしてきた
- 鬼雲 64 ビット版のビルド
- 良く分からなかったけどなんかできたっぽい
- ヘッダの 64 ビット対応もほぼ完了
- Hunspell 64 ビット版のビルド
- そもそも 64 ビット版なんてないし、64 ビットでビルドすればいいだけなのか謎
- Tidy HTML5 64 ビット版のビルド
- そもそも MSVC でビルドする方法が分からない
問題
- 64 ビット対応しても恩恵少なくね?
- TNotePad の設計上、大きいファイルの扱いは苦手
- 開いているファイルすべての合計が 2GB 以上いけるようになるので、まあ恩恵といえばそれぐらい
- フラットデザインにするかどうか?
- 私はまだ Windows 7 なのでフラットデザインが似合わない
- Delphi XE2 ではビルド番号の自動更新が無くなってる
- ビルド番号があると「がんばってる感」があるんだけど、まぁ無くても良いか
- Delphi XE2 だと不具合でリソースが英語 (1033) になる
- それほど問題はなさそうだけどなんだかなぁ…
既知の不具合
- 印刷プレビューがマルチモニタ対応していない
- → がんばる
ご意見・ご要望
- Tidy HTML5
- → 実験中
- (検討) アウトラインのドラッグドロップで並べ替え
- → できなくはない気がするけど、ツリービューのドラッグドロップを Delphi でやるのが面倒
- (検討) 自動マーカー、手動マーカー
- → 面白そうだけどかなり大変
- (検討) 開いているファイルから置換
- → なかなか大変
- (検討) バックアップ
- → 個人的には必ずオフにする機能なので作るのめんどい
- (保留) EXE アイコンがダサい? 有志の方作成:ファイル:Icons.zip
- → EXE アイコンってアプリケーションの顔だと思うので簡単には決められない
- (保留) 単語分断折り返し?
- → 折り返しは内部でキッチリ決まってるので手の着けようがなさそう
- (保留) 矩形選択で文字入力したときにイイ感じに入力されると良いな
- → 作ってみたけど問題多すぎ
- (保留) CSV / TSV 編集機能の研究
- → Excel 使え!?
- (保留) トリプルクリックからの論理行選択
- → 物理行選択派な人もいそう
- (完了) ウィンドウの縦分割
- → 実装した。上下左右同時分割は実装しない
- (完了) 特殊文字入力のインターフェイス考察
- → 特殊文字を入力するマクロを同梱した
- (完了) 書き換え禁止モードをわかりやすくする?
- → タブに鍵マークを表示するようにした
- (完了) 先頭大文字で Don'T になっちゃう
- → アポストロフィは無視するようにした
- (完了) 最大化→最小化→復元時のファイルの更新チェックを走らせる手段の調査
- (完了) バイナリなどを開いたときの確認ダイアログで「キャンセル」したい
- (完了) 文字間隔の設定
- (完了) グレーアイコンが濃すぎる?
- (完了) 新規作成時のエンコードの指定方法について検討
- (完了) ドラッグ中にメッセージボックスを表示させるとフリーズすることがある
- (完了) 起動時引数行番号と一緒に桁番号も指定
- (完了) 単語補完の自動起動
- (完了) 0x200Fの挙動
- (完了) 画面中央付近でキャレットを固定したい
- → ScrollMargin を最大値に設定
- (完了) 起動時引数エンコードの指定
- (完了) 起動時引数編集モードの指定
- (不要) SJIS、UTF8 とかごとの文字コード表示
- → UTF8 標準化により却下
アイコン
- パブリックドメインだし SVG なので使いやすい。種類も豊富なので他のアプリとデザインを統一できる
- 試しにこのアイコンに変更してみたらサイズが 100KB も縮んだw
- 完全無料。PNG (256x256) と AI 形式がある。他にも有料 (割と安い) で各種アイコンあり
Delphi 10 Seattle の不具合
Windows 10、ディスプレイ 1 (メイン: 125%)、ディスプレイ 2 (サブ: 100%) の Per-Monitor DPI で確認
Per-Monitor DPI にてフォーム表示直後にスケーリングされない
- フォームにボタンでも適当に貼りつけて起動するだけで発生
- BorderStyle が bsSizeable の場合が駄目っぽい
- 起動直後に WM_DPICHANGED が飛んでこないためスケーリングされないようだ
- ステータスバーを貼りつけるとなぜか直る
- WS_POPUP を含めるとなぜか直る (Position で poDefault が効かないなどの副作用あり)
Per-Monitor DPI にて Constraints を指定していると正常に動作しない
- Vcl.Forms.pas の問題
- ScaleConstraints(M, D) で制約のサイズを変更している箇所がフォームのサイズを変更した後になってるため
- 先に ScaleConstraints(M, D) を呼ぶようにしてやれば直る
procedure TCustomForm.ChangeScale(M, D: Integer);
var
PriorHeight: Integer;
begin
// modified begin
ScaleConstraints(M, D);
// modified end
ScaleScrollBars(M, D);
ScaleControls(M, D);
if IsClientSizeStored then
begin
PriorHeight := ClientHeight;
ClientWidth := MulDiv(ClientWidth, M, D);
ClientHeight := MulDiv(PriorHeight, M, D);
end;
Font.Height := MulDiv(Font.Height, M, D);
// modified begin
(*
ScaleConstraints(M, D);
*)
// modified end
end;
スポンサーリンク
