D言語
PrintPreviewDialog 周りの実装が一通り終わったので、実験的モジュールから卒業しました。 見た目はあまり変わっていませんが、新しいサンプルコードを置いておきます。 以前の記事はこちら。 haru-s.hatenablog.com 主な変更点 総ページ数が表示されるよう…
std.csvをデータモデルとして受け取って、タイムチャートを描くTimeChartRendererクラスを、dfl.chartモジュールに追加しました。 2023年末にdfl.printingモジュールを作り始めたときからここを目指していましたが、やっとできましたね。 縦軸は信号名、横軸…
std.csvをデータモデルとして受け取って、折れ線グラフを描くLineGraphRendererクラスを、dfl.chartモジュールに追加しました。 TableRendererに負けず劣らず、折れ線グラフの見かけを自由に変更できるようにしています。 CSVの要件 上図中のコードに示した…
作図機能を担うdfl.chartモジュールをDFLに追加しました。 まだ、表を描画するTableRendererクラスしかありませんが、 今後は、線グラフ(LineGraphRenderer)や、印刷モジュールdfl.printingを書くそもそもの目的であった タイムチャート(TimeChartRendere…
印刷プレビューダイアログ PrintPreviewDialog が最低限動くようになったのでGitHubで公開しました。 前回記事で述べたPrintDialogとPageSetupDialogの実装ではコモンダイアログを呼び出していますが、PrintPreviewDialogは自分で実装しました。 ツールバー…
2024/5/15更新:Graphicsオブジェクトの座標系を、MM_TEXT(96dpi)から、GraphicsUnit.DISPLAY相当に変更したので、サンプルコードの座標系が変わりました。 DFLの印刷モジュールがだいたい動くようになったので、試験的に公開しました。 基本的な使い方は、W…
年末から、DFLに印刷機能を追加しようとしている。 GDI Print APIという古いAPIを使っているので日本語の資料は色々あるけど、先は長そうだ。 まずは、APIの使い方を調べるため、ページ設定ダイアログと印刷ダイアログを表示したり、印刷するには印刷できた…
RichTextBox(リッチエディットコントロール)のサンプルコードです。 全文を貼ると長くなるのでソースはリンク先を参照してください。 https://github.com/Rayerd/dfl/blob/master/examples/richtextbox/source/richtextbox_sample.d サンプルを起動すると…
DFLのRichTextBox用にせっかく書いたけど不要だった・・・ここで供養する。 // この辺のインポートが必要だけど競合するので選択インポートする。 private import dfl.internal.winapi; private import core.sys.windows.richedit : GETTEXTEX, GETTEXTLENGT…
ツールバーのサンプルコードです。 長くなるのでソースコードはこちらにリンクを張っておきます。 https://github.com/Rayerd/dfl/tree/master/examples/toolbar/source 下図の左から、普通のボタン、トグルボタン、セパレータ(区切り)、ドロップダウンボ…
コンテキストメニューのサンプルです。 特に難しいことはないですね。 ただ、mouseDownイベントを使って右クリックを検出した方が、DFLらしいかもしれません。 import dfl; import core.sys.windows.windows; version(Have_dfl) // For DUB. { } else { prag…
Timerクラスのサンプルコードです。 Startボタンでカウントアップ開始、Stopボタンで停止します。 import dfl; import std.conv; version(Have_dfl) // For DUB. { } else { pragma(lib, "dfl.lib"); } class MainForm : Form { private Label _label; priva…
NotifyIconのサンプルコードです。 NotifyIconというのは、タスクバーに出るアイコンです。 上のスクリーンショットで右端にあるフェイスマークを表示しています。 import dfl; class MainForm : Form { private NotifyIcon _notifyIcon; public this() { th…
GetDIBits()を使う、以上。 で終わる話なのですが、BITMAPINFOを作成するために必要なメモリサイズを算出するのに手こずったので、結果だけ置いておきます。 なお、このコードで作成されるのは、スクリーンショットを撮ったときに得られるビットマップデータ…
CreateDIBitmap()を使う、以上。 で終わる話ではあるのですが、パックされたビットマップの場合、BITMAPINFOの先頭アドレスとBITMAPINFOHEADERの内容から、後に続くカラーマスクとカラーパレットのバイト数を算出して、ピクセルデータ列の先頭アドレスを求め…
かなり手こずったので結果だけ置いておきます。 ubyte[] getBitmapBuffer(BITMAPINFO* pbi) { assert(pbi); const uint bitsPerPixel = pbi.bmiHeader.biPlanes * pbi.bmiHeader.biBitCount; const uint colorMaskBytes = { if (pbi.bmiHeader.biCompression…
dfl/examples/picturebox at master · Rayerd/dfl · GitHub 画像ファイルを簡単に表示することができるPictureBoxクラスのサンプルです。 Bitmapクラスで読み込める形式の画像ファイルなら表示できるようで、bmp、jpgは表示できました。 未確認ながらgifも可…
https://github.com/Rayerd/dfl/tree/master/examples/clippingform 透過する部分を白色にしたビットマップを与えて、矩形でないウィンドウを作れるClippingFormのサンプルコードです。 ウィンドウタイトル(キャプション)がなく、かつ、常に最前面に表示さ…
Clipboardクラスを使ってコピー・アンド・ペーストをする処理のサンプルコードです。 dfl/clipboard_sample.d at master · Rayerd/dfl · GitHub 簡単な使い方 長くなるのでここにサンプルコードを転記するのは止めておきますが、簡単に使い方を示します。 い…
TODO [-] application.d [-] base.d [x] button.d [x] chart.d [x] 表を描画するTableRendererクラスを作る [x] 折れ線グラフを描画するLineGraphRendererクラスを作る [x] タイムチャートを描画するTimeChartRendererクラスを作る [x] clipboard.d [ ] より…
DFL の ProgressBar クラスを更新しました。 表示形式を動的に設定できるようにしたり、マーキー形式の描画間隔を設定できるようにしたり。 さて、Windows の仕様で、ブロック形式(BLOCKS)の表示方法は、クラシックスタイルでしか使えません。こちらがクラ…
ToolTip のサンプルコードを作成するついでに WinForms にあってこちらにない機能をいくつか追加しました。 バルーンタイプのツールチップ アイコンとタイトルの表示 アニメーション表示(フェードイン)なし フェードアウトなし 複数行の表示 &記号がアクセ…
DFL の OpenFileDialog では GetOpenFileName が使われていて、SaveFileDialog では GetSaveFileName が使われています。それぞれ、表示されるダイアログがプレースバーがないタイプでした。 プレースバーがあるタイプのダイアログにするには OPENFILENAME …
ボタンの配置が微妙ですが、コモンダイアログのサンプルコードを追加しました。 以下のクラスのサンプルを含みます。 OpenFileDialog SaveFileDialog FolderBrowserDialog FontDialog ColorDialog あと PrintDialog が存在しますが、DFL には実装されていま…
ここにコードを貼るのは省略しますが、ImageListのサンプルコードを追加しました。 下のリンクから参照してください。 dfl/examples/imagelist at master · Rayerd/dfl · GitHub ついでにComboBoxも使っているので、こちらのサンプルとしても使えます。 挙動…
DFL で Drag&Drop がうまくいきません、詳しい人教えてください!テストコードは http://t.co/ngKcdrHTtN #dlang— Seiji Fujita (@sfujita) 2014年2月9日 ソースはリンク切れのため今となっては詳細不明。 DFL のドラッグアンドドロップがうまく動かないとい…
github.com Splitter コントロールには最小幅を設定するプロパティがありますが、最大幅を設定するプロパティがないので、サンプルコードでは自前で実装しています。 方法は、Splitter の左又は上にあるパネルのサイズが変更されたときに、所定の最大幅を超…
github.com View.DETAILS: View.LIST: ListView コントロールのサンプルですが、アイコンを用意していないので、view プロパティに View.LARGE_ICON と View.SMALL_ICON を設定しても見栄えが悪いです。 あと、リストビューの詳細表示の1列目にはセンタリン…
追記あり。 続・追記あり。 DFLに限らないけれども。 VisualStyle有効: VisualStyle無効: 以下のコードをソースファイルに追加してdmdでビルドすれば、実行ファイルと同時にマニフェストファイルが生成される。 実行ファイルを起動すれば、ビジュアルスタ…
github.com ウィンドウにステータスバーを表示し、3つのパネルを追加します。 各パネルは borderStyle プロパティに StatusBarPanelBorderStyle を設定することで3種類の見た目に変更できます。 ウィンドウ内を左クリックすると左端のステータスバーにクリ…