5#include "../forms_export.h"
33#include <xtd/drawing/color>
34#include <xtd/drawing/font>
35#include <xtd/drawing/point>
36#include <xtd/drawing/rectangle>
37#include <xtd/drawing/size>
39#include <xtd/async_result>
40#include <xtd/optional>
41#include <xtd/iclonable>
42#include <xtd/iequatable>
43#include <xtd/isynchronize_invoke>
58 class horizontal_layout_panel;
60 class vertical_layout_panel;
84 enum class state :
int64 {
90 creating_handle = 0b10000,
92 parent_recreating = 0b1000000,
94 client_size_setted = 0b10000000,
96 top_level = 0b1000000000,
97 visible = 0b10000000000,
98 enabled = 0b100000000000,
100 tab_stop = 0b10000000000000,
101 allow_drop = 0b100000000000000,
102 drop_target = 0b1000000000000000,
104 layout_deferred = 0b10000000000000000,
105 docked = 0b100000000000000000,
107 double_click_fired = 0b1000000000000000000,
108 double_buffered = 0b10000000000000000000,
110 mouse_enter_pending = 0b100000000000000000000,
111 tracking_mouse_event = 0b1000000000000000000000,
112 mouse_pressed = 0b10000000000000000000000,
115 is_accessible = 0b1000000000000000000000000,
116 no_zorder = 0b10000000000000000000000000,
117 size_locked_by_os = 0b10000000000000000000000000,
118 causes_validation = 0b100000000000000000000000000,
119 own_ctl_brush = 0b1000000000000000000000000000,
120 exception_while_painting = 0b10000000000000000000000000000,
121 layout_sis_dirty = 0b100000000000000000000000000000,
122 checked_host = 0b1000000000000000000000000000000,
123 hosted_in_dialog = 0b10000000000000000000000000000000,
124 validation_cancelled = 0b100000000000000000000000000000000,
125 mirrored = 0b1000000000000000000000000000000000,
131 explicit async_result_invoke(std::any async_state);
132 std::any async_state()
const noexcept override;
134 bool completed_synchronously()
const noexcept override;
135 bool is_completed()
const noexcept override;
137 std::shared_ptr<data> data_;
184 using base::operator [];
209 template<
typename control_t,
typename ... args_t>
211 auto control_ptr = std::make_unique<control_t>(control_t::create(std::forward<args_t>(args)...));
213 controls_.push_back(std::move(control_ptr));
227 template<
typename control_t,
typename ... args_t>
229 auto control_ptr = std::make_unique<control_t>(control_t::create(std::forward<args_t>(args)...));
231 controls_.push_back(std::move(control_ptr));
244 template<
typename control_t,
typename ... args_t>
246 auto control_ptr = std::make_unique<control_t>(control_t::create(std::forward<args_t>(args)...));
248 controls_.push_back(std::move(control_ptr));
255 void insert_at(
size_t index,
const value_type& value)
override;
259 template<
typename control_t>
261 for (
auto it = begin(); it !=
end(); ++it)
262 if (it->get() == value)
return it;
263 if (!clone_and_keep_controls_)
return base::insert(pos, value);
264 auto control_ptr = as<control>(as<iclonable>(value).clone());
266 controls_.push_back(std::move(control_ptr));
270 template<
typename control_t>
271 void insert_at(
size_t index, control_t& value) {
272 for (
auto it = begin(); it !=
end(); ++it)
273 if (it->get() == value)
return;
274 if (!clone_and_keep_controls_) base::insert_at(index, value);
276 auto control_ptr = as<control>(as<iclonable>(value).clone());
278 controls_.push_back(std::move(control_ptr));
283 template<
typename control_t>
284 void push_back(control_t& value) {
285 for (
auto it = begin(); it !=
end(); ++it)
286 if (it->get() == value)
return;
287 if (!clone_and_keep_controls_) base::push_back(value);
289 auto control_ptr = as<control>(as<iclonable>(value).clone());
290 auto& control_ref = *control_ptr;
291 controls_.push_back(std::move(control_ptr));
292 base::push_back(control_ref);
305 if (
iterator->get() != &item.get())
continue;
313 bool clone_and_keep_controls_ =
false;
314 static std::vector<std::unique_ptr<xtd::forms::control>> controls_;
386 virtual drawing::point auto_scroll_point() const noexcept;
391 virtual
bool auto_size() const noexcept;
402 virtual drawing::color back_color() const noexcept;
410 virtual
control& back_color(const
xtd::drawing::color& color);
412 virtual
control& back_color(std::nullptr_t);
418 virtual const
xtd::drawing::image& background_image() const noexcept;
423 virtual
control& background_image(const
xtd::drawing::image& background_image);
442 virtual
int32 bottom() const noexcept;
447 virtual drawing::rectangle bounds() const noexcept;
452 virtual
control& bounds(const
xtd::drawing::rectangle& bounds);
457 virtual
bool can_focus() const noexcept;
470 virtual
bool can_select() const noexcept;
474 bool can_raise_events() const noexcept override;
480 virtual const drawing::rectangle& client_rectangle() const noexcept;
485 virtual const drawing::
size& client_size() const noexcept;
539 virtual
bool created() const noexcept;
556 virtual drawing::rectangle display_rectangle() const noexcept;
580 virtual
bool double_buffered() const noexcept;
584 virtual
control& double_buffered(
bool double_buffered);
588 virtual
bool enabled() const noexcept;
596 virtual
bool focused() const noexcept;
601 virtual drawing::font font() const noexcept;
608 virtual
control& font(std::nullptr_t);
614 virtual drawing::color fore_color() const noexcept;
619 virtual
control& fore_color(const
xtd::drawing::color& color);
621 virtual
control& fore_color(std::nullptr_t);
631 virtual
int32 height() const noexcept;
639 bool invoke_required() const noexcept override;
644 bool is_handle_created() const noexcept;
648 virtual
int32 left() const noexcept;
656 virtual drawing::point location() const noexcept;
660 virtual
control& location(const
xtd::drawing::point& location);
675 virtual const drawing::
size& maximum_client_size() const noexcept;
688 virtual const drawing::
size& maximum_size() const noexcept;
701 virtual const drawing::
size& minimum_client_size() const noexcept;
714 virtual const drawing::
size& minimum_size() const noexcept;
761 bool recreating_handle() const noexcept;
767 virtual const
xtd::drawing::region& region() const noexcept;
777 virtual
int32 right() const noexcept;
827 virtual style_sheets::style_sheet style_sheet() const noexcept;
831 virtual
control& style_sheet(const style_sheets::style_sheet& value);
847 virtual
bool tab_stop() const noexcept;
859 virtual std::any tag() const noexcept;
890 virtual std::optional<
control_ref> top_level_control() const noexcept;
894 virtual
bool visible() const noexcept;
902 virtual
int32 width() const noexcept;
916 static
bool check_for_illegal_cross_thread_calls() noexcept;
921 static
void check_for_illegal_cross_thread_calls(
bool value);
935 static
xtd::drawing::point mouse_position() noexcept;
951 xtd::
async_result begin_invoke(delegate<
void(std::vector<std::any>)> method, const std::vector<std::any>& args) override;
955 virtual
void bring_to_front();
957 int32 compare_to(const
control& value) const noexcept override;
962 void create_control();
967 drawing::graphics create_graphics() const;
973 virtual
void destroy_control();
979 bool equals(const
control& value) const noexcept override;
992 std::optional<
xtd::drawing::color> get_back_color() const noexcept;
997 std::optional<
xtd::drawing::font> get_font() const noexcept;
1002 std::optional<
xtd::drawing::color> get_fore_color() const noexcept;
1014 size_t get_child_index(
intptr child,
bool& throw_exception) const;
1018 virtual
void hide();
1022 virtual
void invalidate() const;
1027 virtual
void invalidate(
bool invalidate_children) const;
1032 virtual
void invalidate(const drawing::rectangle& rect) const;
1038 virtual
void invalidate(const drawing::rectangle& rect,
bool invalidate_children) const;
1043 virtual
void invalidate(const drawing::region& region) const;
1049 virtual
void invalidate(const drawing::region& region,
bool invalidate_children) const;
1054 std::optional<
object_ref> invoke(delegate<
void()> method) override;
1058 std::optional<
object_ref> invoke(delegate<
void(std::vector<std::any>)> method, const std::vector<std::any>& args) override;
1062 std::optional<
object_ref> invoke(delegate<
void(std::vector<std::any>)> method, std::any arg) override;
1066 void perform_layout();
1071 xtd::drawing::point point_to_client(const
xtd::drawing::point& p) const;
1076 xtd::drawing::point point_to_screen(const
xtd::drawing::point& p) const;
1087 virtual
void refresh() const;
1093 void resume_layout();
1101 void resume_layout(
bool perform_layout);
1132 virtual
void show();
1139 void suspend_layout();
1151 virtual
void update() const;
1179 static
control create(const drawing::point& location);
1217 template<typename control_t>
1218 static control_t create() {
1219 auto result = control_t {};
1225 template<
typename control_t>
1227 auto result = control_t {};
1235 template<
typename control_t>
1237 auto result = control_t {};
1247 template<
typename control_t>
1249 auto result = control_t {};
1258 template<
typename control_t>
1260 auto result = control_t {};
1261 result.parent(parent);
1268 template<
typename control_t>
1270 auto result = control_t {};
1271 result.parent(parent);
1280 template<
typename control_t>
1282 auto result = control_t {};
1283 result.parent(parent);
1294 template<
typename control_t>
1296 auto result = control_t {};
1297 result.parent(parent);
1306 template<
typename control_t>
1308 auto result = control_t {};
1316 template<
typename control_t>
1318 auto result = control_t {};
1328 template<
typename control_t>
1330 auto result = control_t {};
1342 template<
typename control_t>
1344 auto result = control_t {};
1355 template<
typename control_t>
1357 auto result = control_t {};
1358 result.parent(parent);
1367 template<
typename control_t>
1369 auto result = control_t {};
1370 result.parent(parent);
1381 template<
typename control_t>
1383 auto result = control_t {};
1384 result.parent(parent);
1397 template<
typename control_t>
1399 auto result = control_t {};
1400 result.parent(parent);
1871 virtual drawing::color default_back_color() const noexcept;
1879 virtual drawing::font default_font() const noexcept;
1883 virtual drawing::color default_fore_color() const noexcept;
1887 virtual drawing::
size default_size() const noexcept;
1897 std::unique_ptr<
xtd::
object> clone() const override;
1903 virtual
void create_handle();
1908 virtual
void destroy_handle();
1922 virtual drawing::
size measure_control() const noexcept;
1926 drawing::
size measure_text() const noexcept;
1942 virtual
void on_background_image_layout_changed(const
event_args& e);
1966 virtual
void on_create_control();
1974 virtual
void on_destroy_control();
2145 void post_recreate_handle() noexcept;
2149 virtual
void recreate_handle();
2166 void set_can_focus(
bool value);
2210 bool get_state(
control::state flag) const noexcept;
2211 void set_state(
control::state flag,
bool value);
2216 void do_layout_children_with_dock_style();
2217 void do_layout_with_auto_size_mode();
2218 void do_layout_with_anchor_styles();
2219 static
bool is_trace_form_or_control(const
ustring& name);
2220 void on_controls_item_added(
size_t,
control_ref item);
2221 void on_controls_item_removed(
size_t,
control_ref item);
2222 void on_parent_size_changed(
object& sender, const
event_args& e);
2259 static
bool check_for_illegal_cross_thread_calls_;
2265 std::shared_ptr<data> data_;
Contains xtd::forms::anchor_styles enum class.
Contains xtd::forms::layout::arranged_element_collection collection.
Contains xtd::forms::auto_size_mode enum class.
Contains xtd::forms::bounds_specified enum class.
Represents an ordered pair of integer x- and y-coordinates that defines a point in a two-dimensional ...
Definition point.h:54
Stores an ordered pair of integers, which specify a height and width.
Definition size.h:31
Represents the base class for classes that contain event data, and provides a value to use for events...
Definition event_args.h:18
Represents an event.
Definition event.h:21
Represents the status of an asynchronous operation.
Definition iasync_result.h:22
Supports cloning, which creates a new instance of a class with the same value as an existing instance...
Definition iclonable.h:19
Defines a generalized comparison method that a value type or class implements to create a type-specif...
Definition icomparable.h:17
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.h:18
Provides a way to synchronously or asynchronously execute a delegate.
Definition isynchronize_invoke.h:26
Encapsulates operating system specific objects that wait for exclusive access to shared resources.
Definition wait_handle.h:50
Represents text as a sequence of UTF-8 code units.
Definition ustring.h:47
Contains xtd::forms::component class.
Contains xtd::forms::const_control_ref typedef.
Contains xtd::forms::control_appearance enum class.
Contains xtd::forms::control_event_handler event handler.
Contains xtd::forms::control_ref typedef.
Contains xtd::forms::visual_styles::control_state enum class.
Contains xtd::forms::control_styles enum class.
Contains xtd::forms::create_params class.
Contains xtd::forms::cursors factory.
Contains xtd::forms::dock_style enum class.
#define forms_export_
Define shared library export.
Definition forms_export.h:13
int_least64_t int64
Represents a 64-bit signed integer.
Definition types.h:142
int_least32_t int32
Represents a 32-bit signed integer.
Definition types.h:131
size_t size
Represents a size of any object in bytes.
Definition types.h:197
intmax_t intptr
Represent a pointer or a handle.
Definition types.h:153
std::shared_ptr< xtd::iasync_result > async_result
Represents the status of an asynchronous operation.
Definition async_result.h:16
std::reference_wrapper< object > object_ref
Represents an object reference.
Definition object_ref.h:18
@ insert
The INS (INSERT) key.
Contains xtd::forms::help_event_handler event handler.
Contains xtd::forms::image_layout enum class.
Contains xtd::forms::iwin32_window interface.
Contains xtd::forms::key_event_handler event handler.
Contains xtd::forms::key_press_event_handler event handler.
Contains xtd::forms::message class.
Contains xtd::forms::mouse_event_handler event handler.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10
Contains xtd::forms::paint_event_handler event handler.
Contains xtd::forms::right_to_left enum class.
Contains xtd::forms::style_sheets::style_sheet class.
Contains xtd::forms::style_sheets::padding alias.