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

投稿

 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...