AdaloでImage Pickerを実装して、データベースにある画像を更新しようとしています。
Image Pickerには元からデータベースに入っている画像を表示できないよう仕様に見えますが、ここにデータベース内にある既存画像を表示する方法はあるでしょうか?
回避策として下の絵の様にImage Pickerの上にImageでデータベースの画像を重ねた表示を作っていますが、あまり直感的ではありません。
もう一つの回避策として、Formを使ったデータベース更新を試したのですが、userのデータベースはUpdate項目が選択できるのですが、他のデータベースだとCreateしか出てきません。
これは、Adaloの仕様でしょうか?それともどこかの設定ミスでしょうか?
基本的な項目かとは思うのですが、すみませんが、教えて頂けるとありがたいです。
よろしくお願いいたします。
「いいね!」 1
muku
2022 年 9 月 30 日午前 2:02
2
@Toshi_CraftSoundStud さん
回避策として下の絵の様にImage Pickerの上にImageでデータベースの画像を重ねた表示を作っていますが、あまり直感的ではありません。
ここなのですが、レイヤーを3つに分けることで表現できます。
1番下:image (データベースに入っている画像)
真ん中:image2(Image Pickerで選択した画像)
→ if there is no image の際に dont show anythig に設定しておく
→Crop image に設定することで image picker のcropできない問題も解消されます!
1番上:image picker
→edit style から opacityを0に設定しておく
と何も選択していない状態では、元のDBに入っている画像
画像を選択すると選択した画像が表示されるようになります^^
もう一つの回避策として、Formを使ったデータベース更新を試したのですが、userのデータベースはUpdate項目が選択できるのですが、他のデータベースだとCreateしか出てきません。
Updateできますよ〜
Updateしたいデータを引っ張ってくる必要があるため、
以下の手順が必要です。
①フォームを配置しているスクリーンの一つ前に、リストなどデータを選択するスクリーンを配置
②データを選択する動作を作成し、フォームを配置したスクリーンにリンクさせる
上記を設定することで選択したデータのUpdateができるようになります^^
「いいね!」 2
muku
2022 年 9 月 30 日午前 2:43
3
一応画像も添付いたしますので、
参考にされてみてください〜!
レイヤーを3つに分けて既存データの画像を表示する方法
①必要な要素を配置する
→ここではみやすいようにずらしてますが、
重ねて配置した方がずれないと思いますので、重ねて配置してあげてください。
→image1にはDBの写真が表示されるように設定してあげてください。
②image2にImage pickerで選択した画像が表示されるように
また、何も選択していない時は何も表示しないように設定します。
③image picker が透明になるように設定して完了です!
データベースをUpdateする方法
①Updateしたいデータを選択するリストを作成し、
フォームを配置しているスクリーンにLINKさせるます。
②フォームを配置しているスクリーンのフォームの設定を開くと
Update Current DB名 と出るのでここを選択し、Update項目を指定してあげてください!
「いいね!」 2
mukuさん、
早速ありがとうございます!
サンプル画像む付けて頂き感謝いたします!
①3層に重ねるのは、全く考えもしなかったです。
試してみて、無事できました!
②間にスクリーンを1枚挟むのですね。
確かに、UPDATEの時にどのレコードを更新したいのか特定が必要ですものね。
こちらも試してみます。
ご丁寧に色々ありがとうございました!
また躓いたら質問させてください
「いいね!」 1
kinari
2022 年 10 月 1 日午前 1:51
6
User以外のテーブルについても正しくリンクアクションの設定がされていれば、Updateかけられますよ!
「いいね!」 1
kinariさん、
ありがとうございます。
正しいリンクアクションというのは、mukuさんがおっしゃっている事と同じでしょうか?
「いいね!」 1
kinari
2022 年 10 月 1 日午前 4:50
8
そうですね!もうすでに言及されてましたね 失礼しました!
「いいね!」 2
kinariさん、
気にかけて頂き、ありがとうございます。
頑張りまっす
「いいね!」 1
image pickerにデータベースの画像を表示する方法で、DBの画像に比べて、image pickerで掴んだ画像が小さい場合、後ろにDBの画像が見えてしまう事を防げないかでつまずいております。
少し見づらいですが、手前がimage pickerに入れた写真(正方形)、後ろがDBにある写真(長方形)。
写真の見映え上の問題でimage cropingはDon’t Cropを使っております。
対策した手段はいくつかありますが、どれも思うように動いていません。
対策①
中間層のimage pickerの写真を表示するimageにバックグラウンドを付けて、image pickerが空でない時のみ表示する様にVisibleを変更。
結果:Previewでimage pickerが空の時に下に配置された要素が画像エリアに侵食してしまう。
対策②
中間層のimage pickerの写真を表示するimageのバックグラウンドを無しに戻して、その後ろにRectangleを挟み、image pickerが空でない時のみ表示する様にVisibleを設定。
写真の「Rectangle17」その役割を担っています。
結果:対策①と同じ
image pickerに画像が入れば問題なく表示されます(Rectangleの色は実験用にグレーに設定)
何か良い方法があれば教えてください。
よろしくお願いします。
「いいね!」 1
muku
2022 年 10 月 3 日午前 3:06
11
@Toshi_CraftSoundStud さん
その場合は、
2階層目のイメージの背景色をスクリーンと同じ色に設定してあげてください^^
(前の回答でいうimage2に当たるものです)
そうするとこんな感じで表示されます〜
「いいね!」 3
mukuさん、
今回もsuper quickな返信ありがとうございます!
早速試してみました。
ところが、DBの画像を入れ替えた状態で、もう一度同じ画面に入ると、中間層に入れたBackgroundがDBの画像を隠してしまうようです。
if there’s no image…で
Don’t show anuthing を選択しているのですが、backgroundは表示してしまうという事でしょうか?
何度もすみません。
よろしくお願いします
「いいね!」 1
muku
2022 年 10 月 4 日午前 2:18
13
とんでもないです!
おや…
ごめんなさい私の確認漏れですね…
Back Groundは表示されてしまうみたいですね><
こうなってくると、
2つのImageの大きさを正方形など考えうる画像のサイズに最初から合わせてイレギュラーが生まれないようにするというような対処療法しか思いまたりません…申し訳ありません…
「いいね!」 2
mukuさん、
今回も早々にご返信頂いてありがとうございます!
やはり諦められず(笑)、色々と試してみましたところ、対策が見つかりましたので共有します。
最初に3層構造を試したコメントで記述した"sometime visible"を使う方法ですが、これを効かせる層と内容を変更しました。
上記では、中間層に仕掛けをして、最下層のDBから引っ張ってきた写真を隠す手法を試しましたが、ここでsometime visibleを使うとcropされたときにレイアウトが崩れるという問題が起きました。
今回は、DBから引っ張ってきた最下層のimageにsometime visibleを適用する方法を試しました。
前回は「image pickerが空じゃなくなったら最下層の写真を隠す」という方法を使いましたが、
今回は「image pickerが空の時だけDBの写真を表示する」と変更しました。
前回と今回でレイアウト崩れに差が出る理由が分かりませんが、とりあえずこれで何回かページを行き来しても動いているので大丈夫そうです。
「いいね!」 3
muku
2022 年 10 月 5 日午前 2:58
15
おお〜
設定ができたみたいで何よりです^^
共有ありがとうございます!
また一つ勉強になりました
「いいね!」 2