|
|
187行目: |
187行目: |
| |} | | |} |
| :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]] | | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]] |
− | ----
| |
− |
| |
− | == Add events to the object ==
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | The user can assign callback functions to an object to see its events.
| |
− |
| |
− | In practice, it looks like this:
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | lv_obj_t * btn = lv_btn_create(lv_scr_act());
| |
− | lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_CLICKED, NULL); /*Assign an event callback*/
| |
− |
| |
− | ...
| |
− |
| |
− | static void my_event_cb(lv_event_t * event)
| |
− | {
| |
− | printf("Clicked\n");
| |
− | }
| |
− | </syntaxhighlight>
| |
− | In the example <code style="color: #bb0000;">LV_EVENT_CLICKED</code> means that only the click event will call <code style="color: #bb0000;">my_event_cb</code>.
| |
− |
| |
− | See the list of event codes for all the options.
| |
− |
| |
− | <code style="color: #bb0000;">LV_EVENT_ALL</code> can be used to receive all events.
| |
− |
| |
− |
| |
− | The last parameter of <code style="color: #bb0000;">lv_obj_add_event_cb</code> is a pointer to any custom data that will be available in the event.
| |
− |
| |
− | It will be described later in more detail.
| |
− |
| |
− | More events can be added to an object, like this:
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | lv_obj_add_event_cb(obj, my_event_cb_1, LV_EVENT_CLICKED, NULL);
| |
− | lv_obj_add_event_cb(obj, my_event_cb_2, LV_EVENT_PRESSED, NULL);
| |
− | lv_obj_add_event_cb(obj, my_event_cb_3, LV_EVENT_ALL, NULL); /*No filtering, receive all events*/
| |
− | </syntaxhighlight>
| |
− | Even the same event callback can be used on an object with different <code style="color: #bb0000;">user_data</code>.
| |
− |
| |
− | For example:
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num1);
| |
− | lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num2);
| |
− | </syntaxhighlight>
| |
− | The events will be called in the order as they were added.
| |
− |
| |
− | Other objects can use the same ''event callback''.
| |
− | |ユーザーは、オブジェクトにコールバック関数を割り当てて、そのイベントを確認することができます。
| |
− |
| |
− | 実際には、以下のような感じです。
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | lv_obj_t * btn = lv_btn_create(lv_scr_act());
| |
− | lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_CLICKED, NULL); /*Assign an event callback*/
| |
− |
| |
− | ...
| |
− |
| |
− | static void my_event_cb(lv_event_t * event)
| |
− | {
| |
− | printf("Clicked\n");
| |
− | }
| |
− | </syntaxhighlight>
| |
− | この例では、<code style="color: #bb0000;">LV_EVENT_CLICKED</code> は、クリックイベントだけが<code style="color: #bb0000;">my_event_cb</code>を呼び出すことを意味します。
| |
− |
| |
− | すべてのオプションについては、イベントコードのリストを参照してください。
| |
− |
| |
− | <code style="color: #bb0000;">LV_EVENT_ALL</code>は、すべてのイベントを受信するために使用することができます。
| |
− |
| |
− |
| |
− |
| |
− | <code style="color: #bb0000;">lv_obj_add_event_cb</code>の最後のパラメータは、イベントで利用可能な任意のカスタムデータへのポインタです。
| |
− |
| |
− | これについては、後で詳しく説明します。
| |
− |
| |
− | このように、オブジェクトにはさらにイベントを追加することができます。
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | lv_obj_add_event_cb(obj, my_event_cb_1, LV_EVENT_CLICKED, NULL);
| |
− | lv_obj_add_event_cb(obj, my_event_cb_2, LV_EVENT_PRESSED, NULL);
| |
− | lv_obj_add_event_cb(obj, my_event_cb_3, LV_EVENT_ALL, NULL); /*No filtering, receive all events*/
| |
− | </syntaxhighlight>
| |
− | 同じイベントコールバックでも、<code style="color: #bb0000;">user_data</code>が異なるオブジェクトに対して使用することができます。
| |
− |
| |
− | 例えば
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num1);
| |
− | lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num2);
| |
− | </syntaxhighlight>
| |
− | イベントは、追加された順番に呼び出されます。
| |
− |
| |
− | 他のオブジェクトも同じイベントコールバックを使用することができます。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− | == Remove event(s) from an object ==
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | Events can be removed from an object with the <code style="color: #bb0000;">lv_obj_remove_event_cb(obj, event_cb)</code> function or <code style="color: #bb0000;">lv_obj_remove_event_dsc(obj, event_dsc)</code>.
| |
− |
| |
− | <code style="color: #bb0000;">event_dsc</code> is a pointer returned by <code style="color: #bb0000;">lv_obj_add_event_cb</code>.
| |
− | |イベントは、<code style="color: #bb0000;">lv_obj_remove_event_cb(obj, event_cb)</code> 関数または <code style="color: #bb0000;">lv_obj_remove_event_dsc(obj, event_dsc)</code>. でオブジェクトから削除できる。
| |
− | <code style="color: #bb0000;">event_dsc</code>は<code style="color: #bb0000;">lv_obj_add_event_cb</code>が返すポインタです。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | == Event codes ==
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | The event codes can be grouped into these categories:
| |
− |
| |
− | * Input device events
| |
− | * Drawing events
| |
− | * Other events
| |
− | * Special events
| |
− | * Custom events
| |
− |
| |
− | All objects (such as Buttons/Labels/Sliders etc.) regardless their type receive the ''Input device'', ''Drawing'' and ''Other'' events.
| |
− |
| |
− | However, the ''Special events'' are specific to a particular widget type. See the widgets' documentation to learn when they are sent,
| |
− |
| |
− | ''Custom events'' are added by the user and are never sent by LVGL.
| |
− |
| |
− | The following event codes exist:
| |
− | |イベントコードは、以下のカテゴリーに分類されます。
| |
− |
| |
− | * 入力デバイスイベント
| |
− | * 描画イベント
| |
− | * その他のイベント
| |
− | * 特殊イベント
| |
− | * カスタムイベント
| |
− |
| |
− | すべてのオブジェクト(ボタン/ラベル/スライダーなど)は、そのタイプに関係なく、Input device、Drawing、Otherの各イベントを受け取ります。
| |
− |
| |
− | しかし、特別なイベントは、特定のウィジェットタイプに固有のものです。いつ送信されるかは、ウィジェットのドキュメントを参照してください。
| |
− |
| |
− | カスタムイベントはユーザが追加するもので、LVGLから送信されることはありません。
| |
− |
| |
− | 以下のイベントコードが存在する。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | === Input device events ===
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | * <code style="color: #bb0000;">LV_EVENT_PRESSED</code> An object has been pressed
| |
− | * <code style="color: #bb0000;">LV_EVENT_PRESSING</code> An object is being pressed (called continuously while pressing)
| |
− | * <code style="color: #bb0000;">LV_EVENT_PRESS_LOST</code> An object is still being pressed but slid cursor/finger off of the object
| |
− | * <code style="color: #bb0000;">LV_EVENT_SHORT_CLICKED</code> An object was pressed for a short period of time, then released. Not called if scrolled.
| |
− | * <code style="color: #bb0000;">LV_EVENT_LONG_PRESSED</code> An object has been pressed for at least the <code style="color: #bb0000;">long_press_time</code> specified in the input device driver. Not called if scrolled.
| |
− | * <code style="color: #bb0000;">LV_EVENT_LONG_PRESSED_REPEAT</code> Called after <code style="color: #bb0000;">long_press_time</code> in every <code style="color: #bb0000;">long_press_repeat_time</code> ms. Not called if scrolled.
| |
− | * <code style="color: #bb0000;">LV_EVENT_CLICKED</code> Called on release if an object did not scroll (regardless of long press)
| |
− | * <code style="color: #bb0000;">LV_EVENT_RELEASED</code> Called in every case when an object has been released
| |
− | * <code style="color: #bb0000;">LV_EVENT_SCROLL_BEGIN</code> Scrolling begins. The event parameter is <code style="color: #bb0000;">NULL</code> or an <code style="color: #bb0000;">lv_anim_t *</code> with a scroll animation descriptor that can be modified if required.
| |
− | * <code style="color: #bb0000;">LV_EVENT_SCROLL_END</code> Scrolling ends.
| |
− | * <code style="color: #bb0000;">LV_EVENT_SCROLL</code> An object was scrolled
| |
− | * <code style="color: #bb0000;">LV_EVENT_GESTURE</code> A gesture is detected. Get the gesture with <code style="color: #bb0000;">lv_indev_get_gesture_dir(lv_indev_get_act());</code>
| |
− | * <code style="color: #bb0000;">LV_EVENT_KEY</code> A key is sent to an object. Get the key with <code style="color: #bb0000;">lv_indev_get_key(lv_indev_get_act());</code>
| |
− | * <code style="color: #bb0000;">LV_EVENT_FOCUSED</code> An object is focused
| |
− | * <code style="color: #bb0000;">LV_EVENT_DEFOCUSED</code> An object is unfocused
| |
− | * <code style="color: #bb0000;">LV_EVENT_LEAVE</code> An object is unfocused but still selected
| |
− | * <code style="color: #bb0000;">LV_EVENT_HIT_TEST</code> Perform advanced hit-testing. Use <code style="color: #bb0000;">lv_hit_test_info_t * a = lv_event_get_hit_test_info(e)</code> and check if <code style="color: #bb0000;">a->point</code> can click the object or not. If not set <code style="color: #bb0000;">a->res = false</code>
| |
− | |
| |
− | *<code style="color: #bb0000;">LV_EVENT_PRESSED</code> オブジェクトが押された。
| |
− | *<code style="color: #bb0000;">LV_EVENT_PRESSING</code> オブジェクトが押されている (押されている間、連続して呼び出される)
| |
− | *<code style="color: #bb0000;">LV_EVENT_PRESS_LOST</code> オブジェクトが押されているが、カーソルや指をオブジェクトからスライドさせている状態
| |
− | *<code style="color: #bb0000;">LV_EVENT_SHORT_CLICKED</code> オブジェクトが短時間押され、その後離された。スクロールしている場合は呼び出されない
| |
− | *<code style="color: #bb0000;">LV_EVENT_LONG_PRESSED</code> 入力デバイスドライバで指定された<code style="color: #bb0000;">long_press_time</code> 以上、オブジェクトが押された状態。スクロールしている場合は呼び出されない。
| |
− | *<code style="color: #bb0000;">LV_EVENT_LONG_PRESSED_REPEAT</code> :<code style="color: #bb0000;">long_press_time</code> の後に <code style="color: #bb0000;">long_press_repeat_time</code> ms毎に呼び出される。スクロールしている間は呼び出されない。
| |
− | *<code style="color: #bb0000;">LV_EVENT_CLICKED</code> オブジェクトがスクロールしなかった場合、リリース時に呼び出されます (長押しに関係なく)。
| |
− | *<code style="color: #bb0000;">LV_EVENT_RELEASED</code> オブジェクトが解放されたときに毎回呼び出されます。
| |
− | *<code style="color: #bb0000;">LV_EVENT_SCROLL_BEGIN</code> スクロールが開始されます。イベントパラメータは<code style="color: #bb0000;">NULL</code> か、必要に応じて変更可能なスクロールアニメーション記述子を持つ<code style="color: #bb0000;">lv_anim_t *</code> です。descriptor that can be modified if required.
| |
− | *<code style="color: #bb0000;">LV_EVENT_SCROLL_END</code> スクロールが終了します。
| |
− | *<code style="color: #bb0000;">LV_EVENT_SCROLL</code> オブジェクトがスクロールされました。
| |
− | *<code style="color: #bb0000;">LV_EVENT_GESTURE</code> ジェスチャが検出されました。<code style="color: #bb0000;">lv_indev_get_gesture_dir(lv_indev_get_act());</code>でジェスチャーを取得します。
| |
− | *<code style="color: #bb0000;">LV_EVENT_KEY</code> キーがオブジェクトに送信される。キーは<code style="color: #bb0000;">lv_indev_get_key(lv_indev_get_act());</code>で取得する。
| |
− | *<code style="color: #bb0000;">LV_EVENT_FOCUSED</code> オブジェクトがフォーカスされた。
| |
− | *<code style="color: #bb0000;">LV_EVENT_DEFOCUSED</code> オブジェクトがフォーカスされていない.
| |
− | *<code style="color: #bb0000;">LV_EVENT_LEAVE</code> オブジェクトはフォーカスされていないが、選択されている。
| |
− | *<code style="color: #bb0000;">LV_EVENT_HIT_TEST</code> 高度なヒットテストを実行します。 <code style="color: #bb0000;">lv_hit_test_info_t * a = lv_event_get_hit_test_info(e)</code> を使って<code style="color: #bb0000;">a->point</code> がオブジェクトをクリックできるかどうかをチェックします。クリックできない場合は<code style="color: #bb0000;">a->res = false</code>をセットする。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | === Drawing events ===
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | * <code style="color: #bb0000;">LV_EVENT_COVER_CHECK</code> Check if an object fully covers an area. The event parameter is <code style="color: #bb0000;">lv_cover_check_info_t *</code>.
| |
− | * <code style="color: #bb0000;">LV_EVENT_REFR_EXT_DRAW_SIZE</code> Get the required extra draw area around an object (e.g. for a shadow). The event parameter is <code style="color: #bb0000;">lv_coord_t *</code> to store the size. Only overwrite it with a larger value.
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_MAIN_BEGIN</code> Starting the main drawing phase.
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_MAIN</code> Perform the main drawing
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_MAIN_END</code> Finishing the main drawing phase
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_POST_BEGIN</code> Starting the post draw phase (when all children are drawn)
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_POST</code> Perform the post draw phase (when all children are drawn)
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_POST_END</code> Finishing the post draw phase (when all children are drawn)
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_PART_BEGIN</code> Starting to draw a part. The event parameter is <code style="color: #bb0000;">lv_obj_draw_dsc_t *</code>. Learn more here.
| |
− | * <code style="color: #bb0000;">LV_EVENT_DRAW_PART_END</code> Finishing to draw a part. The event parameter is <code style="color: #bb0000;">lv_obj_draw_dsc_t *</code>. Learn more here.
| |
− |
| |
− | In <code style="color: #bb0000;">LV_EVENT_DRAW_...</code> events it's not allowed to adjust the widgets' properties. E.g. you can not call <code style="color: #bb0000;">lv_obj_set_width()</code>. In other words only <code style="color: #bb0000;">get</code> functions can be called.
| |
− | |
| |
− | *<code style="color: #bb0000;">LV_EVENT_COVER_CHECK</code> オブジェクトが領域を完全に覆っているかどうかをチェックする。イベントパラメータは <code style="color: #bb0000;">lv_cover_check_info_t *</code>です。
| |
− | *<code style="color: #bb0000;">LV_EVENT_REFR_EXT_DRAW_SIZE</code> オブジェクトの周りに必要な余分な描画領域を取得します (例:シャドウ). イベントパラメータは <code style="color: #bb0000;">lv_coord_t *</code> で、サイズを格納する。より大きな値で上書きするだけです。
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_MAIN_BEGIN</code> メイン描画フェーズを開始します。
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_MAIN</code> メイン描画を実行します。
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_MAIN_END</code> 主描画フェーズの終了
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_POST_BEGIN</code> ポスト描画フェーズの開始(すべての子の描画が終了したとき)
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_POST</code> ポスト描画フェーズを実行します (すべての子供が描画されたとき)
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_POST_END</code> ポスト描画フェーズを終了する(すべての子プロセスが描画された場合)。
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_PART_BEGIN</code> パーツの描画を開始します。イベントパラメータは <code style="color: #bb0000;">lv_obj_draw_dsc_t *</code>です。詳しくはこちらで。
| |
− | *<code style="color: #bb0000;">LV_EVENT_DRAW_PART_END</code> パーツの描画を終了します。イベントパラメータは <code style="color: #bb0000;">lv_obj_draw_dsc_t *</code>詳細はこちら。
| |
− |
| |
− | In <code style="color: #bb0000;">LV_EVENT_DRAW_...</code>イベントでは、ウィジェットのプロパティを調整することはできません。例えば、 <code style="color: #bb0000;">lv_obj_set_width()</code>. を呼び出すことはできません。つまり、<code style="color: #bb0000;">get</code> 関数のみが呼び出せます。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | === Other events ===
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | * <code style="color: #bb0000;">LV_EVENT_DELETE</code> Object is being deleted
| |
− | * <code style="color: #bb0000;">LV_EVENT_CHILD_CHANGED</code> Child was removed/added
| |
− | * <code style="color: #bb0000;">LV_EVENT_CHILD_CREATED</code> Child was created, always bubbles up to all parents
| |
− | * <code style="color: #bb0000;">LV_EVENT_CHILD_DELETED</code> Child was deleted, always bubbles up to all parents
| |
− | * <code style="color: #bb0000;">LV_EVENT_SIZE_CHANGED</code> Object coordinates/size have changed
| |
− | * <code style="color: #bb0000;">LV_EVENT_STYLE_CHANGED</code> Object's style has changed
| |
− | * <code style="color: #bb0000;">LV_EVENT_BASE_DIR_CHANGED</code> The base dir has changed
| |
− | * <code style="color: #bb0000;">LV_EVENT_GET_SELF_SIZE</code> Get the internal size of a widget
| |
− | * <code style="color: #bb0000;">LV_EVENT_SCREEN_UNLOAD_START</code> A screen unload started, fired immediately when lv_scr_load/lv_scr_load_anim is called
| |
− | * <code style="color: #bb0000;">LV_EVENT_SCREEN_LOAD_START</code> A screen load started, fired when the screen change delay is expired
| |
− | * <code style="color: #bb0000;">LV_EVENT_SCREEN_LOADED</code> A screen was loaded, called when all animations are finished
| |
− | * <code style="color: #bb0000;">LV_EVENT_SCREEN_UNLOADED</code> A screen was unloaded, called when all animations are finished
| |
− | |
| |
− | *<code style="color: #bb0000;">LV_EVENT_DELETE</code> オブジェクトが削除された
| |
− | *<code style="color: #bb0000;">LV_EVENT_CHILD_CHANGED</code> 子が削除/追加されました。
| |
− | *<code style="color: #bb0000;">LV_EVENT_CHILD_CREATED</code> 子が作成されました。常にすべての親にバブルアップされます。
| |
− | *<code style="color: #bb0000;">LV_EVENT_CHILD_DELETED</code> 子が削除された、常にすべての親にバブルアップされる
| |
− | *<code style="color: #bb0000;">LV_EVENT_SIZE_CHANGED</code> オブジェクトの座標/サイズが変更されました。
| |
− | *<code style="color: #bb0000;">LV_EVENT_STYLE_CHANGED</code> オブジェクトのスタイルが変更された
| |
− | *<code style="color: #bb0000;">LV_EVENT_BASE_DIR_CHANGED</code> ベースディレクトリが変更されました。
| |
− | *<code style="color: #bb0000;">LV_EVENT_GET_SELF_SIZE</code> ウィジェットの内部サイズの取得
| |
− | *<code style="color: #bb0000;">LV_EVENT_SCREEN_UNLOAD_START</code> 画面のアンロードが開始された、lv_scr_load/lv_scr_load_animが呼ばれるとすぐに起動される
| |
− | *<code style="color: #bb0000;">LV_EVENT_SCREEN_LOAD_START</code> スクリーンのロードを開始し、スクリーンチェンジのディレイが切れたときに発行されます。
| |
− | *<code style="color: #bb0000;">LV_EVENT_SCREEN_LOADED</code> スクリーンがロードされた、すべてのアニメーションが終了したときに呼び出される
| |
− | *<code style="color: #bb0000;">LV_EVENT_SCREEN_UNLOADED</code> スクリーンがアンロードされた、すべてのアニメーションが終了したときに呼び出されます。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | === Special events ===
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | * <code style="color: #bb0000;">LV_EVENT_VALUE_CHANGED</code> The object's value has changed (i.e. slider moved)
| |
− | * <code style="color: #bb0000;">LV_EVENT_INSERT</code> Text is being inserted into the object. The event data is <code style="color: #bb0000;">char *</code> being inserted.
| |
− | * <code style="color: #bb0000;">LV_EVENT_REFRESH</code> Notify the object to refresh something on it (for the user)
| |
− | * <code style="color: #bb0000;">LV_EVENT_READY</code> A process has finished
| |
− | * <code style="color: #bb0000;">LV_EVENT_CANCEL</code> A process has been canceled
| |
− | |
| |
− | *<code style="color: #bb0000;">LV_EVENT_VALUE_CHANGED</code> オブジェクトの値が変更された(スライダーが移動した)。
| |
− | *<code style="color: #bb0000;">LV_EVENT_INSERT</code> オブジェクトにテキストが挿入された。イベントデータが <code style="color: #bb0000;">char *</code> で挿入されています。
| |
− | *<code style="color: #bb0000;">LV_EVENT_REFRESH</code>オブジェクトに何かが更新されたことを通知する(ユーザーに対して)。
| |
− | *<code style="color: #bb0000;">LV_EVENT_READY</code> 処理が終了した。
| |
− | *<code style="color: #bb0000;">LV_EVENT_CANCEL</code> 処理がキャンセルされた。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | === Custom events ===
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | Any custom event codes can be registered by <code style="color: #bb0000;">uint32_t MY_EVENT_1 = lv_event_register_id();</code>
| |
− |
| |
− | They can be sent to any object with <code style="color: #bb0000;">lv_event_send(obj, MY_EVENT_1, &some_data)</code>
| |
− | |カスタムイベントコードは、<code style="color: #bb0000;">uint32_t MY_EVENT_1 = lv_event_register_id();</code>で登録することができます。
| |
− |
| |
− | 任意のオブジェクトに<code style="color: #bb0000;">lv_event_send(obj, MY_EVENT_1, &some_data)</code>で送ることができる。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | == Sending events ==
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | To manually send events to an object, use <code style="color: #bb0000;">lv_event_send(obj, <EVENT_CODE> &some_data)</code>.
| |
− |
| |
− | For example, this can be used to manually close a message box by simulating a button press (although there are simpler ways to do this):
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | /*Simulate the press of the first button (indexes start from zero)*/
| |
− | uint32_t btn_id = 0;
| |
− | lv_event_send(mbox, LV_EVENT_VALUE_CHANGED, &btn_id);
| |
− | </syntaxhighlight>
| |
− | |手動でオブジェクトにイベントを送るには、<code style="color: #bb0000;">lv_event_send(obj, <EVENT_CODE> &some_data)</code>.を使ってください。
| |
− |
| |
− | 例えば、ボタンを押したように見えるメッセージボックスを手動で閉じることができます(もっと簡単な方法もありますが)。
| |
− | <syntaxhighlight lang="C++" style="border:1px dashed gray;">
| |
− | /*Simulate the press of the first button (indexes start from zero)*/
| |
− | uint32_t btn_id = 0;
| |
− | lv_event_send(mbox, LV_EVENT_VALUE_CHANGED, &btn_id);
| |
− | </syntaxhighlight>
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | === Refresh event ===
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | <code style="color: #bb0000;">LV_EVENT_REFRESH</code> is a special event because it's designed to let the user notify an object to refresh itself. Some examples:
| |
− |
| |
− | * notify a label to refresh its text according to one or more variables (e.g. current time)
| |
− | * refresh a label when the language changes
| |
− | * enable a button if some conditions are met (e.g. the correct PIN is entered)
| |
− | * add/remove styles to/from an object if a limit is exceeded, etc
| |
− | |<code style="color: #bb0000;">LV_EVENT_REFRESH</code> は特別なイベントで、オブジェクトの更新をユーザに通知するように設計されているからです。いくつかの例を挙げます。
| |
− |
| |
− | * 1つ以上の変数(例えば、現在の時刻)に応じてテキストを更新するようラベルに通知する。
| |
− | * 言語が変更されたときにラベルを更新する
| |
− | * ある条件が満たされたらボタンを有効にする (例: 正しい PIN が入力された場合)
| |
− | * 制限を超えたら、オブジェクトにスタイルを追加/削除する、など。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | == Fields of lv_event_t ==
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | <code style="color: #bb0000;">lv_event_t</code> is the only parameter passed to the event callback and it contains all data about the event. The following values can be gotten from it:
| |
− |
| |
− | * <code style="color: #bb0000;">lv_event_get_code(e)</code> get the event code
| |
− | * <code style="color: #bb0000;">lv_event_get_current_target(e)</code> get the object to which an event was sent. I.e. the object whose event handler is being called.
| |
− | * <code style="color: #bb0000;">lv_event_get_target(e)</code> get the object that originally triggered the event (different from <code style="color: #bb0000;">lv_event_get_target</code> if event bubbling is enabled)
| |
− | * <code style="color: #bb0000;">lv_event_get_user_data(e)</code> get the pointer passed as the last parameter of <code style="color: #bb0000;">lv_obj_add_event_cb</code>.
| |
− | * <code style="color: #bb0000;">lv_event_get_param(e)</code> get the parameter passed as the last parameter of <code style="color: #bb0000;">lv_event_send</code>
| |
− | |<code style="color: #bb0000;">lv_event_t</code> は、イベントコールバックに渡される唯一のパラメータで、イベントに関するすべてのデータを含んでいます。そこから以下の値を得ることができる。
| |
− |
| |
− | *<code style="color: #bb0000;">lv_event_get_code(e)</code> イベントコードを取得します。
| |
− | *<code style="color: #bb0000;">lv_event_get_current_target(e)</code> イベントが送信されたオブジェクトを取得します。すなわち、そのイベントハンドラが呼び出されているオブジェクト。
| |
− | *<code style="color: #bb0000;">lv_event_get_target(e)</code> イベントが最初にトリガーされたオブジェクトを取得します (以下のイベントとは異なります)。 (イベントバブリングが有効な場合、 <code style="color: #bb0000;">lv_event_get_target</code>とは異なります)。
| |
− | *<code style="color: #bb0000;">lv_event_get_user_data(e)</code> は、<code style="color: #bb0000;">lv_obj_add_event_cb</code>の最後のパラメータとして渡されたポインタを取得します。 .
| |
− | *<code style="color: #bb0000;">lv_event_get_param(e)</code> は、<code style="color: #bb0000;">lv_event_send</code>の最後のパラメータとして渡されたパラメータを取得します。get the parameter passed as the last parameter of
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | == Event bubbling ==
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | If <code style="color: #bb0000;">lv_obj_add_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE)</code> is enabled all events will be sent to an object's parent too.
| |
− |
| |
− |
| |
− | If the parent also has <code style="color: #bb0000;">LV_OBJ_FLAG_EVENT_BUBBLE</code> enabled the event will be sent to its parent and so on.
| |
− |
| |
− |
| |
− | The ''target'' parameter of the event is always the current target object, not the original object.
| |
− |
| |
− |
| |
− | To get the original target call <code style="color: #bb0000;">lv_event_get_original_target(e)</code> in the event handler.
| |
− | |If <code style="color: #bb0000;">lv_obj_add_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE)</code> が有効な場合、すべてのイベントはオブジェクトの親にも送信されます。
| |
− |
| |
− |
| |
− | 親も <code style="color: #bb0000;">LV_OBJ_FLAG_EVENT_BUBBLE</code> を有効にしている場合、イベントはその親に送られ、以下同様となります。
| |
− |
| |
− |
| |
− | イベントのターゲットパラメータは、常に現在のターゲットオブジェクトであり、元のオブジェクトではありません。
| |
− |
| |
− |
| |
− | 元のターゲットを取得するには、イベントハンドラで<code style="color: #bb0000;">lv_event_get_original_target(e)</code>を呼び出します。
| |
− | |}
| |
− | :[[App:Library:LVGL:docs:Overview#Events|戻る : Previous]]
| |
− |
| |
− |
| |
− | == Examples ==
| |
− | {| class="wikitable"
| |
− | !英文
| |
− | !自動翻訳
| |
− | |-
| |
− | |
| |
− | === Button click event ===
| |
− | [[file:LVGL docs example 021.png|link=https://docs.lvgl.io/8.2/overview/event.html#button-click-event]]
| |
− | |
| |
− | |-
| |
− | |
| |
− | === Handle multiple events ===
| |
− | [[file:LVGL docs example 022.png|link=https://docs.lvgl.io/8.2/overview/event.html#handle-multiple-events]]
| |
− | |
| |
− | |-
| |
− | |
| |
− | === Event bubbling ===
| |
− | [[file:LVGL docs example 023.png|link=https://docs.lvgl.io/8.2/overview/event.html#id1]]
| |
− | |
| |
− | |}
| |
− |
| |
− |
| |
− |
| |
− | [[App:Library:LVGL#Overview|戻る : Previous]]
| |