2016年06月01日

FastReport レポートエディタ

FastReport を使っていて、エディタ部分が非常に使いにくい。
Delphiのコードを確認したいときに、いちいちエディタを閉じないといけない。QuickReportのような形式が便利だと思うのだが。
データベース連携の場合、この仕組みでよいのかもしれないが、データベース連携しない場合は、とくに不便。

で、エディタだけ起動できるプログラムを作ればよいのではと思い、調べる。

  frxReport.DesignReport();

でエディタが起動できるので、これだけのプログラムを作成。
まだ、不満はあるがちょっとましに。








posted by しんくそふと at 10:30| Comment(0) | TrackBack(0) | 開発TIPS

2016年10月06日

IoT試作

Arduino + Bluetooth + Android(FireMonkey)で試作。

ポテンショメータ(ボリューム)の動きを、Arduinoで監視。
Bluetoothで送信。

161006_155345.jpg

Androidでモニタ。

161006_155441.jpg


ポテンショメータ(ボリューム)の位置に連動して画面が追随。
161006_155518.jpg

161006_155526.jpg

Arduino側で、データを送信する際、若干Delayを入れないと、Android側で、データがうまく受信できなくなるので、ほんの少し反応が送れた感じになるが、ポテンショメータの動きに合わせて、画面も追随できている。








posted by しんくそふと at 16:36| Comment(0) | TrackBack(0) | 開発TIPS

2016年10月13日

IoT試作 2

前回と同じで、ポテンショメータ(ボリューム)2個の動きを、Androidでモニタ。

今回は、ESPr Developer(旧名:ESP-WROOM-02開発ボード) と、ADコントローラ MCP3002の組み合わせで、試作。
ESPr Developerなんで、通信は、Wi−Fiです。

ハードの配線は、上記組み合わせでの実例が、ネットに多数あったので、それを参照に作成。
基本は、3.3Vベースだと思うが、ESPr DeveloperのVOUTポート使って、5VでMCP3002とポテンションメータを使用。
VOUTポートは、ESPr Developerにあるけど、ESP-WROOM-02にはありません。

161013_100126.jpg

ESPr Developerは、アナログデータは1Chしか取得できないので、MCP3002を使って、2Ch取得。
Ch単位に20件ごと取得し、それぞれ平均した値を、送信する仕組みにしている(この処理で、0.1mSecほど)

Wi−Fi側は、UDPを使って、Android側は、100mSec単位でデータをリクエスト。時々データの欠損が出ている。
こういったケースで、ネット上では、UDPを使っているケースが多いが、TCPではダメなのかちょっと不明。後日TCPでも試してみようかと思う。


posted by しんくそふと at 10:37| Comment(0) | TrackBack(0) | 開発TIPS

2016年10月18日

IoT試作3

前回は、MCP3002 で2Chのアナログデータを取得したが、今回はMCP3208で8Chのアナログデータを取得し、諸々データの確認を行った。

Ardinoとの配線は、下記を参照。

161018_103900.jpg


161018_103920.jpg


Ardinoのコードは、上記サイトのものはうまく行かなかったので、SPIのソースをネット上で探し、それを元に作成。
8Chを20回読み込むのに、およそ7m秒ぐらい。

Delphiもちょっとした機能を確認しながら作成できるが、マイコンもArdinoのようなもので簡単に(最初は簡単でなかったけど)確認できるの便利である。



posted by しんくそふと at 16:40| Comment(0) | TrackBack(0) | 開発TIPS

2016年12月06日

FDMemTable(FireDAC)フィールド定義作成

これは Delphi Advent Calendar  2016 6日目の記事です。

FDMemTableのフィールド定義をIDE上で行う方法は、最近のDelphiでは、”データセットの割り当て..”機能を使うことで、TFDQueryなどから、取り込むことができるようになっていますが、古いもの(XE5以前は無い。XE6,XE7は未確認。XE8以降はあり)では、このメニューが出ません。
このため、フィールドを1つづつ手作業で追加するということになりちょっと面倒です。これをちょっと楽するためのテクニックです。

最近のDelphiの方法
1)FDMemTableで必要なフィールドを取得できるクエリを書いたFDQueryを作成。
2)FDQueryをOpenし、フィールドエディタですべてのフィールを取り込む。
3)FDMemTable上で、右マウスボタンでメニューを表示。
4)"データセット割り当て"を選択。
5)上記、FDQueryを選択。
6)再度、FDMemTable上で、右マウスボタンでメニューを表示。
7)"フィールドエディタ"を選択
8)"フィールドエディタ"上で、右マウスボタンでメニューを表示。
9)"すべてのフィールドを追加"を選択
10)FDQueryのフィールド定義がコピーされる。
以上


古いものでは、4) の"データセット割り当て"が無く、”項目の設定”のみである。
ClientDataSetは、上記と同様の作業ができるので、こちらを使う。
プロパティの関連図けは
ClientDataSet1. ProviderName -> DataSetProvider1
                                                     DataSetProvider1.Dataset -> FDQuery1
1)上記プロパティ設定後、ClientDataSet1上で、右マウスボタンでメニューを表示。
2)”項目の設定”を選択。フィールドエディタが表示される。
3)"フィールドエディタ"上で、右マウスボタンでメニューを表示。
4)"すべてのフィールドを追加"を選択
5)FDQueryのフィールド定義がコピーされる。
6)dfmをエディタ表示する。
7)上記、ClientDataSet1のクラスを、TFDMemTableに変更。
8)エディタからフォーム表示へ
9)プロパティの相違でエラーメッセージが出るが無視。
10)保存で、ClientDataSet1のpas上のクラス定義の相違のメッセージが出るのでOKする。
以上

FDMemTableの活用法は、過去のブログを見てください。



posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS

2016年12月21日

複数行グリッド

これは Delphi Advent Calendar  2016 21日目の記事です。


複数行表示編集できるグリッドのようなもの(下記のような感じ)ができるか問い合わせがあり、TFrameを使ったものを試作。
個人的にいい感じでできたので、TFrameを組み合わせるとこんな感じでできますと言うご紹介させていただきます。

グリッド全体のTFrameにScrollBoxを置き、その中に明細行のTFrame(1行ごとにCreate)で構成しています。
ScrollBoxの中に、Panelを1枚置き、その中に明細Frameを必要分Createしています。
このScrollBoxの中のPanel位置を移動させることでスクロールを実現しています。

MultiLineGrid1.png


簡単な機能紹介資料(機能概要.pdf)です。



サンプルプログラムです(FrameGrid.Sample.zip)。


ソースは仕事ネタなんで公開できませんが、TFrameを使えばこんな感じでできますというご紹介でした。


タグ:Delphi
posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS