プロデルでバーコードを扱いたいのですが・

投稿者:KNIGHT 投稿日:2024/02/28(Wed) 16:16:38 No.2962

たびたび、お世話になります。

TTSneoで作ったプログラムでは MiBarcd というプログラムをコマンドラインで使用して、バーコードを生成していたのですが、MiBarcd の挙動が今一つ良くないので、ゆうとさまが解説しておられる Microsoft Accessに含まれていう Microsoft Barcode Control を利用してみようと思い、プロデルブログの、https://produ.irelang.jp/blog/2018/12/717/ を参考にするですが、どうプログラムすればよいのか分かりません。

「バーコード部品とは」で始まるスクリプトと、「メイン画面を表示する」で始まるスクリプトとは、どういった形で、列挙記述することができるのかが分かりません。もう少し具体的なサンプルプログラムをお示しいただけると幸いです。

よろしくお願いいたします。

Re: プロデルでバーコードを扱いたいのですが・

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/28(Wed) 20:38:44 No.2963

こんにちは

ブログの記事を少し加筆しました。
https://produ.irelang.jp/blog/2018/12/717/

> 「バーコード部品とは」で始まるスクリプトと、「メイン画面を表示する」で始まるスクリプトとは、どういった形で、列挙記述することができるのかが分かりません。

「〜とは」〜「終わり」は、手順よりも大きな括りとなります。
https://produ.irelang.jp/docs/syntax/construct.html

「バーコード部品とは」〜「終わり」までは、プログラムの末尾に書いてください。

> もう少し具体的なサンプルプログラムをお示しいただけると幸いです。
完全なプログラムをもれなく載せているのですが、、、

当時の記事は、プログラムの一部を載せて、すべて貼り付けて組み合わせれば、完成するような章立てになっています。少し考えれば、動くプログラムになると思うのですが、以前のフィードバックを見ても、それが難しいみたいですね...

Re^2: プロデルでバーコードを扱いたいのですが・

投稿者:KNIGHT 投稿日:2024/02/29(Thu) 07:41:19 No.2965

おはようございます。ゆうとさま

> ブログの記事を少し加筆しました。
> https://produ.irelang.jp/blog/2018/12/717/

ありがとうございます。

> 完全なプログラムをもれなく載せているのですが、、、
> 少し考えれば、動くプログラムになると思うのですが、以前のフィードバックを見ても、それが難しいみたいですね...
そう思って、前後に配置にしてみたり・・・、いろいろとやってみたのですがうまく行かないので、お尋ねした次第です。
・・・で、ご指示の通りに、やってみるのですが、以下のようなエラーが出ます。

プロデル 2.0.1226
クラスが登録されていません (HRESULT からの例外:0x80040154 (REGDB_E_CLASSNOTREG))
場所 System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
場所 System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
場所 System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
場所 System.Windows.Forms.AxHost.CreateInstance()
場所 System.Windows.Forms.AxHost.GetOcxCreate()
場所 System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
場所 System.Windows.Forms.AxHost.CreateHandle()
場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
場所 System.Windows.Forms.Control.CreateControl()
場所 System.Windows.Forms.Control.WmShowWindow(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.Form.WmShowWindow(Message& m)
場所 Produire.WinControl.ウィンドウ.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

実行したプログラム
〜〜〜〜
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
    バーコードというバーコード部品を作る
      その大きさを{100,100}に変える
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    この設計スケール比率を{144,144}に変える
    この内容を「メイン画面」に変える
    初期化開始する
    初期化終了する
  終わり

開いた時の手順
  バーコードのスタイルは、2
  バーコードの内容は、4902777232577
終わり
終わり

バーコード部品とは
  ActiveX部品を継承する
  はじめ()の手順=(「BARCODE.BarCodeCtrl.1」)
  終わり

スタイルという属性
  取得する手順
    本体のStyleを返す
  終わり
  設定する手順
    本体のStyleは、設定値
  終わり
終わり

内容という属性
  取得する手順
    本体のValueを返す
  終わり
  設定する手順
    本体のValueは、設定値
  終わり
終わり

終わり
〜〜〜〜

よろしくお願いいたします。

(続きです)

投稿者:KNIGHT 投稿日:2024/02/29(Thu) 08:04:43 No.2966

MSBARCODEが登録されていないのかなと思い、MSBCODE9.OCXの所在を確認して、その所在パスに変更して、以下を実行したのですが、

//32ビット版Officeの場合
「regsvr32 "C:\Program Files (x86)\Microsoft Office\root\Office16\MSBCODE9.OCX"」を起動する

画像のようなエラーメッセージが出ました。
このメッセージに対する対処は、エラーが発生した状況やタイミングによってさまざまあるようで、いろいろと調べてみたのですが、どうすればよいのか分かりません。ご教授いただければ幸いです。

(さらに続きです)

投稿者:KNIGHT 投稿日:2024/02/29(Thu) 13:31:39 No.2968

その後、今度は、コマンドプロンプトを管理者権限で起動して、
regsvr32 "C:\Program Files (x86)\Microsoft Office\Office16\MSBCODE9.OCX"
を実行したところ、うまく登録できたようなメッセージが出ました(画像)。

にもかかわらず、相変わらず「クラスが登録されていません・・・」の同じエラーが出ます。

よろしくお願いいたします。

(さらに続きです)

投稿者:KNIGHT 投稿日:2024/03/03(Sun) 09:57:40 No.2969

御世話になります。
以上の「クラスが登録されていません・・・」エラーは、職場で使用しているWindows11での挙動でした。

ところが、自宅で使用しているWindows10では、すんなりバーコードが表示されました。ただ、QRコードは表示できませんでした。使用していMS-Office が 2010 で古いせいかと思い、念のため「Microsoft Access 2016 Runtime」もインストールしてみましたが、今度は、
「regsvr32 "C:\Program Files\Microsoft Office\Office16\MSBCODE9.OCX"」を起動する
で、パスにもファイル名にも絶対にミスがないのに、読み込みに失敗するエラー(画像)が出て「MSBCODE9.OCX」を登録できませんでした。

ウィンドウ内に表示されたバーコードを画像ファイルとして保存したいのですが、そのためにはどういうプログラムを書けばよいのか・・、さっぱり分かりません。

ご教授いただけないでしょうか?
よろしくお願いいたします。

連投はご遠慮ください

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/03/03(Sun) 13:12:48 No.2970

こんにちは。
バーコード表示については、Accessのおまけ機能を活用するものですので
確実に利用できるものではありません。状況により利用できない場合があります。
使えたらラッキー。くらいの認識でお願いします。

細かくは説明できませんが基本的には
・regsvr32でどこかにあるMSBCODE9.OCXをレジストリに登録する(レジストリに正しく登録されていないとプロデルから部品を作れません)。「regsvr32 /u」で一度登録を解除することもできます。
・Officeとプロデルの動作ビット(64bit版か32bit版か)の組み合わせを合わせる
例えばMSBCODE9.OCXがあるOfficeのパスにx86が含まれていればOfficeが32ビットですので、プロデルも32ビット版プロデルデザイナで起動してください。パスにx86の表記がない場合は通常のプロデルを使います。(64ビット版のWindowsの場合です)

本件については、プロデルに直接関係がなく、おまけ機能という意味合いもありますので
これ以上に説明できません。すみませんが、これ以上の連投はやめてください。
あとは試行錯誤して頂くようお願いします。

Re: 連投はご遠慮ください

投稿者:KNIGHT 投稿日:2024/03/03(Sun) 20:18:13 No.2971

ゆうとさま、お返事ありがとうございました。
> 使えたらラッキー。くらいの認識でお願いします。
> これ以上の連投はやめてください。
> あとは試行錯誤して頂くようお願いします。
分かりました。ここしか相談できる場所がなかったものですから・・・
たいへんご迷惑をおかけしてすみませんでした。

▲ページの先頭へ

- WebForum -