スキップしてメイン コンテンツに移動

投稿

2021の投稿を表示しています
 Windows用のXojoで作っている自作アプリをMacで動かしてみました。  Windowsマシン(Surface Laptop Go)の中のソースファイル(XojoWordBook.xojo_binary_project)をネット経由でMac(Mac Book Pro 2019)のSSDにコピーして、Mac用のXojoを起動して読み込んでみました。  作成中のフォーム画面などが再現され、実行ボタンでそのまま実行できました!  フォントの違いなどでラベルの文字がはみ出すなどの不具合はありましたが、微調整すれば、そのまま使用できそうです。  素晴らしい!
単語帳アプリ、とりあえず基本的な動作確認  Xojoで作成中の単語帳アプリですが、基本的な動作は、実装できました。  といっても、日本語と英語を交互に表示するだけですが(^^;  英語の表示は、当初はフォームクリックで考えていたのですが、明示的ではないので、Answerというボタン(Btn_Answer)を追加しました。  プログラムの中でListBoxの問題位置を保存しておく変数が必要だったのですが、モジュール共通の変数(グローバル変数?)の作り方がわからず、困っていたのですが、いろいろ調べるうちに、モジュールを追加し、プロパティで変数を登録すればなんとかなりそうだったので、やってみました。  とりあえず、2つの整数型変数(indexLBW、indexMaxLBW)を登録し、ボタンクリックなどのイベントで参照できることを確認しました。  しかし、プロパティでは、配列変数の定義はできなさそうだったので、何か別に方法があるのか、まだ調べる必要があります。  まぁとりあえず、  問題ファイル読込 → 日本語表示 → (Answerボタン)英語表示 → (Next Wordボタン) → 次の日本語表示 → 繰り返し  までは動くようになりました。
 単語帳アプリの画面レイアウト作成 ラベルを3つ、チェックボックスを1つ、ボタンを1つのシンプルな画面です。 上から 問題番号表示用のラベル (L_Index)、日本語表示用のラベル (L_Jp)、英語表示用のラベル (L_En)、覚えたチェック用のチェックボックス (Ch_Mem)、次の問題へ移るボタン (Btn_Next)です。 試しに文字を表示するとこんな感じです。いまいちバランスが悪いかも。 細かい手直しは、後で行うことにします。 今日は、久しぶり(数年ぶり)に仕事が終わった後でジョギングをしました。久しぶりすぎて腰が違和感です。早めに休むことにしたいと思いますので、今日はここまで。
 Xojoの文法は、VBAに近い Xojoの文法は、VBAに近いので関数を探すときなどに助かっています。 作成中の単語帳アプリ(XojoWordBook)ですが、問題テキストのデータを変えることにしました。今までは、日本語、英語と1行ずつのデータでしたが、日本語と英語をカンマ(,)で区切ったデータに変更しました。 Xojoでの読込は、qt = input.ReadLine で1行読込、カンマ(,)で読み込んだデータを分割することしました。 jp = Left(qt, qt.IndexOf(",")) en = Mid(qt, qt.IndexOf(",")+2,999) VBAでは文字列検索は、InStr関数ですが、Xojoでは、変数.IndexOf(検索文字)となっています。InStrの返り値は、1からですが、IndexOfは0が先頭文字なので注意が必要です。 見直したコードは、以下のとおりです。 // 問題テキストファイルを読み込む Var f As FolderItem f = FolderItem.ShowOpenFileDialog("text;txt") if f <> Nil And f.Exists Then   Var input As TextInputStream   input = TextInputStream.Open(f)      Var qt, jp, en As String '問題テキスト、日本語、英語      While Not input.EndOfFile     qt = input.ReadLine     jp = Left(qt, qt.IndexOf(","))     en = Mid(qt, qt.IndexOf(",")+2,999)     ListBox1.AddRow("", jp, en)   Wend   input.Close End if Return True 結局、また画面作成ができませんでした。明日頑張ることにします。
今日は、Xojoプログラミングはお休みです  今日は、休日の予定でしたが、仕事に出ないといけなくなり、Xojoでのプログラミングができませんでした。  夜は、日本シリーズに見はまってしまい...(笑)  今日は、アプリの画面を作る予定だったので、イメージ図だけ書いておくことにします。  前は、ノートに書いていたんですが、最近は、iPadのノートアプリで書いています。仕事でも使っている iPad mini5 に書いています。画面サイズが小さいのが難ですが、持ち歩きが楽なので使っています。  野球は、延長戦になりました。  野球が終わるまでに書き上げてしまいたいので(明日も仕事なんで)、blogは、このへんにしておきます。
Menuに問題テキスト読込メニューを追加してみました XojoのサイトでMenuの追加方法を調べたのですが、追加したメニューに処理コードを書く方法がわからず、困っていたのですが、YouTubeでXojo関係の動画を検索したところ、その中に解説動画がありました。 英語でしたが、日本語翻訳の字幕を見ながら、なんとか理解できました。 早速やってみました。 左のMainMenuBarの下のFileMenuの中に追加することにしました。 追加は、メニューの上に並んだアイコンの一つ(Criate a new item in this menu)から行います。 メニュー名の設定などは、右のinspectorで行います。 メニュー名は、LoadQTextとしました。 イベントハンドラの追加は、(ここでは)Window1を選択し、検索バーの横の + ボタンから、MenuHandlerを選びます。 MenuHandlerの編集画面が出たら、右側でどのメニューに対応させるか設定します。 昨日の問題ファイル読込ボタンのクリック時の処理のコードを丸ごとコピーして貼り付けました。 用無しになった読込ボタンは削除しました。 テストしてみると、ちゃんとメニューを選ぶとファイル選択画面が出てきて、問題テキストファイルの読み込みができました。 明日からは、アプリの画面レイアウトに入りたいと思います。
ListBoxに問題データを保存 昨日のBlogでは、ListBoxは使わないと書いていましたが、問題データを保存するためにListBoxを非表示にして使うことにしました。 当初は、配列変数に保存するつもりだったのですが、グローバル変数の作り方がわからない(汗)ということと、ListBoxに入れておけばソートとかできて便利だろうということで方針を変更しました。 ListBoxは、3列にして、1行ずつ「出題順、和訳、英単語」のデータを保存することにしました。 // 問題テキストファイルを読み込む Var f As FolderItem f = FolderItem.ShowOpenFileDialog("text;txt") if f <> Nil And f.Exists Then   Var input As TextInputStream   input = TextInputStream.Open(f)   Var JP, EN As String   Var N As Integer   While Not input.EndOfFile     N = System.Random.InRange(0, 100)     JP = input.ReadLine     EN = input.ReadLine     ListBox1.AddRow(Format(N,"000"), JP, EN)   Wend   input.Close   ListBox1.SortingColumn = 0   ListBox1.Sort   MessageBox(Str(Listbox1.RowCount)) End if 出題順に乱数を登録して、ソートしてみました。 とりあえずうまく動きました。 明日は、メニュー周りにチャレンジしたいと思います。 【覚書メモ】 乱数 System.Random.InRange(0, 100)  ListBoxソート ListBox1.SortingColumn = 0 ListBox1.Sort ListBoxの行数 Listbox1.R...
 単語帳アプリを作ってみる。 Xojo(Windows版)を使って、単語帳アプリを作り始めました。 仕事が終わってからの作業になるので、なかなか時間が取れないですが、毎日少しずつ頑張っていきたいと思います。 とりあえずアプリ名決めからですが、お試しで作るアプリなので、安直に「XojoWordBook」という名前にしました。 今日は、テキストファイルの読み込みのテストをしたいと思います。 メインフォーム上に、ボタンとリストボックスを配置し、ボタンを押したら、ファイル選択のダイアログが出て、テキストファイルを選択したら、リストボックスに取り込まれるというところまで作ってみました。 実際のアプリでは、リストボックスは使わないのですが、うまく読み込まれるかどうかのテストのために配置しました。 ボタンに登録したコードは、以下のとおりです。ほぼ、Xojoのドキュメントのコピペですが。 Var f As FolderItem f = FolderItem.ShowOpenFileDialog("application/text") if f <> Nil And f.Exists Then   Var input As TextInputStream   input = TextInputStream.Open(f)   While Not input.EndOfFile     ListBox1.AddRow(input.ReadLine)   Wend   input.Close End if ShowOpenFileDialogの後の( )の中の書き方がいまいちわからなかったのですが、とりあえず実行してみます。 ボタンを押してダイアログからファイルを選択すると、リストボックスに読み込まれました。 とりあえず、今日は、ここまでにします。
 Xojoを使って単語帳アプリを作る。 Xojoで何を作るか考えていましたが、まずは、簡単なものからお試しに作ってみようと思います。 Xojoを使いこなすためには、英語が読めるようにならないとダメ(笑)なので、英語の勉強に役立つ単語帳を作ってみることにします。 基本的な仕様をまとめてみます。 ・日本語を表示して英訳を考える。(日本語表示ラベル) ・ボタンを押すと、英訳を表示。(ボタン、英訳表示ラベル) ・日本語、英訳のデータは、テキストファイルで作ってあるものを読み込む。 ・次の問題に進むボタンを置く。(ボタン) ・問題数(n/m)を表示。(問題数表示ラベル) ・覚えた問題を再度出さないようにするチェックボックスを置く。(チェックボックス) ・アプリの起動時に自動的に問題開始。 ・出題方法は、テキスト登録順とランダムの2種類。 ・メニューで、出題のリスタート、出題方法の切り替えができるようにする。 とりあえず、こんなところでしょうか。 明日から開発に入りたいと思います。 まずは、テキストファイルの読み込み辺りから、ドキュメントを読んで調べていきたいと思います。
 Xojoについて Wikipediaからのコピペですいません。 ==== Xojoは、Xojo社によって開発されたソフトウェアの開発ツールであり、オブジェクト指向を採用した独自のBASIC言語を使用し、統合開発環境を備える。2013年までは「REALbasic」(1997年の買収以前製品名は「CrossBASIC」)と呼ばれた。 あらかじめ備えられている機能が豊富なことやGUIのデザインが簡単であること、非常に理解しやすい言語仕様などから、とくに初心者に愛用される。日本では株式会社アスキーソリューションズが代理店となり販売およびサポートを提供していたが、2007年4月に開発元であるReal Software社に移管されることが発表された。 主にMacintosh版が知られ、しばしば「Macintosh版のVisual Basic」と喩えられるが、Windows版ならびにLinux/x86版も存在する。また、利用している環境に関わらず、全てのプラットフォーム用の実行バイナリを出力することができるため、双方向のクロスプラットフォーム開発が可能である。 なお、Xojoは、Universal Binaryアプリケーションを作成することのできる、サードパーティー開発ツールのひとつである。 ==== 私は、プログラミングは本業ではないのですが、仕事でExcelのVBAを使うことが多いので、VBA(Basic)はそれなりに分かるので、Visual Basicベース?らしいXojoは、意外と使えるんじゃないかなと思って買ってしまいました。 早速、簡単なプログラムを作ってみようと思います。
前から興味のあった Xojo というプログラミング言語に手を出してみることにしました。 ブラックフライデーで20%オフになっていたのが背中を押しました(笑) 購入したのは、Lite版(通常 99$ → 79$:日本円で約9,000円)で、Windows版とMac版の2種類を購入しました。 Lite版がインストールできるのは、1台だけなので、Windows版は、最近買った Surface Laptop Goにインストールしました。Mac版は、Mac Book Pro 2019にインストールする予定です。 Xojoは、マイナーな言語?らしく、日本に市販の書籍は皆無(たぶん)なので、Xojoのホームページにあるドキュメントが頼りですが、全部英語(当然ですが)なので、Google翻訳に頼りながら勉強を進めていくことにします。 どうなることやら(笑)。