∵ なぜならば

映画とかネットとかパソコンとかコミックとか音楽とか……

あまり知られていない機能 2020/11/28

2020-11-28 10:02:58 | NanaTerry
・「設定ダイアログ」で「Ctrl+F」と打つと右ペインに「設定の検索」が出てきます
ここに文字を入力すれば該当する項目が出てきます
Wクリックでそのページに飛ぶことが出来ます
また右クリックからその項目内容をコピーすることが出来ます


掲示板で質問するときに正確な名称を知ることが出来ます
コピー結果の一番下の項目は私がプログラムで調べるためのものですd(^^)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

覚え書き:UniCode 混じりの文字列長さ

2020-10-24 10:54:27 | Delphi

その昔日本語(Shift-JIS)は半角と全角しかなかったので「半角文字か2バイト文字」とか判別していた
「半角かな」も混じっていたし当時のコンパイラの長さを求める関数も「あいう」なら「6」と返していた
(秀丸マクロは互換性のためいまでも全角文字は2文字として数えます)
UniCode が広まってもうその考えもほぼほぼ不要になってきて全ての種類を判断して「文字」として数えてくれるようになった
ただ簡単で便利になった反面場合によってはそんな仕様がかえって困ることになる


今回の
┌―――┐
|あいう|
└―――┘
選択文字を罫線で囲むというだけの簡単なマクロでも罫線「―」は全角なので
┌―――┐
|aいう|
└―――┘
の様な場合に判別して後ろに半角スペースを追加しなければならない
このとき UniCode が混ざると昔ながらの方法で単純に「AnsiString」に変換して長さを測るとかは出来ない
┌―――┐
|আ¶£|
└―――┘
とかなるときにどう判断すればいいのかと考えた結果単純な方法でやっつけた



//半角英数字の長さなら何文字か返す
//KiriAge が True なら小数値は切り上げ False なら四捨五入
function ASCIILength(S:string;KiriAge:Boolean):integer;
var
  F:Extended;
begin
  F:=Canvas.TextWidth(S)/Canvas.TextWidth('q');//Canvas が等幅フォント前提
  if KiriAge then
  begin
    if  Frac(F)<>0 then Result:=Trunc(F)+1 else Result:=Trunc(F);
  end else
  begin
    if F>=0 then Result:=Trunc(F+0.5) else Result:=Trunc(F-0.5);
  end;
end;

それは半角英数字の何文字相当なのかという関数
中でやってることは「とりあえず書いたらどれだけの長さになるのか」だけ

多分これで解決したんだけれどもそんなことをやっているとき秀丸を見て気づいたんだけど
同じフォントにしても微妙に違うの笑う
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

バグ修正時の覚え書き

2020-10-18 22:09:48 | Delphi
『マルチモニタで使用時マイナス座標側で最大化のまま終了したとき次回起動時にメインモニタ側に最大化表示される』
という件の調査と修正を行ったんだけど

フォーム位置の再現はオリジナル(NanaTree)の頃から JEDI の TJvDockVSNetStyle 任せで
彼は本来メインフォームのサイズや位置とかを意識しているわけではなくて全ての窓のドッキング状態を管理するコンポーネントなので最大化なども「WindowState の変更」ではなく「Align := alClient」とかいうことをしているみたいとわかる

WindowState だとアクティブなところで最大化するんだけど
「Align」の方では Windows の仕様で常にプライマリモニタの作業領域が基準になる(https://groups.google.com/forum/#!topic/delphicbuilder-ml-archive/OJ1LBlNOMJU)のが原因だったようで

結局終了時に「現在のモニタナンバー」を記録しておいて
Ini.WriteInteger('MonitorNum',Monitor.MonitorNum);
起動時に「最大化していて」なおかつ「前回のモニタを違う」場合
if (IsZoomed(Self.Handle)) and(OldMonitorNum<>Monitor.MonitorNum) then
一端元のサイズに戻し
Self.WindowState:=wsNormal;
前回のモニタ位置に移動してから
Self.Left:=Left+Screen.Monitors[OldMonitorNum].Left;
Self.Top:=Left+Screen.Monitors[OldMonitorNum].Top;
再び最大化する
Self.WindowState:=wsMaximized;
ことで解決しました
(ここはもしかしたら一発で MonitorNum の移動が出来るのかも知れない)

しかしこうやって調べてたら TJvDockVSNetStyle って終了時に記録するとき最大化してたら元の位置を忘れちゃうのね
おいらは今まで TWindowPlacement で「最大化解除した時の位置とサイズを」きちんと保存する習慣があったから結構以外だったわ



余談
Delphi 関連をググってると結構自動翻訳された海外の掲示板とかがヒットするんだけど

モニターが変更された通知を受け取るとき自前で SendMessage で WM_WTSSESSION_CHANGE を送らなければならないと紹介されてて
他の人の発言で

私は古いバージョンDelphi5でこれをテストし、それだけに簡単に働いた:

Screen.Free;
Screen := TScreen.Create(Nil);

こんなアプローチがあって面白かった
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

TTreeView.Canvas のフォント

2020-09-08 22:06:38 | Delphi
スレで報告もらった「ノードタイトルの個別表示カスタマイズ」バグ
https://egg.5ch.net/test/read.cgi/software/1560074001/281

DrawText するときに
TTreeView のフォントが変われば TTreeView.Canvas のフォントも連動してるものだと思い込んでいたためのバグだと思っていたんだけど
保存されたデータからフォントを取り出すときちゃんと
Result.Style:=TreeView.Font.Style;
Result.Color:=TreeView.Font.Color;
Result.Size:=TreeView.Font.Size;
BackGroundColor:=TreeView.Color;
と TTreeView からベースを読み込んでから読み込んでる(多分本能的な処理)
Result.Name:=TreeView.Font.Name;
の一行が抜けていたのはおいらが抜けていたから

なんのこっちゃという感じのひとり言でした
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1.2.0 アップしました

2020-05-10 13:59:57 | NanaTerry
アップデート詳細はこちら
http://hp.vector.co.jp/authors/VA009187/nana120.html

ダウンロード:120




過去の nightly build はこれをもって全て削除します




縦書きモード版は Windows10 上で動作しなかったり日本語が打てなかったり
と以前から色々問題があり、ユーザー側で対応してもらっていました

今回大幅に手を加えたためか、これまでの対処法ですら間に合うかどうかわからない状態になってしまいました(私の PC では無対策で起動すると固まります)

スタンドアロンPC などの Windows7 で使用されている方も居られるかも知れませんので
v1.2.0 は配布させていただきますが、今後の縦書きモード版の開発は終了させていただきます

120t ←こちらは最終縦書きモード版です 通常版は↑のリンクから落としてください




以前ツイートしましたように Vector さんでの公開は終了させていただきます
コメント (23)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

NanaPPA

2020-05-10 09:17:25 | NanaTerry
ヘルプファイルからNanaTerryに書き写す動画です

NanaPPA
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Delphi

2020-04-01 00:18:03 | Delphi
Delphi Community Edition で Nana を構築しようとしたけどやっぱり古いコンポーネントを多く使っているので全く同じ物は出来ないなと盆正月GWと連休の度に何度か試行錯誤した結果
少々違うところがあっても他の面でよい点を盛り上げていけばいいし
暇を見て一から作っていこうかなと思ってた
……のにいつのまにか Delphi のライセンス条項が変わってきていた
最初にフリーの開発エディションとして発表されたときはボコボコもうけるようなシェアウェアでも作らない限り問題なさそうだったのに
今は「他の収入と合わせて$5000を超えてたらo(*≧□≦)o ダメ~!!」ってなってるらしい
そんなの学生さんかご隠居さんしか使えないではないか
Delphi1を買ったあと D2 D3 D3.1 D5 ...と Pro版買ってきて確かバージョンアップなら数万円だったし新規でも充分手の伸ばせる金額だったんだけど
いまでは最低でも二十万とか……しかも毎年保守料要るし
もう完全に企業相手しか考えてない
黄金期を作ったフリーウェア作家達が離れていったのは当然の帰結であると思う


そこでずっと安定を待っていた Lazarus For Delphi (フリー)なんだけど
新規の簡単なものを作ってみた限り Delphi5 並に使いやすいしちゃんと環境を構築すればモバイルアプリも作れるし最新OS でも問題ないし
今からどんどん成長していくと思うんだけどどどどどど

ちょっとスコープとかおかしくないっすか??
例えばあるソースで

public
function GatturiYomikomu(FileName:string): Integer;

ここの「FileName」でエラー出るからハテナと思ってその上の方を見ると
全然別のtype節にある

property FileName: String read FFileName;

と名前がかぶってると言いやがりやるのですよ
確かに aFileName と書けば済むことなんだけど
「スコープって知ってる?」って言いたくなるのは間違ってないよね?
ならもっと他にも引っかかるとこ出てくるんじゃね?って
もうその時点でやる気なくしちゃってその日は Lazarus 閉じちゃった
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

久しぶりの夢日記 2020

2020-03-30 23:06:12 | 雑記
夕べ久しぶりに彼女が出てくる夢を見た
放課後の教室でなんかクラスの催し物の下準備を一人で残ってやっていたので
「手伝おか?」と声をかけた
彼女が「ありがとう」と微笑んでくれたので少し図に乗って「写真撮ってもええ?」と
彼女にタブレットを向けてすぐにシャッターを切った
「ええけど私下は水着やねん」と言いながら少し照れていた
(なんでやねん?)と思いながらもその姿を改めてみると
上半身は冬の制服なのにスカートは履いていなくて椅子に座った下半身は紺の競泳水着?だったので
とりあえずもう一枚全身が映るように撮った
「こっちに顔向けて」
「なんで?」
「家に連れて帰んねん」
少し困った顔の彼女がそこに居た

でもう目が覚めちゃった
哀しい
布団から出てタブレットを確認したけど保存されてはいなかった
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

『RTFRescue』アップしました

2019-12-16 21:20:59 | NanaTerry
リッチテキストが文字化けした時、救出する(かもしれない)ツールです。


NanaTerry の外部エディタに登録できます
詳細は同梱の「ReadMe(RTFRescue).txt」をお読みください

ダウンロード
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

告知用 Twitter アカウント

2019-10-16 20:50:22 | NanaTerry
告知用 Twitter アカウントを娘がやってくれることになったので左ペインにぶら下げておきます
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

nightly build 2019/07/15

2019-07-15 18:10:08 | NanaTerry
2019/07/15
・全選択した時点でスクロール位置を戻すオプション「その他 2」(プレーンエディタモードでも出来るようにした)
・更新されていなくても上書きできるようにするオプション(その他)
・「NanaTerry.mcl」(キャレット/ノード位置記録ファイル)を UniCode 保存に変更
・「行移動」に「±つければ相対ジャンプ」をつけた
・「アドレスバー」の実装
・exe と同じフォルダに TreeFolder.bmp という画像があればツリーのフォルダ(本)アイコンとして読み込む
メニュー「ツリー」「イメージツール」「フォルダ(本)アイコンの保存」でオリジナルを元に作成してください
・多重起動時のマウスジェスチャ「Nana一覧 ↑↓」「次のNana ↑→」「前のNana ↑←」追加
・ヘルプメニューの下にマウスジェスチャ一覧表示メニュー追加

・プレーンエディタモードで全選択状態でコピーしたときに一番下に移動するのを修正
・「最後に編集したノードを開く」見直し
・電卓を閉じた後また開くとNanaが死ぬのを修正
・「リストに名前をつけて保存..」ができないかったのを修正
・多重起動時に最小化させたままの他のNanaをCtrl+Tabで呼び出すとフロートさせてるツリーなどが出てこないバグを修正
・フォント/マーカー色カラーダイアログでの追加色が記憶されていなかったのを修正(右クリから開いた場合はOKだった)
・マウスジェスチャを一度切るとオンにしても記憶できなくなっていたバグを修正

20190715.zip
コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Nanaスレ過去ログ

2019-06-22 19:28:47 | NanaTerry
5ちゃんねる(2ちゃんねる)のJane形式の過去ログを置いておきます
アウトラインプロセッサ Part19(ここの>>151からNanaTerryは始まりました)
1323354546.dat
アウトラインプロセッサ「NanaTerry」
1332169510.dat
NanaTerry(アウトラインプロセッサ) Part2
1375501433.dat
NanaTerry(アウトラインプロセッサ) Part3
1462896435.dat


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初期状態でのテスト方法

2019-05-20 22:42:26 | NanaTerry
全て私の確認作業が足りていないせいなのですが
合間合間に開発しているので機能追加やバグ修正したときに全然関係ないような設定と相性的な不具合が起こるときがあります
それが果たして相性なのか根本的不具合なのか切り分けていただくために
もし時間が許しましたら初期設定の状態からテストしていただきたいです

・現在の設定をまた構築するのは大変なのでどこかに空のフォルダを作っていただいて(仮に「c:\7」とします)
・デスクトップにでも今使っている「NanaTerry.exe」を右ドラッグドロップして「ショートカットをここに作成」
・出来上がったショートカットアイコンを右クリックから「プロパティ」
・リンク先の後ろに上記の空フォルダを設定フォルダにするオプションを追加します
例 )E:\DELPHI\EXE\NanaTerry\NanaTerry.exe /ic:\7
例 2 )"E:\DELPHI\EXE\Nana Terry\NanaTerry.exe" /ic:\7
Nana のあるフォルダ名に「 」(空白)が含まれている場合「"」ダブルクォートではさんでください

これでこのショートカットから起動した場合以下のファイルは「c:\7」に出来ることとなり
NanaTerry.DockingIni
NanaTerry.fnd
NanaTerry.ini
NanaTerry.mcl
NanaTerry.MRUIni
NanaTerry.nbm
NanaTerry.nmm
NanaTerry.ToolbarIni
TagHTMLHeadder.htm
tmpFrame.htm
tmpMenu.htm
起動した後変更してもここに保存されます
不要になればこのフォルダとショートカットは削除してください
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

nightly build 2019/05/19

2019-05-19 15:25:50 | NanaTerry
2019/05/19
・↓でエディタとツリーの右クリックが出来なくなっていたのを修正

---
2019/05/18    (この版は削除しました)
・更新されていなくても上書きできるようにするオプション(その他)

2019/05/12
・全選択した時点でスクロール位置を戻すオプション「その他 2」(プレーンエディタモードでも出来るようにした)

・プレーンエディタモードで全選択状態でコピーしたときに一番下に移動するのを修正


20190519










#いったん元に戻して全く同じことをしたら直りました
最近 Delphi の調子が悪かったのでそのせいにしておきます
コメント (14)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

nightly build 2019/05/18

2019-05-18 08:40:53 | NanaTerry
2019/05/18
・更新されていなくても上書きできるようにするオプション(その他)

---
2019/05/12
・全選択した時点でスクロール位置を戻すオプション「その他 2」(プレーンエディタモードでも出来るようにした)

・プレーンエディタモードで全選択状態でコピーしたときに一番下に移動するのを修正

20190518.zip
コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする