問題タブ [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.
delphi - スクロールすると、TListBoxItem にドロップされた TRadioButton の動作が不安定になる
多数の TListBoxItems を持つ Firemonkey TListbox を実装しようとしています。TListBoxItem の 1 つに、設計時に TListBoxItem にドロップするだけで多数の TRadioButton を配置しました。アプリケーションの実行時に、TListBoxItem が画面からスクロールされて再び表示されると、ボタンの外観が不安定になります。
ここ StackOverflow での別の TListBox の質問は、TListBox が TListBoxItem 以外のアイテムをホストしないことを指摘しています。そうは言っても、TListBoxItem について私が見つけることができるような制限はないようです。この方法で、TEdit、TLabel、および TComboBox コンポーネントを問題なく定期的に配置しました。
この状態を複製するには、新しい Firemonkey デスクトップ アプリケーションを開始します。TListBox をフォームにドロップし、alClient に設定します。TListBox に多数の TListBoxItem を設定します。TListBoxItems または Form の高さを設定して、実行時に TListBox をスクロールできるようにします。最上部の TListBoxItem に 3 つの TRadioButton をドロップします。すべての TRadioButton の GroupName を同じ名前に設定します。アプリケーションを実行します。TRadioButton を選択して、選択されているように表示します。ボタンを含む TListBoxItem がフォームの外にスクロールするように、TListBox をスクロールします。スクロールバック; 異常が観察されるまで、別の TRadioButton の選択とスクロールを続けます。
質問: まず、おそらく最も重要なことですが、設計時にコンポーネントを TListBoxItem に単純にドロップすることはできますか? このテクニックで以前に成功したのは、単なる偶然でしたか?
2番目に、私が取り組んでいるアプリケーションにとって重要なことですが、これが私のUIへの実行可能なアプローチではない場合、誰かがより良いアプローチを提案できますか?
ティア
私は Embarcadero の Quality Central にレポートを入力し、Tomohiro さんと数回やり取りした後、問題はスクロールに関連しているという Marcus Adams の提案とともに、次のような結論に達しました。
言及されたさまざまなケースを追跡すると、スクロールの使用により、このケースに関連する他の多くのケースがあるようです。アイテムが画面外にスクロールされてからスクロールバックされると、システムは表示に戻されたアイテムに明らかにスタイルを再適用します。少なくとも、私が追跡したいくつかのケースでは、そのように思われます。問題が発生するように見えるのは、このスタイルとレンダリングの再適用です。私自身の例では、コントロールの IsChecked プロパティを表示するボタンを追加しましたが、レンダリングはすべてのケースでプロパティを正しく反映していません。これは、スタイル/レンダリングが問題の原因であることを示唆しています。
私が見つけた関連する問題は次のとおりです。
QC 120593 QC 117381 QC 119638 QC 117658
解決を待っています。
delphi - Delphi 7 で TListBox 項目をアルファベット順に並べ替える
エントリを追加/編集した後、 TListBoxコントロール内の項目の並べ替えをトリガーしようとしています。
true に設定したSortedプロパティがあることがわかりますが、内容を変更するたびにListBoxが動的にソートされるわけではありません。利用可能なSortプロシージャまたは関数がないようで、UpdateまたはRefreshを呼び出しても目的の効果が得られません。
ListBoxの内容をTStringListオブジェクトにプルし、それを並べ替えてから、すべてをListBoxに戻すことを検討している段階に達しました。これは少し正気ではないようですが、確かに私はより良い方法を見落としています。
以下は、既存のアイテムを変更する例です。
コントロールが更新されてアルファベット順に並べ替えられることを期待していますが、そうではありません。
delphi - Lazarus で TStrings リストの長さを取得する
ListBoxPlayers という TListBox があり、ListBoxPlayers.Items は TListBox 内の TStrings のリストを参照していると思います。この機能を使用しようとしていますが、機能していないようです。何か案は?
編集:だから、表示する文字列の数に応じて TListBox のサイズを設定しようとしています。これが私のコードです:
ListBoxPlayers.Items.Count
リストには多くの項目がありますが、常に 0 のままです。
delphi - 簡単な Delphi XE6 FireMonkey コントロール TListBox と TStringGrid
FireMonkey TListBox に列を取得し、TListBox の行の列から値を取得する方法を教えてください。私はこのアプローチを使用しています:
vListRow := 'Col1Stuff' + '^I' + 'Col2Stuff';
これは、1 列目に Col1Stuff が、2 列目に Col2Stuff が表示されるわけではありません。
代替手段として TStringGrid Firemonkey コントロールを試しましたが、次の方法も機能しません。
vStringGrid.Cells[0,1] := 'やあ'; vStringGrid.Cells[0,2] := 'あり';
これにより、TStringGrid には何も配置されません。
任意のヒント?
multithreading - TListBox への Delphi 非同期書き込み
複数のスレッド/プロセスから「listMessages」と呼ばれる TListBox に書き込みたいのですが、これを行うには次の 2 つの手順があります。
1- オブジェクトを追加する場合:
2- TIdCriticalSection と呼ばれるprotectListMessagesを使用:
どちらが最適か (高速 + スレッド セーフ) を教えてください。または、スレッド/プロセスから TListBox にメッセージを書き込む 3 番目の方法を教えてください。