グラフィックライブラリーをゼロから作成する - ページ 10

 
Aliaksandr Hryshyn:

私の場合、表示ウィンドウ(表の見える部分)、すべてのセルが収まる必要があるフルサイズのウィンドウ、それがメインウィンドウ内でスライドし、行とその中のセルのためのウィンドウ、さらにスクロール(バーで囲まれたスライダー)、といった「ジャングル」は平均よりも複雑ではありません。相対位置の制約は、プロパティによって決定される。スライダーのみ、オブジェクトの移動イベントを インターセプトし、すでに「フルサイズウィンドウ」の位置を修正する必要があります。これはすべて仮想ウィンドウで行われます。ビジュアル部分をボルトで固定する必要があり、ビジュアル部分がなければ、ライン用のウィンドウとフルサイズのウィンドウが存在します。そして、編集可能なセルには、入力フィールドを作ります(これはカスタムです)。その他のことは、すべてエンジンが処理します。これらは可能性ですが、ウィンドウが多すぎる場合(大きなリスト、テーブル、数千のウィンドウ)にパフォーマンスを上げるためのアイデアもいくつかあります。

やるんですね...。で、話をする。:)))

このスレッドは、私がマークアップ言語とビジ・エディタをデモしたクラウドソースGUIスレッドから発展したものであることにお気づきでしょうか。フォーラムのメンバーの中には、自分のライブラリですべてをより良く、よりきれいに再現できると考えた人もいました。4ページで話題は沈静化。そして、それは今も続いている。そして、ここにきて、彼らのように「千の窓」について語る...要するに、最後にやれということですね))))。

がんばってください ))))
 
テーブルについて少し説明します。

1.セルはテーブルの 最も単純な要素で、ラベル、テキスト、アイコンの3つのオブジェクトで構成されています。

2.セルには、列ヘッダ、行ヘッダ、中のセルなど、いくつかの種類があります。ヘッダーセルは行/列に関する情報(基本的にはそのプロパティ)を伝えるので、これらを分離することが重要です。これにより、テーブルでの作業がしやすくなりました。

3.通常のセルにはパラメータがあり、その値が出力されるが、パラメータを持たないただのテキストセルが存在する。こちらは別タイプです。

3.セルのプロパティは、行全体、列、表全体など、選択的に設定できるようにする必要があります。

4.ヘッダーセルのプロパティは、別途設定する必要があります。

5.テーブルは、チェックボックス、ポップアップリストなど、他の要素を適応させることが "できる "必要があります。スライダー、プログレスバー、ラジオボタンまで。

6.表は、値を変更したセルだけを再描画し、すべてのセルを再描画しないように最適化する必要があります。

7.限られた視野の中に置かれた場合、表はスクロールする必要があります。

8.テーブルには部品ローラーが付いている場合があります。

9.テーブルの列は幅を変更することができます。

10.表は、行数があらかじめ決められていない場合、動的であることができる。

11. テーブルはソート可能であること。

12. テーブル全体、または選択された行/列で色付けができること。

単純な矩形とテキストで表を作ることは禁じられています。そのような「セル」は要素ではないので、これは行き止まりの道です。

こういうのを実装しています。すべてにおいて完璧ではないとはいえ...。でも、ちゃんと動くし、問題ないです。

テーブルというのは、間違いなく最も複雑な要素のひとつです。最も複雑で、多くのメカニズムとさまざまな解決策を含んでいる。
 
それがテーブルです)))キャンバスでやったのはアナトリーが最初だったと記憶しています。彼は苦労していた...。嫉妬してしまうほど、いろいろなことを上手に実装していました。
 
Реter Konow:
それがテーブルです)))最初はアナトリーがキャンバスに描いたものだったと記憶しています。彼は苦労していた...。嫉妬してしまうほど、いろいろなことを上手に実践していました。

見栄えを良くするのではなく、機能的にするのです。少しずつ正しいモノが出来てきており、他のソリューションとはアプローチが異なる。テーブルのセルには、どんなものでも配置することができます。エンジンにkanvasのサポートを追加したので、kanvasと通常の矩形の両方が使用されることが判明しました。デモを添付します。

左上の空白部分からドラッグ&ドロップが可能です。


ファイル:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

見栄えを良くするのではなく、機能的にするのです。少しずつ正しいモノが出来てきており、他のソリューションとはアプローチが異なる。テーブルのセルには、どんなものでも配置することができます。エンジンにkanvasのサポートを追加したので、kanvasと通常の矩形の両方が使用されることが判明しました。デモを添付します。

左上の空白部分からドラッグ&ドロップが可能です。


悪くない、悪くない...。

批判が先だ。

コンセプト的には、1つの大きな窓なのか、それともいくつかの小さな窓が一体化したものなのか。残念ながら、窓の可動はありません。メカの動作がちょっと変、もっと考えるべきことがある。セルに何かを入れる方法は見つかっていません、対話式ではないのです。今のところ、簡単なボタンやチェックボックスさえも、動作するコントロールは ありません。フレーム、最小化・縮小ボタン、平均化アイコンなど、構造的な工夫がされていません。機能を果たさずとも、装飾のために入れる価値はありますし、そうでなければ何を見ているのか不明ですからね。もちろん...非常に生々しい。

褒めることです。

欠点はあっても、多くの進歩と可能性を感じています。もちろん、十分な忍耐力と体力があれば、最終的には何かがうまくいくかもしれません。まあ、才能は間違いなくあるんですけどね)。


追伸:(ダサいとはいえ)スクロールと、限定的とはいえ「ゴムのような」窓枠に満足しています。:)))

追伸:すみません、サブウインドウは移動可能です最初はわからなかった。もちろん、移動スペースは厳しく制限されますが、それでも......。
 
もう一つの利点は、"A "ラベル(理由は不明)が対話式になっていることです。これはもう、いいことだと思います。
 

残念ながら、私のウィンドウはロード後、あるべき位置にありません。


中央に配置しようとしても、うまくいかない。
 
Реter Konow:

悪くない、悪くない...。

批判が先だ。

コンセプト的には、1つの大きな窓なのか、それともいくつかの小さな窓が一体化したものなのか。残念ながら、窓の可動はありません。メカの動作がちょっと変、もっと考えるべきことがある。セルに何かを入れる方法は見つかっていません、対話式ではないのです。今のところ、簡単なボタンやチェックボックスさえも、動作するコントロールはありません。フレーム、最小化・縮小ボタン、平均化アイコンなど、構造的な工夫がされていません。機能を果たさずとも、装飾のために入れる価値はありますし、そうでなければ何を見ているのか不明ですからね。もちろん...非常に生々しい。

褒めることです。

欠点はあっても、多くの進歩と可能性を感じています。もちろん、十分な忍耐力と体力があれば、最終的には何かがうまくいくかもしれません。まあ、才能は間違いなくあるんですけどね)。


追伸:(ダサいとはいえ)スクロールと、限定的とはいえ「ゴムのような」窓枠に満足しています。:)))

追伸:すみません、サブウインドウは移動可能です最初はわからなかった。もちろん、移動スペースは厳しく制限されますが、それでも......。

すべてのウィンドウ(一般、セル、スクロール、スクロール用スライダー......)は、同じ動作原理で、プロパティが異なるだけで、視覚表現が異なるだけで、見えないウィンドウも存在します。

セル内のメガネは、インジケータと同様にインタラクティブ(ティックチャートやヘッダ上でのメガネ自体の移動、価格の上下移動)、ホイールスクロールのイベントのみ、テーブルの右スクロールで処理されます。

この表は、さまざまなリストや表を作成するための基本的な視覚的要素として機能します。セル内に何が配置されているかは関係なく、異なるオブジェクトや同じ表を作成することも可能です

 
Реter Konow:
もうひとつは、"A "ラベル(理由は不明)が対話式になっていることです。これはもう、いいことだと思います。

タンブラーインジケーターのテストは されましたか?価格自動スクロールのオン/オフスイッチです。

 
Aliaksandr Hryshyn:

タンブラーインジケーターのテストは されましたか?価格自動スクロールのオン/オフスイッチでしょうか

そうですね、タンブラー本体も目盛り表示もよくできていますね。クレームが一番少ないのです。自分で書いたのか、それともどこかから借りてきたのか?