問題タブ [tlistbox]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3732 参照

delphi - FireMonkey TListBox コントロールから境界線を削除するにはどうすればよいですか?

私は FireMonkey スタイルについて学んでいます - 私の主なリファレンスはhereです。シンプルなラベルと形状で試したことはすべてうまくいきましたが、現在は TListBox を使用して次の 2 つのことを試みています。

  1. TListBox 内の項目のフォントを設定します。
  2. その境界線を削除します (TCalloutPanel に配置されたクライアントです)。

フォーム上に StyleBook を作成し、コントロールを右クリックして [カスタム スタイルの編集] を選択する方法を使用しています。(ただし、ランタイムの変更も同様に喜んで行います)。

このフォントで成功した唯一の方法は、複数の TListBoxItem を作成し、それぞれのテキスト設定を使用したことです。VCLのように親設定を引き継ぐ方法はないのでしょうか? VCL の場合と同じように、次のようにリスト ボックス項目を簡単に追加したいと思います。

しかし、作成された内部 TListBoxItem 配列を実行時に取得する方法がわかりません。

もう 1 つの問題は、境界の四角形を削除する方法が見当たらないことです。単純な長方形は簡単です-ストロークがあります-しかし、StyleBook の TListBox のすべてのレイアウト オプションを調べてみると、どこにもストロークが表示されません。

XE7を使用しています。何か不足していますか?

助けてくれてありがとう。

0 投票する
1 に答える
631 参照

delphi - Livebindings を使用して複数のフィールド値を FMX MetropolisUI TListBox Item.Text に割り当てる

FMX Metropolis UI アプリケーションをコーディングし、文字列型の 2 つのフィールド値を、LiveBindings テクノロジ (式エンジンを使用) によって TListBox の Item.Title メンバーに割り当てようとしています。

TBindList を次のように使用すると:

「name1 name2」文字列をメンバーに割り当てますが、TBindList クラスにそのようなプロパティがないTextため、設定に失敗しますListItemStyle := MetropolisUI

私が使用する場合TLinkFillControlToField

に割り当てることListItemStyleができますが、プロパティでMetropolisUIアクセスできるフィールドは 1 つだけで、それに割り当てるフィールドはありません。FillDisplayFieldNameSourceExpression'FieldByName("name1").Text + " " + FieldByName("name2").Text'

I tried to guess context of Item.Text member of TListBox from TBindList but I did not manage to. I studied Delphi samples but there is no Metropolis TListBox and it seems to act in a different way than the common one. Does anybody have any ideas how to find the solution for this issue?

0 投票する
0 に答える
61 参照

comctl32 - TListBox OnDrawItem が COMCTL32.dll で AV を引き起こす

アプリが COMCTL32.dll から TListBox::OnDrawItem へのアクセス違反を生成する原因を絞り込みました。TListBox.Style は lbOwnerDrawFixed です。

アプリは C++ Builder XE4 で構築され、Win7-64 および Win8-64 で実行されます。私はWin7でそれを実現できますが、IDE内からのみ、散発的にしか実現できません。Win7 のリリース ビルドではエラーは発生しませんが、Win8 では毎回発生します。

これは、フォームが最初に作成されたときにのみ発生します。フォームには、次/前のレコードに移動するためのボタンが含まれています。これは、コントロールを設定するすべてのコードを呼び出しますが、これらの呼び出しに問題はありません。フォーム構築後の初回のみ。

フォーム コンストラクターは、TTimer を 100 ミリ秒一時停止するように設定します。TTimer::OnTimer は、データをコントロールにロードする関数を呼び出します。TListBox が読み込まれた後、OnDrawItem イベントが呼び出されます。

TListBox.Style を lbStandard に設定し、カスタム OnDrawItem を削除しても問題ありません。

OnDrawItem ハンドラーのサンプルを次に示します。

TListBox.Canvas が NULL でないことを確認するためにテストしましたが、違いはありませんでした。どうやらそれは常にNULLではありません。

ここから先に進む方法がわかりません。提案を歓迎します。

ありがとう、キャスリーン

0 投票する
1 に答える
896 参照

delphi - リストボックス キャンバスでの Unicode テキストの描画が遅すぎる

下の画像に示すように、次の形式を使用して、RSS からのニュースをリストボックスに表示しようとしています。スクリーンショットのアプリケーションは、リストボックスをスタイリングすることによって firemonkey で開発されました。VCL アプリケーションで同じものを表示する必要があります。

ここに画像の説明を入力

このレイアウトの要件は次のとおりです。

  • ニュースのタイトルは太字にする必要があります
  • 短い説明は一番下に配置し、1 行に収まらない場合は折り返す必要があります (画像に示すように)。font-style はノーマルである必要があります
  • ニュース項目ごとに画像があるはずです

これまでの私のコード:

これが私が得ている出力です:

Unicode テキストが挿入されたアイテムの場合

問題

Unicode テキストの描画が遅すぎて、リストボックスをスクロールしたり、フォームのサイズを変更したりするとちらつきが大きくなります。

ノート

  • フォントは@Microsoft NeoGothicに設定されています
  • アイテムの高さ = 70; スタイル = ownerdrawfixed
  • 最初のスクリーンショットに掲載されている firemonkey アプリケーションで同じ Unicode テキストを描画しても問題ありません。
  • 上記のコードは、通常の英語のテキストでは問題なく動作し、ちらつきはまったくありません。この問題は、Unicode テキストにのみ存在します。

更新: DrawTextメソッドのDT_WORDBREAKフラグに 問題があるようです。このフラグを削除すると、ちらつきが表示されますが、テキストの描画が大幅に改善されます。

Unicode テキストのサンプル

तिम्रो त्यो बोलि ले मलाई बोलायो मिठो तिम्रो त्यो मुस्कान मा मलाई झुलायो झुलाओ ह्स्द्जिः स ह्स्ध्फद्ज द्श्जड्स हस फग स्द्फ़ ग स्द्फ्ग फस ग्स्द्फ़ ग्दस्फ्ग द्स्फग्द तिम्रो त्यो बोलि ले मलाई बोलायो मिठो तिम्रो त्यो मुस्कान मा मलाई स ह्स्ध्फद्ज द्श्जड्स हस फग स्द्फ़ ग स्द्फ्ग फस ग्स्द्फ़ ग्दस्फ्ग द्स्फग्द

0 投票する
0 に答える
817 参照

delphi - Delphi でのリストボックス項目の遅延読み込み

RSS フィードを解析し、そのデータをリストボックスにロードしようとしています。アイテムの内容は次のような形式です。

リストはカスタム描画され、各項目に上記のすべてのフィールドが表示されます。100 を超えるフィード アイテムがあるため、各 ImageUrl をダウンロードして、対応するリスト アイテムに表示するのに時間がかかります。そこで、最初の 10 個のアイテムを最初にフェッチすることを考えました。ユーザーがリストボックスの最後までスクロールすると、次の 10 項目が取得されます。実際、私は Facebook や他の多くの Android アプリケーションがスクロール トゥ エンド イベントでより多くのデータ項目を表示する方法を実装しようとしています。

Google 検索では、Android 実装または Windows Phone のほとんどの結果が得られます。

0 投票する
1 に答える
317 参照

delphi - TListbox - 複数選択で OnChangeEvent が確実に起動しない

XE7 と FMX を使用しています。

私の問題は、TListbox の OnChange-Event が複数選択で正しく機能しないことです (変更が発生するたびに発生するわけではありません)。

再現する手順:

  • FMX アプリケーションを作成し、TListbox をフォームに追加します。
  • このリストボックスにアイテムを追加します。
  • Listbox の「MultiSelectStyle」を「default」に設定します。
  • OnChangeEvent を処理します (ブレークポイントを設定するか、何かを実行します...)。
  • プロジェクトを実行し、最初の項目をクリックします -> OnChange が実行されます。
  • ただし、最初の項目が再度クリックされると、OnChange は実行されません。

選択が変更されるたびにイベントが発生するように、これを修正する方法を誰かに教えてください。

0 投票する
1 に答える
2925 参照

delphi - 編集ボックスを使用してリストボックスをフィルタリングする

編集ボックスを使用して Delphi のリストボックスをフィルタリングしようとしていますが、うまくいきません。エディット ボックスの OnChange イベントに基づくコードを次に示します。

編集ボックスに入力すると、リストボックスの項目がフィルター処理されることを願っています。