過去の桐井戸端BBS (桐ver.8)
19610 直接フォームを開いたら「フォーム解析エラー」が出てしまう。 海ねこ 2003/03/25-11:13
桐V8sp6を使い出し数ヶ月(?)がたちましたが、
いまだに不勉強がたたり悩んでいます。

>フォームを開く方法として
>●一括処理を実行しフォームを起動する方法
>●フォームを直接開くする方法があります

結構古い人間なので一括処理からフォーム(メニュー)を呼び出したりして、
さらにフォーム形式の編集画面に移行して使っています。

ですが、いろいろ見てるとフォームから直接開いて行くという手法が主流(?)になりつつあるようで、
時代の流れを感じます(笑い)

そこでこの後者の方法で試したところ、フォームを開く前にエラー画面(?)で、
フォーム解析エラーを突き付けられる始末です。

フォーム解析エラー
 !フォームに解析できない式が含まれています

[継続] [中止] [詳細]

詳細を押すともちろん原因はわかりました。
テキストのソースに 共通変数を埋め込んでいるために怒られるわけですね。(笑い)
そもそも、最初の起動用フォーム画面に宣言もされていない共通変数を定義するという使い方が悪いのでしょうか。
デスクトップに作ったショートカットからこのフォーム画面を開きたいのです(エラーなしで)。
一括から起動すれば、まず変数を宣言し、次にフォーム画面を開き・・・と、何の問題も起きないのに

いろいろ自分なりに、このエラー画面が表示されないようにやってみましたが、
満足な結果が得られません・・・

まあ、[継続]ボタンを押せば、先に進んではくれますが、
アプリとしては起動(ファイルを開く)した途端にエラーの宣告では、最低ですよね。

なにか、スマートな回避策があれば、よろしくお願いしたいとおもいます。

19611 Re:フォーム解析エラーについて 悲しげ 2003/03/25-11:39
記事番号19610へのコメント
どもっ、海ねこさん

>いろいろ見てるとフォームから直接開いて行くという手法が主流(?)に
>なりつつあるようで、時代の流れを感じます(笑い)

御意(わらひ)。
フォームから直接起動した際に(局所変数以外の)変数を宣言させたい場合は、
イベントファイルkevを設定し、その「名札 メイン」で、例えば次のような
記述をさせておけばよいと思います。

 if(#変数("代表的な変数名")="")
  変数宣言 へろへろ・・・
 end

または

 if(#配列要素数("代表的な変数名")=-1)
  変数宣言 へろへろ・・・
 end

あるいは、複数のいずれのフォームから起動した場合にも汎用的に対応させたいのなら、
直接的な変数宣言の代わりに

  ライブラリ "ライブラリ変数宣言.cmd"
  手続き実行 ライブラリ変数宣言()

のようなやり方もあります。

19630 Re:フォーム解析エラーについて 海ねこ 2003/03/25-23:26
記事番号19611へのコメント
悲しげさん。ありがとうございます

>イベントファイルkevを設定し、その「名札 メイン」で、例えば次のような
>記述をさせておけばよいと思います。

実は、イベントファイルは使ったことはないのですが
書式>イベントの定義でいいかと思うんですが
なぜかグレー表示で選択できません。
なぜでしょうか?またまた先へ進めません。

19635 Re:フォーム解析エラーについて 悲しげ 2003/03/26-00:14
記事番号19630へのコメント
>書式>イベントの定義でいいかと思うんですが
>なぜかグレー表示で選択できません。

同じく、メニューバーの「書式」から、一番下の「定義画面の設定(O)」を選び、
これまた一番下の「詳細プロパティを使用する」にチェックを入れます。
(理由は忘れましたが、私は「操作ナビを消去する」にもチェックを入れてます)

こうすれば、イベントその他モロモロの設定が可能となります。

19636 局所変数を使う方法もあります 佐田 守弘 2003/03/26-00:17
記事番号19610へのコメント
海ねこさん
この様なエラー対策として用意されているのが局所変数の機能です。
フォームの定義画面で変数管理を選び、ここで局所変数を定義しておいて下さい。

局所変数とは、そのフォームに対して定義される変数です。
フォームを開くと、開くときに自動的に定義されます。
またそのフォームから別のフォームを呼び出した時にも、有効だったと思います。

佐田守弘(KS-00119)
19644 Re:エラーなしで起動できるようになりました 海ねこ 2003/03/26-12:13
記事番号19636へのコメント
悲しげさま、佐田さま、ほんとうに感謝です。_(--)_

> if(#変数("代表的な変数名")="")
>  変数宣言 へろへろ・・・
> end

>  ライブラリ "ライブラリ変数宣言.cmd"
>  手続き実行 ライブラリ変数宣言()

>局所変数とは、そのフォームに対して定義される変数です。

全部試してみましたが、どれもエラーなしで起動できるようになりました。
あとは、やはり他のフォームからも参照(または代入)をしたいので、
悲しげさまのどちらかの方法で進めようかなと思います。
cmdファイルで明示的に記述しといたほうが、後々のメンテナンス(大げさですが)がやりやすいような気がします。
kevファイル単独でのメンテナンスも簡単そうでいいですけど。
頭が古いもので一括処理のファイルが好きなんですね。

戻る