記事"グラフィカルインターフェイスXI:レンダリングされたコントロール(ビルド14.2)"についてのディスカッション

 

新しい記事 グラフィカルインターフェイスXI:レンダリングされたコントロール(ビルド14.2) はパブリッシュされました:

ライブラリのこの新バージョンでは、すべてのコントロールが個別のOBJ_BITMAP_LABEL型のグラフィカルオブジェクトに描画されます。また、コードの最適化についても引き続き説明し、ライブラリの中核クラスの変更について説明します。

以下はさまざまな種類のボタンの外観です。

 図9 いくつかのボタンタイプの外観のデモンストレーション

図9 いくつかのボタンタイプの外観のデモンストレーション

作者: Anatoli Kazharski

 

クールだ。これが最終バージョンなのか、それとももっと改良が加えられるのか?標準パネルからあなたのパネルに切り替えた場合、アップデートの際に多くのことをやり直す必要がないように。

 
Maxim Dmitrievsky:

クールだ。これが最終バージョンなのか、それとももっと改良が加えられるのか?標準パネルからあなたのパネルに切り替えた場合、アップデートの際に多くのことをやり直す必要がないように。

現在、いくつかの追加を加えた公開用の記事がすでに1つあります。入力フィールドとコンボボックスがテーブルのセルに追加される。

お知らせとして、どのように見えるかをお見せしましょう:


//---

そして、グラフィカルな標準ライブラリを統合する計画もある!RのplotのアナログとしてのMQL5のグラフィカル・ライブラリ

このあと、ちょっと休憩しよう。最後に。)

 

私はポインターをよく理解していないし、メソッドを扱う方法も理解していない。

例えば背景を作成すると、intellensは背景には適用されないメソッドをたくさん表示します。

これは多くの混乱を引き起こします。

オブジェクトを作成して、そのオブジェクトに適用されるメソッドだけを表示させることはできますか?


以下に例を示します。

クラス test

{

int met_1();

int met_2();

int met_3();

int met_4();

int met_5();

};


クラス TEST2: public test

{


}

子孫クラスで3つ4つのメソッドだけが表示され、残りは表示されないようにするには?

 
Vladimir Pastushak:

...

子孫クラスで3つ4つのメソッドだけが表示され、残りは表示されないようにするには?

アクセス指定子を定義します。

MQL5リファレンス・ガイド>言語の基礎>変数>アクセス指定子 セクション

構造体やクラスのメンバにアクセスするには、以下の指定子を使用します:

  • public- 変数またはクラスのメソッドへの無制限のアクセスを許可します;
  • protected- このクラスのメソッドと、パブリックに継承されたクラスのメソッドからのアクセスを許可します。それ以外のアクセスはできない;
  • private- このクラスのメソッドからのみ、そのクラスの変数やメソッドにアクセスできます。
  • virtual- クラス・メソッドにのみ適用され(構造体メソッドには適用されません)、このメソッドがクラスの仮想関数のテーブルに配置されることをコンパイラに通知します。

 
Anatoli Kazharski:

アクセス指定子を表します。

MQL5リファレンスガイド>言語の基礎>変数>アクセス指定の セクション


読んだり、ビデオレッスンを見たりしましたが、理解できません...。

簡単な例を教えてください。

 
Vladimir Pastushak:

本を読んだり、ビデオレッスンを見たりしたのですが、理解できないのです...。

簡単な例を教えてくれませんか?

少なくともこの記事を読んでください:オブジェクト指向プログラミングの基礎 >>。 すべてがとてもわかりやすく、例も載っています。

あるいは、オブジェクト指向プログラミングに関する質問のスレッドを開いてください。

 
Anatoli Kazharski:

少なくとも、この記事:オブジェクト指向プログラミングの基礎 >> を読んでください。すべてが非常にわかりやすく、例題もあります。

あるいは、オブジェクト指向プログラミングに関する質問のスレッドを開いてください。


問題なのは、プログラマーであるあなたにとっては、それが完璧で正しく見えるということです。

しかし、その分野ではない私にとっては、よくわからないのです。私は長い間手続き型スタイルで書いてきて、オブジェクトをマスターしようとしているのですが......。

 
Vladimir Pastushak:

私はポインターをよく理解していないし、メソッドを扱う方法も理解していない。

例えば背景を作成すると、intellensは背景には適用されないメソッドをたくさん表示します。

これは多くの混乱を引き起こします。

オブジェクトを作成して、そのオブジェクトに適用されるメソッドだけを表示させることはできますか?

以下に例を示します。

class test

{
int met_1();
int met_2();
int met_3();
int met_4();
int met_5();
};

class TEST2: public test
{
}

子孫クラスで、3つの4つのメソッドだけが表示され、残りは表示されないようにするにはどうすればいいですか?

適用できないのですか?親オブジェクトのメソッドを表示する必要があります。この場合、ドキュメントが役に立ちます。 標準ライブラリには、継承されたメソッドを表示する特別なブロックが追加されています。例えば、CWndObjの 場合です:

CObjectから継承されたメソッドは以下の通りです。

Prev、Prev、Next、Next、SaveLoadTypeCompare


CWndから継承したメソッド

CreateDestroyOnMouseEventNameControlsTotalControl、ControlFindRectLeftLeftTopTopRightRightBottomBottomWidthWidthHeightHeight、Size、Size、Size、Size、MoveMoveShiftContainsContainsAlignmentAlignIdIdIsEnabledEnable、 DisableIsVisibleVisibleShowHideIsActiveActivateDeactivateStateFlagsStateFlagsStateFlagsSetStateFlagsResetPropFlagsPropFlagsPropFlagsSetPropFlagsResetMouseXMouseXMouseYMouseYMouseFlagsMouseFocusKill、BringToTop



 
Vladimir Pastushak:

問題なのは、プログラマーとして、その分野に精通しているあなたには、それが完璧に、あるいは正しく見えるということです。

しかし、プログラマーでない私にとっては、よくわからない。私は長い間手続き型スタイルで書いてきて、オブジェクトをマスターしようとしているのだが・・・。

だから、もう一度読んでみてください。あなたの質問に対する明確な答えがあります。これ以上明確なものはない。

質問はそちらか、OOPについて議論されている他のスレッドでどうぞ。ここでは、グラフィカル・インターフェースを作成する ためのライブラリについて議論しています。

 

こんにちは。Tolさん、ウインドウに区切り線を引く方法が例題にありませんでした。

indexとは どういう意味ですか?

bool CSeparateLine::CreateSeparateLine(const int index,const int x_gap,const int y_gap,const int x_size,const int y_size)

どのようなインデックス・パラメーター、何のインデックスを渡せばいいのでしょうか?

そして同時にもう一つ質問です。透明度のあるウィンドウの背景にテキスト・ラベル(CTextLabel)を描くとき、ラベルはその不透明な背景に描かれ、Alpha()メソッドに反応せず、見栄えがよくありません.ラベルの背景も透明にすることは可能でしょうか?