iPhone用アプリの開発でWindows用社内ライブラリに入っているクラスを使うことになり、せっかくなのでiOS用社内ライブラリを作成しました。
以前UWP用社内ライブラリを作成したときに共通化できそうなソースコードは共有プロジェクトに移動したので、今回は簡単にiOS用社内ライブラリが出来上がりました。
Xamarinの互換性の高さに驚きです。
iPhone用アプリの開発でWindows用社内ライブラリに入っているクラスを使うことになり、せっかくなのでiOS用社内ライブラリを作成しました。
以前UWP用社内ライブラリを作成したときに共通化できそうなソースコードは共有プロジェクトに移動したので、今回は簡単にiOS用社内ライブラリが出来上がりました。
Xamarinの互換性の高さに驚きです。
自分の両親の年齢を答えられない人が増えたような気がします。
当然のことながら、その人達は両親の生年月日を知りません。
これは「元号離れ」も一つの要因でしょうか?
それでも自分の生年月日は「元号」or「西暦」で覚えているでしょうから両親のそれも覚えられると思うのですが・・・。
「覚えてどうすんですかぁ~?」と言われたら、何と答えますか?
mgcです。
今年の1月にIphone10に機種変更し、約4か月がたちました。
落としても大丈夫なようにとガラスフィルムを同時に購入していましたが
早速落としてしまいガラスフィルムにヒビが入りました。
ただ、ガラスフィルムの頑丈さには驚かされます
フィルムにはヒビが入っていますが
本体は無傷。
少しケチってフィルムを張らなければ
落とした時の修理費が恐ろしいことになりそうですね。
まだガラスフィルムを張られていない方が居ればぜひ1度使用してみてください。
こんにちはmtjです。
kotlinでUIの作成等に手を出していますがVSの出来の良さを改めて感じます。
特にUI、イベント関連の出来がよく何も入れなくてもダブルクリックでボタンのクリックイベントを実装可能です。
イベントもdelegateの注入処理もなくデザイナーが勝手にしてくれます
開発者は用意されたメソッド内に処理を書くのみでUIアプリを作成可能です。
kotlinの方はライブラリ等を模索しながら作りやすいように調整中です。
調べるほうが面白くなり全然進んではいませんが。
最近、WindowsFormsのコントロールの背景色やフォントが設定されているかを取得する必要があったので、Controlについて調べてみました。
なお、背景色やフォントは親コントロールから継承されるので、普通にBackColorプロパティやFontプロパティでは設定されているかを調べられません。
以下のサイトでControlのソースコードを調べました。
Reference Source
結果、internalなRawBackColorプロパティとIsFontSetメソッドをリフレクションで実行すれば取得できそうです。
実装は以下のようになります。
public static class ControlExtension {
private static Func RawBackColorDelegate { get; }
private static Func IsFontSetDelegate { get; }
static ControlExtension() {
RawBackColorDelegate = typeof(Control).CreateGetPropertyDelegate<Func>("RawBackColor", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
IsFontSetDelegate = typeof(Control).CreateMethodDelegate<Func>("IsFontSet", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
}
public static Color RawBackColor(this Control ctl) {
return RawBackColorDelegate(ctl);
}
public static bool IsFontSet(this Control ctl) {
return IsFontSetDelegate(ctl);
}
}
public static class TypeExtension {
public static TDelegate CreateGetPropertyDelegate<TDelegate>(this Type type, string name, BindingFlags flags) {
var property = type.GetProperty(name, flags);
var info = property.GetGetMethod(flags.HasFlag(BindingFlags.NonPublic));
return (TDelegate)(object)Delegate.CreateDelegate(typeof(TDelegate), info);
}
public static TDelegate CreateMethodDelegate<TDelegate>(this Type type, string name, BindingFlags flags) {
var info = type.GetMethod(name, flags);
return (TDelegate)(object)Delegate.CreateDelegate(typeof(TDelegate), info);
}
}
Controlの拡張メソッドにしましたので、全てのコントロールで使用可能です。
毎回リフレクションは遅いので、staticコンストラクタであらかじめデリゲートを作成しています。
ついでに、Delegate.CreateDelegateメソッドをラップする拡張メソッドも作成しました。
そもそもシーケンサで文字列を扱う事自体に無理があります。
シーケンサのワードデバイスは2バイトなので便利な命令がないメーカーのPLCの場合は苦労します。※文字数が偶数のときは文字列の最後が1/2ワードになります。
mgcです。
ある案件でスクリプトをよく使用しています。
レーザーマーカーやアライメント等PLCから特定の機器へのコマンドの送受信
又は、内部での複雑な演算などにとても便利な機能です。
キーエンスのスクリプトはラダー内に直接記述できるので
ラダーの流れに沿ってスクリプトを使用することが可能です。
モニタするとスクリプトが今どこまで走っているのかが
明確に見えないところが少し不便かなと思います。
こんにちはmtjです
最近アンドロイドアプリの勉強しようと思いkotlinをしております。
開発環境が日本語でないので既に敷居は高いのですがなかなか新鮮であり、JAVAを元にしている事もあり懐かしくも思います。
こういった新しい言語の考え方、作り方を覚えるのも良い技術のトレーニングになると思いました。
自分たちの業界には大切なことと思います。
今月はC#のSplitterコントロールとSplitContainerコントロールの2つのスプリッタコントロールに機能追加を行いました。
スプリッタコントロールは以下の画面のように、2つの領域をマウス操作で可変にするコントロールです。
なお、この画面は弊社で作成している社内用の画像処理ソフトです。

追加したのは以下の機能
1.マウスオーバー時に色を変更する処理
2.ダブルクリックで一方の領域を最小化したり元のサイズに戻したりする処理
この機能追加を社内ライブラリにおこないましたので、今後のアプリではこの機能が簡単に使用できるようになります。
今回対応したのはWindowsFormsだけなので、いずれWPF用にも対応を行う予定です。
KV-STUDIOではアキュムレータを多用します。
アキュムレータを使うと演算命令を連続的に書けるので見やすいです。
また、一時退避的なDMも不要です。
私はマイコン(Z80)出身なので違和感なく使いますがPLCから始めた人は使いにくいようです。
※アキュムレータは実デバイスではないので・・・。
PCの関係者であればKV-STUDIOのスクリプトを使うと良いのではないでしょうか。
(お客様の許可が出れば、の話ですが)