前景色と背景色の変更

 投稿者:イーグル  投稿日:2010年 4月18日(日)21時50分58秒
   初めまして。質問がありまして、投稿させて頂きました。
 十進BASICで、プログラム編集画面の前景色や背景色を
変更することは可能でしょうか。前景色とは文字の色のことです。
その目的は、目の負担を軽減することです。
 現状としては、カスタマイズが可能な外部エディタで
ソースファイルを編集した後に、そのファイルを/ORオプションと共に
十進BASICで指定して実行する、というのが妥当かとも思うのですが。
こちらのソフトウェアだけで完結できるのであれば、
便利なのではないかと思っています。
 メニューやヘルプ、ウェブサイトや掲示版を調べてみたのですが、
解決方法を見付けることが出来ませんでした。
 どなたかご存知の方がいらっしゃいましたら、
お教え頂ければ幸いに存じます。宜しくお願い致します。
 

Re: 前景色と背景色の変更

 投稿者:白石 和夫  投稿日:2010年 4月19日(月)08時55分47秒
  > No.1191[元記事へ]

いたずら目的であれば,Win32APIを使ってできるかもしれません。
(ただし,エディタ本体のRichEditコントロールのハンドルの取得が難しいかもしれません)

実用目的であれば,Lazarus版のソースを公開しているので,
好みに合うように書き換えて使うのが確実です。
から,BASIC055JaSRC.zipを取得してください。
別途,Lazarusのインストールが必要です。
Lazarusを起動したら,プロジェクト・メニューの「プロジェクトを開く」で
basic.lpiを指定してソースを読み込んでください。
 

Re: 前景色と背景色の変更

 投稿者:イーグル  投稿日:2010年 4月19日(月)22時19分5秒
  > No.1192[元記事へ]

 ご返信ありがとうございます。

 「WIN32APIを使って」という方法の
概要が良く分からないのですが。
 何らかのツールで、既存の十進BASICを
改造するということなのかとも推察致しましたが、
方法も良く分からないので止めて置きます。

 Lazarus版を書き換えるという方法ですが。
win32 Lazarus + fpc 2.4.0をインストールし、
BASIC055JaSRC.zipを解凍したソースファイルから
プロジェクトを開くことは出来たのですが。
ビルドや実行をしようとすると、メッセージペインに
大量の情報と警告が出た後、最終的にはエラーが出て、
実行が出来ません。basic.rcやmanifest.rcが
開けないというエラーだったので、
ダミーファイルを作成しましたが、
外のエラーが出て止まってしまいます。
 外のバージョンのBASIC054JaSRC.zipや、
49や48を試してみたのですが、
どれも同じような状態です。
 試しに、ボタンだけの単純なプロジェクトを
作ってみた所、実行は出来ました。
 しかし、以上の問題が解決したとしても、
この環境に関する知識がなく、
書き換えには、非常に手間隙が掛かりそうなので、
ここで止めて置きます。

 尚、その後、ふと思い浮かんだ方法を試しました。
Windows自体の設定を変更する方法です。
デザインの設定に於ける詳細設定で
ウィンドウの配色を変更すると、目的が達成されそうです。
 これはこれで、影響の及ぶ範囲が広く、
思わぬ問題点も出て来るでしょうが、
暫くはこの方法で使わせて頂こうと思います。

 いきなりの質問に対して、解決策の方針を
お教え下さいまして、ありがとうございました。
 

Re: 前景色と背景色の変更

 投稿者:白石 和夫  投稿日:2010年 4月20日(火)09時21分16秒
  > No.1194[元記事へ]

イーグルさんへのお返事です。

Win32APIを使う例は
にあります。また,十進BASIC過去ログ
にはより高度な手法が見出されると思います。
ただし,この方法で目的の処理ができるという保証はありません。

Lazarusで再コンパイルする方法は確実ですが,
Lazarusの扱いに慣れるのに時間がかかると思います。
manifest.rcがないためにエラーになる問題は,
basic.lprの65行目にある
{$IFDEF WINDOWS}{$R manifest.rc}{$ENDIF}
を削除すれば解決すると思います。
プログラム編集画面のソースはmainfrm.pasです。Lazarusのファイルメニューでmainfrm.pasを開いてください。
 

Re: 前景色と背景色の変更

 投稿者:イーグル  投稿日:2010年 4月23日(金)00時47分30秒
  > No.1195[元記事へ]

白石 和夫さんへのお返事です。

 ありがとうございます。

> イーグルさんへのお返事です。
>
> Win32APIを使う例は
> にあります。また,十進BASIC過去ログ
> にはより高度な手法が見出されると思います。
> ただし,この方法で目的の処理ができるという保証はありません。

 なるほど。Win32APIをBASICプログラムから使えるということですか。
私の頭には、本体となるWindowは変更できないという先入観が
あったために、これらの記述を見過ごしており、気付くことができませんでした。
 Win32APIを使ったことが無いので、こちら
のサイトさんで調べて、試そうともしてみましたが、お手上げ状態です。
このサイトさん、或いは書籍を一通り学べば、取っ掛かりとなるのかも知れませんが。

> Lazarusで再コンパイルする方法は確実ですが,
> Lazarusの扱いに慣れるのに時間がかかると思います。
> manifest.rcがないためにエラーになる問題は,
> basic.lprの65行目にある
> {$IFDEF WINDOWS}{$R manifest.rc}{$ENDIF}
> を削除すれば解決すると思います。
> プログラム編集画面のソースはmainfrm.pasです。Lazarusのファイルメニューでmainfrm.pasを開いてください。

 ご教示の通りにすると、エラーが出なくなりました。
その後なのですが、今度は
   windres: no resources
   basic.lpr(125,1) Error: Error while compiling resources
   basic.lpr(125,1) Fatal: There were 1 errors compiling module, stopping
というエラーが出てしまいました。
この1行目をクリックすると、「ファイル""が見つかりません~後略~」と出ます。
 windresが無いのが問題なのかと思い、cygwinのbinutilsパッケージを
インストールし、windresにPathを通してみましたが、的外れだったようで。
 やはり難しい。こういったエラーを
自力で解決できないのですから、どうにも、不勉強を感ずる次第です。
 Pascalを細々と学び始めようかなと思って、適当に本を選んでみました。
 こちらの方法にしても、大分時間が掛かりそうな感じがします。

 返信頂き、ありがとうございました。
 

Re: 前景色と背景色の変更

 投稿者:白石 和夫  投稿日:2010年 4月23日(金)08時54分22秒
  > No.1197[元記事へ]

>    windres: no resources
>    basic.lpr(125,1) Error: Error while compiling resources
>    basic.lpr(125,1) Fatal: There were 1 errors compiling module, stopping
このエラーは,こちらでは再現しないのでなんともいえませんが,Lazarusあるいはfpcシステム固有(さらにはおそらくOS依存)の問題なので,Pascalの基本をいくら学んでも解決しないと思います。
 

Re: 前景色と背景色の変更

 投稿者:白石 和夫  投稿日:2010年 4月27日(火)08時12分37秒
  > No.1198[元記事へ]

> >    windres: no resources
> >    basic.lpr(125,1) Error: Error while compiling resources
> >    basic.lpr(125,1) Fatal: There were 1 errors compiling module, stopping
ソースを マイ ドキュメント に置くと再現しました。
FPC,Lazarusでは,Windowsのロングファイル名は使えないことになっています。
ソースをマイドキュメントとかデスクトップに置くのはトラブルの原因になると思います。
 

Re: 前景色と背景色の変更

 投稿者:イーグル  投稿日:2010年 4月28日(水)12時36分32秒
  > No.1203[元記事へ]

白石 和夫さんへのお返事です。

 ご返信頂きありがとうございます。

> このエラーは,こちらでは再現しないのでなんともいえませんが,
> Lazarusあるいは fpcシステム固有(さらにはおそらくOS依存)の問題なので,
> Pascalの基本をいくら学んでも解決しないと思います。

 ご指摘頂きありがとうございます。

>ソースを マイ ドキュメント に置くと再現しました。
>FPC,Lazarusでは,Windowsのロングファイル名は使えないことになっています。
>ソースをマイドキュメントとかデスクトップに置くのはトラブルの原因になると思います。

 ロングファイル名ということですが、この場合は、ファイル名だけでなく、
フォルダ名やパス名が問題になってくるということなのでしょうか。
 私はソースを、マイドキュメントやデスクトップには置いていませんが、
例えば、「D:\hoge\piyopiy\BASIC\BASIC055JaSRC」という
パスのフォルダに置いています。
因みにlazarusとfpcは、例えば
D:\piyopiy\Pascal\lazarus
D:\piyopiy\Pascal\lazarus\fpc\2.4.0
というパスにインストールしました。OSはWindows Vista Business 32bitです。

 以上のことから、以前からのパスのフォルダ、
並びに、D:\hoge\BASIC055JaSRCのフォルダ、
そしてD:\hoge\BASIC055のフォルダで、再度実行してみたのですが、
何故か今度はwindresのエラーが再現せず、
debugdg.pas(239,23) Error: Identifier not found "HasDebugMark"
debugdg.pas(241,29) Error: Identifier not found "SetDebugMarks"
debugdg.pas(251,27) Error: Identifier not found "SetDebugMarks"
debugdg.pas(302) Fatal: There were 3 errors compiling module, stopping
というエラーが出てしまいました。

 このプロジェクトは、正常な環境で実行すれば
情報や警告やエラーが出ずに実行されるものなのでしょうか。
 少し試しで、Linux系のDistributionで一般的な
Ubuntuに於いて、環境を作って実行してみましたが、
そちらは別のエラーで実行できませんでした。

 エラーの報告ばかりで申し訳ありません。
 

Re: 前景色と背景色の変更

 投稿者:白石 和夫  投稿日:2010年 4月28日(水)13時02分29秒
  > No.1207[元記事へ]

FPCは,Lazarus同梱のものには含まれていないようですが,単独で配布されているバージョンには詳しい説明書がついています。そこにWindowsでのファイル名のことも書いてあったと思います。(当然,パス全体の記述の問題です。)
十進BASICのLazarus版はWindows上で開発して,Linux上,および,MAC上でそれぞれ向けの実行ファイルを作っています。その限りにおいては,多様な環境に対応していますが,Lazarus自体が開発途上で十分に安定しているとは言えないので,その保証はありません。
なお,コンパイラは大量の警告を発しますが,それらは無視してください。
 

Re: 前景色と背景色の変更

 投稿者:白石 和夫  投稿日:2010年 4月28日(水)18時35分4秒
  > No.1207[元記事へ]

> debugdg.pas(239,23) Error: Identifier not found "HasDebugMark"
> debugdg.pas(241,29) Error: Identifier not found "SetDebugMarks"
> debugdg.pas(251,27) Error: Identifier not found "SetDebugMarks"
> debugdg.pas(302) Fatal: There were 3 errors compiling module, stopping
> というエラーが出てしまいました。
これらのエラーが出るのは,Lazarusの新バージョンでsyneditコンポーネントのパスが変更されたか,もしくは,basic.lprを読み込んでコンパイルしようとしたかのいずれかだと思います。
 

Re: 前景色と背景色の変更

 投稿者:イーグル  投稿日:2010年 5月 9日(日)00時30分45秒
  > No.1209[元記事へ]

白石 和夫さんへのお返事です。

> > debugdg.pas(239,23) Error: Identifier not found "HasDebugMark"
> > debugdg.pas(241,29) Error: Identifier not found "SetDebugMarks"
> > debugdg.pas(251,27) Error: Identifier not found "SetDebugMarks"
> > debugdg.pas(302) Fatal: There were 3 errors compiling module, stopping
> > というエラーが出てしまいました。
> これらのエラーが出るのは,Lazarusの新バージョンでsyneditコンポーネントのパスが変更されたか,もしくは,basic.lprを読み込んでコンパイルしようとしたかのいずれかだと思います。

 ご返信ありがとうございます。

 プロジェクトを開く際にbasic.lpiを指定しているので、
恐らくは、前者に該当するかと思われます。

 syneditコンポーネントというのは、プログラムの部品で、
エディターに当たる部分なのだろうと推察致します。
 とりあえず、syneditに関連する例である
lazarus\examples\synedit1.lpiを実行し、
手を加えて、どこまで理解できるか試してみましたが。
syneditコンポーネントのパスというのは、
捉えるのが中々難しそうです。
 

Re: 前景色と背景色の変更

 投稿者:白石 和夫  投稿日:2010年 5月 9日(日)10時51分14秒
  > No.1225[元記事へ]

Lazarusのプロジェクトメニューにある「コンパイラオプション」で,
その他のユニットファイルで目的のコンポーネントのユニットファイルへのパスを指定します。
右端の…マークのボタンをクリックするとパスエディタが表示されるので,その4行目の
\components\synedit\units
を実態に合うように修正してください。(Explorerでフォルダ構成を調べて・・・という意味です。)
なお,basic049は,syneditを使っていないので,synedit関連のエラーはでないはずです。そちらを先に試してみると原因がはっきりすると思います。

・・・・・・というか,Lazarusの環境をコンパイルが成功する状態にまで戻すのが先でしょう。
それから,basic.lpiは配布ファイルに含まれるものを使っていますか?
basic.lpiの日付の確認も必要かと思います。
 

Re: 前景色と背景色の変更

 投稿者:山中和義  投稿日:2010年 5月10日(月)10時04分22秒
  > No.1225[元記事へ]

イーグルさんへのお返事です。

私もやってみました。参考まで、、、


概要
 WindowsMe、PentiumⅢ700MHz、192MB にて
 Lazarus fixes + fpc 2.4.0(Lazarus-0.9.28.3-25244-fpc-2.4.0-20100508-win32.exe)をインストールして
 basic.lpr の65行目と67行目をコメントアウトすると、basic.exeが作成できました。
 (日々更新されているので数字の部分は違いますが、「fixes版を選択する」ということです。)

 他の2つの最新版(Lazarus + fpc 2.4.0 または Lazarus + fpc 2.4.1)では
  debugdg.pas(239,23) Error: Identifier not found "HasDebugMark" など
 のエラーが発生してコンパイルできませんでした。
 最新版は避けた方がいいでしょう。(先に進めないので、避けざるを得ない。)
 極力障害を避けるため、インストーラが要求するフォルダ(C:\lazarus)にインストールすることを薦めます。

 また、掲示板での報告「フォルダ(ディレクトリ)名の問題」で発生するエラーの関連性はないようです。
 マイドキュメント内(C:\My Documents\hoge\BASIC055JaSRC など)でもコンパイル・リンク可能です。


詳細
●実行モジュール作成環境(フォルダ)
ソースファイル
 D:\hoge\BASIC055JaSRC\BASIC055JaSRC

コンパイラ・リンカ
 C:\lazarus
 C:\lazarus\fpc\2.4.0

 Lazarus fixes + fpc 2.4.0(Lazarus-0.9.28.3-25244-fpc-2.4.0-20100508-win32.exe)をインストール


コンパイル・リンク方法
[step1]
 lazarus を起動して、「Project」-「Open Project ...」から、basic.lpi を開く。
 または
 lazarus を起動して、「File」-「Open ...」から、basic.lpi を開く。
 または
 D:\hoge\BASIC055JaSRC\BASIC055JaSRC 内の basic.lpi をダブルクリックしてlazarus を起動する。


[step2]
 「File」-「Open ...」から、basic.lpr を開く。(Source Editor上に表示される)

 basic.lpr の65行、67行

  {$IFDEF WINDOWS}{$R manifest.rc}{$ENDIF}
  {$IFDEF WINDOWS}{$R basic.rc}{$ENDIF}
 を
  //{$IFDEF WINDOWS}{$R manifest.rc}{$ENDIF}
  //{$IFDEF WINDOWS}{$R basic.rc}{$ENDIF}
 のようにコメントアウトする。(青字に変わる)


[step3]
 「Run」-「Build all」を選ぶ。
 または
 「Run」-「Build」を選ぶ。



●実行環境(フォルダ)
 D:\hoge\BASIC055JaSRC

コンパイル・リンクしたBASIC本体を、下位階層 D:\hoge\BASIC055JaSRC\BASIC055JaSRC から
 basic.exe ファイルサイズ 24.0MB
を移動(またはコピー)する。

C:\BASICw32 内(十進BASIC内)から、次の5つの補助ファイル
 BASIC.INI
 BASIC.KW1
 BASIC.KW2
 BASIC.kwF
 BASIC.kwS
をコピーする。


実行方法
 basic.exe をダブルクリックして、「lazarus版十進BASIC」を実行する。
 

Re: 前景色と背景色の変更

 投稿者:山中和義  投稿日:2010年 5月10日(月)12時18分41秒
  > No.1227[元記事へ]

つづき(文字色、背景色の変更)

「DOSプロンプト」画面ふ~の色(黒地に白)にしてみました。
Windowsアプリケーション開発の経験がなければ少し難しいかも、、、


詳細
 「File」-「Open ...」から、MainFrm.pas を開く。(Source Editor上に表示される)

[step1]
「フォーム BASIC」ウインドウ内(「プログラムを編集する画面」にあたる)
 白い部分をクリックして、アクティブにする

Object Inspector ウインドウ内
 Propertiesタグ内
  Color
   clBlack を選ぶ。背景色が黒になる。

  Font
   Color
    clWhite を選ぶ。文字色が白になる。 ※BASIC画面で設定可能なため、特に修正は必要でない

  SelectedColor
   Backgroud
    clHighlightText を選ぶ。背景色が白系になる。
   Foreground
    clHighlight を選ぶ。文字色が黒系になる。


[step2]
「フォーム BASIC」ウインドウ内(BASIC画面での「プログラムを編集する画面」にあたる)
 アイコン SynAnySyn1 をクリックして、アクティブにする

Object Inspector ウインドウ内
 Propertiesタグ内
  StringAttr
   Foreground
    clNone を選ぶ。「Font」色になる。 ※BASIC画面でFONT色の設定と連動できる。


[step3]
 「Run」-「Build all」を選ぶ。
 または
 「Run」-「Build」を選ぶ。

 警告画面 Missing Events が表示されるので、Cancel以外を選ぶ。


●技術メモ
エディタモジュールをよく見ると

StringAttr  → ”で囲まれた文字列
Keyword、KeyAttr  → 命令
Objects、ObjectAttr  → 関数

と解釈して変更することで、機能語(命令や関数など)を色分けすることが可能です。
ただし、文法ではなく文字列による解釈となります。

.
 

Re: 前景色と背景色の変更

 投稿者:イーグル  投稿日:2010年 5月11日(火)18時39分48秒
  > No.1226[元記事へ]

白石 和夫さんへのお返事です。

> Lazarusのプロジェクトメニューにある「コンパイラオプション」で,
> その他のユニットファイルで目的のコンポーネントのユニットファイルへのパスを指定します。
> 右端の…マークのボタンをクリックするとパスエディタが表示されるので,その4行目の
> \components\synedit\units
> を実態に合うように修正してください。(Explorerでフォルダ構成を調べて・・・という意味です。)
> なお,basic049は,syneditを使っていないので,synedit関連のエラーはでないはずです。そちらを先に試してみると原因がはっきりすると思います。
>
> ・・・・・・というか,Lazarusの環境をコンパイルが成功する状態にまで戻すのが先でしょう。

 パスの設定方法はおろか、syneditの概念さえも
良く分からなかったもので、まずはsyneditについて調べてみた次第です。
 御助言を頂きましたので、パスを確認してみました。該当するパスは
$(LazarusDir)\components\synedit\units\i386-win32\
であると思われまして、実態としては、
D:\piyopiy\Pascal\lazarus\components\synedit\units\i386-win32でしたので、
特に問題はないように思われました。
絶対パスも入れてみましたが、特に変化はなかったように思われます。
 コンパイルが成功した状態というのは、なかったように思われます。

> それから,basic.lpiは配布ファイルに含まれるものを使っていますか?
> basic.lpiの日付の確認も必要かと思います。

 basic.lpiは、ソース一式に同梱されていた物を使いました。
作成日時は2010年4月28日、11:40:04でした。

 ご返信頂きありがとうございました。
 

Re: 前景色と背景色の変更

 投稿者:イーグル  投稿日:2010年 5月11日(火)18時45分41秒
  > No.1228[元記事へ]

山中和義さんへのお返事です。

 Lazarusを一旦アンインストールし、御助言の通り、
Lazarus fixes + fpc 2.4.0
Lazarus-0.9.28.3-25285-fpc-2.4.0-20100510-win32.exe
(66.3Mo) をインストールしました。
 プロジェクトを開き、basic.lprの一部コメントアウトの後、
「全ての構築」に成功しました。
 そして、新フォルダに実行形式ファイルをコピーし、
十進BASICのフォルダから補助ファイルもコピーしまして、
無事に実行することができました。

 以前話題に挙がっていたMainFrm.pasを開きまして、
コードの中身は良く分からなかったのですが。
同時に出現したプレビューのような画面で入力部分を
クリックすることで、オブジェクトインスペクタで
対応する項目が選択されることが分かりました。
それはMemo1: TSynEditという項目でして、
その下部でプロパティタブのColorを編集すれば、
背景色が変えられることが分かりました。
 その後、全ての構築から、
上記と同様の方法で実行することができました。

 詳しい説明と共に、スクリーンショットを交えて、
背景色だけでなく、キーワード配色の設定までご教示頂き、
ありがとうございます。補助ファイルの部分は、
恐らく自分で解決するのは難しかったでしょうから、
教えて頂いて助かりました。
 これで目標としていた機能を得ることが出来ました。
皆様ありがとうございました。
 

戻る