mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-07 23:32:42 +01:00
move .NET documentation outside the Platform specifics section
git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@2400 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
[[Property:title|ADO.NET Sample]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|45d24893-63d0-c2a9-9f62-ead08ca4b901]]
|
||||
This sample consist of a command line showing how to interact with a database.
|
||||
|
||||
The DataReader object is somewhat synonymous with a read-only/forward-only cursor over data. The DataReader API supports flat as well as hierarchical data. A DataReader object is returned after executing a command against a database. The format of the returned DataReader object is different from a recordset. For example, you might use the DataReader to show the results of a search list in a web page.
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Select '''Use existing Ace (control file)''' and click '''OK'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\ado\ado3\''
|
||||
# Choose the Ace file for the version of the .net framework you are running
|
||||
# Choose the directory where the project will be compiled, by default the same directory containing the Ace file.
|
||||
# Click '''OK'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After you launch the sample, the following output appears:
|
||||
<code>
|
||||
Customer ID Company Name
|
||||
ALFKI Alfreds Futterkiste
|
||||
ANATR Ana Trujillo Emparedados y helados
|
||||
ANTON Antonio Moreno Taquera
|
||||
AROUT Around the Horn
|
||||
BERGS Berglunds snabbkp
|
||||
BLAUS Blauer See Delikatessen
|
||||
BLONP Blondesddsl p`re et fils
|
||||
BOLID Blido Comidas preparadas
|
||||
BONAP Bon app'
|
||||
BOTTM Bottom-Dollar Markets
|
||||
BSBEV B's Beverages
|
||||
CACTU Cactus Comidas para llevar
|
||||
CENTC Centro comercial Moctezuma
|
||||
CHOPS Chop-suey Chinese
|
||||
COMMI Comrcio Mineiro
|
||||
CONSH Consolidated Holdings
|
||||
DRACD Drachenblut Delikatessen
|
||||
DUMON Du monde entier
|
||||
EASTC Eastern Connection
|
||||
... ... ...
|
||||
WILMK Wilman Kala
|
||||
WOLZA Wolski Zajazd
|
||||
</code>
|
||||
|
||||
When the display is finished, the application wait for you to pressed the return key to finish the application.
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This application shows how to interact with a database. First the connection to the database is opened:
|
||||
<code>
|
||||
create connection.make ("server=(local)\NetSDK;Trusted_Connection=yes;database=northwind")
|
||||
</code>
|
||||
Then a request to the database is made:
|
||||
<code>
|
||||
create command.make ("select * from customers", connection)
|
||||
connection.open
|
||||
reader := command.execute_reader
|
||||
</code>
|
||||
Finally, the result of the request is displayed:
|
||||
<code>
|
||||
from
|
||||
ok := reader.read
|
||||
until
|
||||
not ok
|
||||
loop
|
||||
io.put_string (reader.item ("CustomerID").to_string)
|
||||
io.put_string ("%T%T")
|
||||
io.put_string (reader.item ("CompanyName").to_string)
|
||||
io.new_line
|
||||
ok := reader.read
|
||||
end
|
||||
</code>
|
||||
|
||||
This sample uses the following ADO.NET classes:
|
||||
* <eiffel>SQL_DATA_READER</eiffel>
|
||||
* <eiffel>SQL_CONNECTION</eiffel>
|
||||
* <eiffel>SQL_COMMAND</eiffel>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\howto\samples\adoplus subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[[Property:title|ADO .NET Samples]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|b58f17b4-57b0-ffe9-3160-86d95512f900]]
|
||||
ADO .NET is the data access technology of Microsoft .NET.
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
[[Property:title|Calculator: console]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|70cc4687-0d3e-2859-70f6-c603c05d085c]]
|
||||
=The Calculator Sample=
|
||||
|
||||
This sample consists of a command line reverse Polish notation (RPN) calculator.
|
||||
{{note|A RPN calculator works slightly differently from standard calculators. It consists of a stack of numbers. Operations are applied to the two numbers on top of the stack. The result is then put on top of the stack so that it can be used in the next operation. This sample refers to the top of the stack as ''Accumulator''. }}
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\base\calculator\''
|
||||
# Choose ''calculator.ecf''
|
||||
# Change the target from classic to dotnet
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After you launch the sample, the following text appears in a console:
|
||||
<code>
|
||||
*********************************
|
||||
Calculator in reverse Polish form
|
||||
*********************************
|
||||
Allowable operations are:
|
||||
'/': Divide top two numbers on the stack.
|
||||
'0': Empty the stack.
|
||||
'a': Enter operand onto stack.
|
||||
'?': Help.
|
||||
'*': Multiply top two numbers on the stack.
|
||||
'+': Add top two numbers on the stack
|
||||
'q': Quit.
|
||||
'-': Subtract top two numbers on the stack.
|
||||
Enter a number, followed by :
|
||||
</code>
|
||||
|
||||
Enter the first number to be put onto the stack, for example <code>3</code>.
|
||||
|
||||
{{note|Failing to enter a number at this stage will cause the sample to stop. This sample was designed to showcase the use of EiffelBase data structures in the Microsoft .NET environment and is not protected against unexpected entries. }}
|
||||
|
||||
You may then add another number on the stack by entering the character "<code>a</code>":
|
||||
<code>
|
||||
*********************************
|
||||
Calculator in reverse Polish form
|
||||
*********************************
|
||||
Allowable operations are:
|
||||
'/': Divide top two numbers on the stack.
|
||||
'0': Empty the stack.
|
||||
'a': Enter operand onto stack.
|
||||
'?': Help.
|
||||
'*': Multiply top two numbers on the stack.
|
||||
'+': Add top two numbers on the stack
|
||||
'q': Quit.
|
||||
'-': Subtract top two numbers on the stack.
|
||||
Enter a number, followed by : 3
|
||||
|
||||
Accumulator = 3
|
||||
|
||||
Next operation? a
|
||||
Enter a number, followed by :
|
||||
</code>
|
||||
|
||||
Enter a second number, for example <code>2</code>. You can then apply any operation to the two operands such as minus:
|
||||
<code>
|
||||
...
|
||||
Next operation? a
|
||||
Enter a number, followed by : 2
|
||||
|
||||
Accumulator = 2
|
||||
|
||||
Next operation? -
|
||||
|
||||
Accumulator = 1
|
||||
|
||||
Next operation?
|
||||
</code>
|
||||
|
||||
You may use the operation<code> 0</code> to clear the stack at any time. You may use <code>q</code> to quit the program.
|
||||
|
||||
{{tip|You can use the command <code>?</code> to display the list of available operations. }}
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This sample shows how to leverage EiffelBase data structures in a simple Eiffel system. The root class <eiffel>CALCULATOR</eiffel> first instantiates all ''state'' objects, each corresponding to one possible operation. The state classes all inherit from <eiffel>STATE</eiffel>. They are:
|
||||
* <eiffel>PLUS</eiffel>: Add stack's two top numbers.
|
||||
* <eiffel>MINUS</eiffel>: Substract stack's two top numbers.
|
||||
* <eiffel>MULTIPLY</eiffel>: Multiply stack's two top numbers.
|
||||
* <eiffel>DIVIDE</eiffel>: Divide stack's two top numbers.
|
||||
* <eiffel>EMPTY</eiffel>: Empty stack.
|
||||
* <eiffel>HELP</eiffel>: Prints available commands.
|
||||
* <eiffel>QUESTION</eiffel>: Get number from user.
|
||||
* <eiffel>QUIT</eiffel>: Close application.
|
||||
Each of these classes implement the feature <eiffel>do_one_state</eiffel> from <eiffel>STATE</eiffel> which performs the operation associated with the state.The initial state is <eiffel>QUESTION</eiffel> which asks for the initial number to put in the ''accumulator''. Following states depend on the user input.Every descendant of <eiffel>STATE</eiffel> implement the feature <eiffel>operation</eiffel> which performs the corresponding stack transformation.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[[Property:title|Console Samples]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|3f2c704c-9784-06a5-4cad-02ad58433b2c]]
|
||||
Console application samples.
|
||||
|
||||
7
documentation/23.09/solutions/dotnet/samples/index.wiki
Normal file
7
documentation/23.09/solutions/dotnet/samples/index.wiki
Normal file
@@ -0,0 +1,7 @@
|
||||
[[Property:title|Samples]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|c1dbfdb5-c4d0-f674-d818-00d56c431c6e]]
|
||||
In this chapter you will find a series of examples that will permit to you to understand the bases of programming with Dotnet.
|
||||
|
||||
However, you should be familiar with Object-Oriented programming model. Almost all other examples can also be built for .NET if the dotnet target is choosen instead of classic.
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[[Property:title|Threads Samples]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|62e36a4c-0afd-e143-9a1f-98eab4022e6b]]
|
||||
Samples using .NET threading technology.
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
[[Property:title|Pools]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|ace044b0-1fb7-22a0-6c18-880281ed3b6d]]
|
||||
This sample demonstrates use of the <eiffel>THREAD_POOL</eiffel> (ThreadPool) class. The sample queues up an asynchronous method call that is executed by a thread from the thread pool managed by the Common Language Runtime. The method "does some work" and then sets an event indicating that the work has finished. The main thread waits on the event and then exits.
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Select '''Use existing Ace (control file)''' and click '''OK'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\threading\pools\''
|
||||
# Choose the Ace file for the version of the .net framework you are running
|
||||
# Choose the directory where the project will be compiled, by default the same directory containing the Ace file.
|
||||
# Click '''OK'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After you launch the sample, the following output appears:
|
||||
<code>
|
||||
Main thread: Queuing an asynchronous operation.
|
||||
Main thread: Performing other operations.
|
||||
WorkItem thread: Performing asynchronous operation
|
||||
Main thread: Waiting for asynchronous operation to complete.
|
||||
</code>
|
||||
|
||||
When the display is finished, the application wait for you to pressed the return key to finished the application.
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This application shows how to use the thread <eiffel>THREAD_POOL</eiffel>.
|
||||
An asynchronous thread is launched:
|
||||
<code>
|
||||
return := {THREAD_POOL}.queue_user_work_item (create {WAIT_CALLBACK}.make (Current, $async_operation, l_async_operation_done))
|
||||
</code>
|
||||
and is associated to the local variable <code>l_async_operation_done</code>. Both threads perform simultaneously some operations. The main thread wait for the asynchronous thread to complete his own operations
|
||||
<code>
|
||||
return := l_async_operation_done.wait_one
|
||||
</code> to close the application.
|
||||
|
||||
|
||||
This sample uses the following .NET types:
|
||||
* <eiffel>THREAD_POOL</eiffel>
|
||||
* <eiffel>WAIT_CALLBACK</eiffel>
|
||||
* <eiffel>AUTO_RESET_EVENT</eiffel>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the Samples\Technologies\Threading\Pools subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
[[Property:title|Timers]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|325ac6e6-9660-891c-2605-dbeb621649f0]]
|
||||
This sample consist in a command line demonstrating the use of the <eiffel>TIMER</eiffel> (Timer) class to generate a periodic callback to a method. The sample creates a <eiffel>TIMER</eiffel> object and passes to it a delegate object. When the <eiffel>TIMER</eiffel> fires, the delegate is invoked, and a static method is called asynchronously by a worker thread in the thread pool.
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examplesdotnet\threading\timers\''
|
||||
# Choose ''timers.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After you launch the sample, the following output appears:
|
||||
<code>
|
||||
Checking for status updates every two seconds
|
||||
<Hit Enter to terminate the sample>
|
||||
Checking Status.
|
||||
Checking Status.
|
||||
Checking Status.
|
||||
Checking Status.
|
||||
Checking Status.
|
||||
...
|
||||
</code>
|
||||
|
||||
When the display is finished, the application wait for you to pressed the return key to finished the application.
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This application shows how to use the thread <eiffel>TIMER</eiffel>. The timer is launched:
|
||||
<code>
|
||||
create my_timer.make_with_callback (create {TIMER_CALLBACK}.make (Current, $check_status), Void, 0, 2000)
|
||||
</code>
|
||||
and calls the feature <eiffel>check_status</eiffel> that displays the message <code>"Checking Status."</code> every two seconds.
|
||||
|
||||
This sample uses the following .NET types:
|
||||
* <eiffel>TIMER</eiffel>
|
||||
* <eiffel>TIMER_CALLBACK</eiffel>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the Samples\Technologies\Threading\Timers subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
[[Property:title|Calculator: winform]]
|
||||
[[Property:weight|-8]]
|
||||
[[Property:uuid|9d064b1c-e109-35e8-70d5-73feec59fca1]]
|
||||
|
||||
[[Image:calculator|Calculator]]
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Select '''Use existing Ace (control file)''' and click '''OK'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\applications\world_calc''
|
||||
# Choose the Ace file for the version of the .net framework you are running
|
||||
# Choose the directory where the project will be compiled, by default the same directory containing the Ace file.
|
||||
# Click '''OK'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above. This is a really simple calculator that can take only two operands. So you should enter the first operand, then enter an operator, then the second operand. Click the "Calculate" button to generate the result.
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
The application uses two local external assemblies, math.dll and parserutils.dll.
|
||||
|
||||
parserutils parses the command line entered, and checks if it is of the form operand1 operator operand2. math.dll calculates the actual result of the command line.
|
||||
|
||||
For the parserutils.dll, we have been obliged to introduce the prefix "PARSER_" to class names in this assembly in order to avoid conflicts between class names from this and other sources.
|
||||
|
||||
This sample uses the following classes:
|
||||
* <span><eiffel>FORM</eiffel></span>
|
||||
* <span><eiffel>BUTTON</eiffel></span>
|
||||
* <span><eiffel>TEXT_FIELD</eiffel></span>
|
||||
* <span><eiffel>LABEL</eiffel></span>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the Tutorials\resources and localization\worldcalc subdirectory of the.NET Framework SDK samples directory of Microsoft Visual Studio.NET.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
[[Property:title|Date Time Picker]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|9f94f4f3-3a6e-1fe7-f9c0-d9411913ce25]]
|
||||
<div>
|
||||
[[Image:date-time-picker|Hello world form]]
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\control_reference\date_time_picker_ctrl\''
|
||||
# Choose ''date_time_picker_ctrl.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above. On the left side of the main window a date is displayed in a <span><eiffel>COMBO_BOX</eiffel></span>. Clicking on this <span><eiffel>COMBO_BOX</eiffel></span> and a <span><eiffel>CALENDAR</eiffel></span> control will appear showing the same date as in the <span><eiffel>COMBO_BOX</eiffel></span>. On the right side of the main window are the controls for selecting the format of the displayed date and the style of the <span><eiffel>CALENDAR</eiffel></span> control.
|
||||
|
||||
Clicking on the "Change font" button and a change font dialog box will appear.
|
||||
|
||||
[[Image:change-font-dialog|change font dialog box]] .
|
||||
|
||||
Clicking on the "Change color" button and a dialog box will appear. This dialog box will permit you to customize the color appearance of the calendar.
|
||||
|
||||
[[Image:dotnet-samples--date-time-picker-change-color-dlg|color dialog box]] .
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This application uses several different controls, but tend to show how to parameter the <span><eiffel>CALENDAR</eiffel></span> control using the <span><eiffel>FONT_DIALOG</eiffel></span> and <span><eiffel>COLOR_DIALOG</eiffel></span>.
|
||||
|
||||
When one of the buttons "Change font" or "Change color" is pressed, an event is launched and open the corresponding dialog box.
|
||||
|
||||
When the entry in the <span><eiffel>COMBO_BOX</eiffel></span> format changes, an event is launched and modify the format of the displayed date.
|
||||
|
||||
This sample uses the following classes:
|
||||
* <span><eiffel>CALENDAR</eiffel></span>
|
||||
* <span><eiffel>COMBO_BOX</eiffel></span>
|
||||
* <span><eiffel>BUTTON</eiffel></span>
|
||||
* <span><eiffel>LABEL</eiffel></span>
|
||||
* <span><eiffel>GROUP_BOX</eiffel></span>
|
||||
* <span><eiffel>CHECK_BOX</eiffel></span>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\controlReference\dateTimePicker sub-directory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
[[Property:title|GDI plus - text]]
|
||||
[[Property:weight|-7]]
|
||||
[[Property:uuid|0c5210da-5512-5ae5-2971-a1a5095737c9]]
|
||||
<div>
|
||||
[[Image:text|Hello world form]]
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\gdi_plus\text\''
|
||||
# Choose ''text.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above.
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This sample show how to draw some text in a window, using different brushes, different fonts, different style and different colors.
|
||||
|
||||
This sample uses the following class:
|
||||
* <eiffel>FORM</eiffel>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\gdiplus subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio.NET.
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[[Property:title|Winform Samples]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|24cbeb3c-ba2b-1fea-ccec-89600bbf3256]]
|
||||
The following examples are classified generally from the easiest to the most complex. So, some notions are introduced in the few first examples and will not be explained again in the more complex examples!
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
[[Property:title|MDI]]
|
||||
[[Property:weight|-9]]
|
||||
[[Property:uuid|d1cb553c-8394-9f27-4d75-8d69f8582e49]]
|
||||
<div>
|
||||
[[Image:mdi|Hello world form]]
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\mdi\''
|
||||
# Choose ''mdi.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above. The main window contains a menu with three entries (File, Format and Window). This menu can merge with its child windows (Document).
|
||||
|
||||
In the "File" entry, you can add a child window (Document),display the active child window, and exit the program.
|
||||
|
||||
You can change the format of the text displayed in the child windows using the entry "Format" in the menu.
|
||||
|
||||
You can choose the organization (cascade, title horizontal or title vertical) of the child windows using the entry "Window" in the menu.
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This application demonstrates how to create a multiple document interface. More information regarding the use of a MDI, is available [[MDI Details|here]] .
|
||||
|
||||
This sample uses the following class:
|
||||
* <span><eiffel>FORM</eiffel></span>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\MDI subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
[[Property:title|MDI Details]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|f39b5ac5-64ae-781d-8d43-305954ae8d28]]
|
||||
Multiple Document Interface (MDI) applications have a single, primary window (the parent window) that contains a set of windows within its client region (child windows). Each child window is a form that is constrained to appear only within the parent. Children typically share the menu bar, tool bar, and other parts of the parent's interface. Secondary windows like dialog boxes are not constrained to the parent window's client region.
|
||||
|
||||
==Creating an MDI Application==
|
||||
|
||||
You can create an MDI application by following these steps:
|
||||
# Create a '''Form''' ('''MainForm''') that represents the MDI parent window and set its '''IsMdiContainer''' property to '''True'''. The following code demonstrates how to set this property.
|
||||
<code>
|
||||
set_is_mdi_container (True)</code>
|
||||
|
||||
# Create child forms and set the '''MdiParent''' property of each form to reference the parent form. The following code demonstrates setting the MDI parent for an instance of a child form. <br/>
|
||||
<code>
|
||||
doc.set_mdi_parent (Current)</code>
|
||||
|
||||
|
||||
If you have different types of data to display, you can have multiple types of child forms. To display a child form, create an instance of the child form and call its '''Show''' method.
|
||||
|
||||
|
||||
|
||||
==Standard MDI Menus==
|
||||
|
||||
Typically, an MDI application has a '''Windows''' menu that allows the user to arrange the open child windows through tiling or cascading. The '''Windows''' menu also allows you to navigate to any of the open child windows. To create a '''Windows''' menu, add the menu items for tiling and cascading to a '''Windows''' menu in your parent form and set the '''MdiList''' property to '''True''' for the top-level '''Windows''' menu. The following code demonstrates how to create a '''Windows''' menu in an MDIapplication.
|
||||
<code>
|
||||
mi_window: WINFORMS_MENU_ITEM
|
||||
|
||||
...
|
||||
|
||||
mi_window := main_menu.get_menu_items.add ("&Window")
|
||||
dummy := mi_window.get_menu_items.add_string_event_handler ("&Cascade", create {EVENT_HANDLER}.make (Current, $window_cascade_clicked))
|
||||
dummy := mi_window.get_menu_items.add_string_event_handler ("Tile &Horizontal", create {EVENT_HANDLER}.make (Current, $window_tile_h_clicked))
|
||||
dummy := mi_window.get_menu_items.add_string_event_handler ("Tile &Vertical", create {EVENT_HANDLER}.make (Current, $window_tile_v_clicked))
|
||||
mi_window.set_mdi_list (True) -- Adds the MDI Window List to the bottom of the menu
|
||||
...
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
==Child Window Activation==
|
||||
|
||||
If you want your parent form to be notified when a child window is activated by the user, you can register an event-handling method for the '''MdiChildActivate''' event. You can determine which child window is active by using the '''ActiveMdiChild''' property of the '''Form''' class. For example, the following code updates a '''StatusBar''' control on the parent form with the name of the child window.
|
||||
<code>
|
||||
...
|
||||
|
||||
add_mdi_child_activate (create {EVENT_HANDLER}.make (Current, $mdi_child_activated))
|
||||
|
||||
...
|
||||
|
||||
mdi_child_activated (sender: SYSTEM_OBJECT; e: EVENT_ARGS)
|
||||
do
|
||||
status_bar.set_text (active_mdi_child.get_text)
|
||||
end
|
||||
|
||||
...
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
[[Property:title|Menus]]
|
||||
[[Property:weight|-10]]
|
||||
[[Property:uuid|5a32fed4-0b46-51f8-a6b6-fc3eac70a844]]
|
||||
<div>
|
||||
[[Image:menu-principal|Hello world form]]
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above. The main window contains a main menu with two entries (File and Format).
|
||||
|
||||
The main window also has a blue <span>LABEL</span> that contains a context menu, that is the clone of "Format" in the main menu. Right click on the <span>LABEL</span> and a context menu will appear
|
||||
|
||||
[[Image:menu-contextuel|context menu]] .
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
This application shows how to create a main menu and how to associate a context menu to a control (here to a <span>LABEL)</span>. More information regarding the use of menus, is available [[Menu Details|here]] .
|
||||
|
||||
This sample uses the following classes:
|
||||
* <span>FORM</span>
|
||||
* <span>CONTEXT_MENU</span>
|
||||
* <span>MAIN_MENU</span>
|
||||
* <span>MENU_ITEM</span>
|
||||
* <span>EVENT_HANDLER</span>
|
||||
* <span>LABEL</span>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\menus subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio.NET.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
[[Property:title|Menu Details]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|81ae03a0-387d-f776-17b9-f4a83c49b75f]]
|
||||
Windows Forms supports menus and context menus. Main menus are displayed on a menu bar that is located immediately below the title bar of a form. The menu bar contains top-level menu items that are used to group related submenu items. For example, by clicking a '''File''' top-level menu item, you can display menu items that are related to file operations. Menu items typically appear as commands for your application (such as '''New''' and '''Open'''),but they can also appear as separator bars and submenu items. You can display a check mark next to a menu item to display the state of a command or a the state of a feature in your application. In Windows Forms, main menus are represented by the '''MainMenu''' control.
|
||||
|
||||
Context menus can be displayed for a specific control or area of your form. They are typically accessed by clicking the right mouse button. In Windows Forms, context menus are represented by the '''ContextMenu''' control.
|
||||
|
||||
'''ContextMenu''' and '''MainMenu''' derive from '''Menu'''. They share many properties, methods, and events.
|
||||
|
||||
==Adding a MainMenu to a Form==
|
||||
|
||||
The following code demonstrates how to add a '''MainMenu''' to a form.
|
||||
<code>
|
||||
main_menu: WINFORMS_MAIN_MENU
|
||||
</code>
|
||||
<code>
|
||||
create main_menu.make
|
||||
set_menu (main_menu)
|
||||
</code>
|
||||
|
||||
==Adding a Context Menu to a Control==
|
||||
|
||||
The following code demonstrates how to <span>create</span> a '''ContextMenu''' and assign it to a control.
|
||||
<code>
|
||||
label_1: WINFORMS_LABEL
|
||||
label_1_context_menu: WINFORMS_CONTEXT_MENU
|
||||
</code>
|
||||
<code>
|
||||
create label_1.make
|
||||
create label_1_context_menu.make
|
||||
label_1.set_context_menu (label_1_context_menu)
|
||||
</code>
|
||||
|
||||
==Adding Menu Items==
|
||||
|
||||
In the following example, a '''File''' menu item is added to the '''MainMenu'''. The '''File''' menu item contains submenu items called '''Open''' and '''Exit'''.
|
||||
<code>
|
||||
mi_file: WINFORMS_MAIN_MENU
|
||||
</code>
|
||||
<code>
|
||||
mi_file := main_menu. get_menu_items.add (("&File").to_cil )
|
||||
dummy := mi_file. get_menu_items.add_menu_item (create {WINFORMS_MENU_ITEM}.make_from_text (("&Open...").to_cil ))
|
||||
dummy := mi_file. get_menu_items.add (("-").to_cil ) -- Gives us a separator
|
||||
dummy := mi_file. get_menu_items.add_menu_item (create {WINFORMS_MENU_ITEM}.make_from_text(("E&xit").to_cil )
|
||||
</code>
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
The following code demonstrates how to handle the '''Click''' event for both the '''Open''' and '''Exit''' menu items <span>create</span>d in the previous code example.
|
||||
<code>
|
||||
mi_file := main_menu.get_menu_items.add (("&File").to_cil)
|
||||
dummy := mi_file.get_menu_items.add_menu_item (create {WINFORMS_MENU_ITEM}.make_from_text_and_on_click_and_shortcut
|
||||
(("&Open...").to_cil, create {EVENT_HANDLER}.make (Current, $FileOpen_Clicked), feature {WINFORMS_SHORTCUT}.ctrl_O))
|
||||
dummy := mi_file.get_menu_items.add (("-").to_cil) -- Gives us a separator
|
||||
dummy := mi_file.get_menu_items.add_menu_item (create {WINFORMS_MENU_ITEM}.make_from_text_and_on_click_and_shortcut
|
||||
(("E&xit").to_cil, create {EVENT_HANDLER}.make (Current, $FileExit_Clicked), feature {WINFORMS_SHORTCUT}.ctrl_X))
|
||||
</code>
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
The following example demonstrates how to define shortcut keys for the menu items <span>create</span>d in the previous example.
|
||||
<code>
|
||||
mi_file := main_menu.get_menu_items.add (("&File").to_cil)
|
||||
dummy := mi_file.get_menu_items.add_menu_item (create {WINFORMS_MENU_ITEM}.make_from_text_and_on_click_and_shortcut
|
||||
(("&Open...").to_cil, create {EVENT_HANDLER}.make (Current, $FileOpen_Clicked), feature {WINFORMS_SHORTCUT}.ctrl_O))
|
||||
dummy := mi_file.get_menu_items.add (("-").to_cil) -- Gives us a separator
|
||||
dummy := mi_file.get_menu_items.add_menu_item (create {WINFORMS_MENU_ITEM}.make_from_text_and_on_click_and_shortcut
|
||||
(("E&xit").to_cil, create {EVENT_HANDLER}.make (Current, $FileExit_Clicked), feature {WINFORMS_SHORTCUT}.ctrl_X))
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
==Adding Submenus==
|
||||
|
||||
The following example demonstrates how to <span>create</span> submenus.
|
||||
<code>
|
||||
mi_format: WINFORMS_MAIN_MENU
|
||||
</code>
|
||||
<code>
|
||||
-- Add Format Menu
|
||||
mi_format := main_menu.get_menu_items.add (("F&ormat").to_cil)
|
||||
|
||||
-- Font Face sub-menu
|
||||
create mmi_sans_serif.make_from_text_and_on_click ((("").to_cil).concat_string_string (("&1. ").to_cil,
|
||||
sans_serif_font_family.get_name), create {EVENT_HANDLER}.make (Current, $FormatFont_Clicked))
|
||||
mmi_sans_serif.set_checked (True)
|
||||
mmi_sans_serif.set_default_item (True)
|
||||
create mmi_serif.make_from_text_and_on_click ((("").to_cil).concat_string_string(("&2. ").to_cil,
|
||||
serif_font_family.get_name), create {EVENT_HANDLER}.make (Current, $FormatFont_Clicked))
|
||||
create mmi_mono_space.make_from_text_and_on_click ((("").to_cil).concat_string_string(("&3. ").to_cil,
|
||||
mono_space_font_family.get_name), create {EVENT_HANDLER}.make (Current, $FormatFont_Clicked))
|
||||
|
||||
create l_array_menu_item.make (3)
|
||||
l_array_menu_item.put (0, mmi_sans_serif)
|
||||
l_array_menu_item.put (1, mmi_serif)
|
||||
l_array_menu_item.put (2, mmi_mono_space)
|
||||
dummy := mi_format.get_menu_items.add_string_menu_item_array (("Font &Face").to_cil, l_array_menu_item)
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
==Adding Default Menu Items==
|
||||
|
||||
The following example demonstrates how to specify a default menu item.
|
||||
<code>
|
||||
mmi_sans_serif: WINFORMS_MAIN_MENU
|
||||
</code>
|
||||
<code>
|
||||
create mmi_sans_serif.make_from_text_and_on_click ((("").to_cil).concat_string_string (("&1 ").to_cil,
|
||||
sans_serif_font_family.get_name), create {EVENT_HANDLER}.make (Current, $format_font_clicked))
|
||||
mmi_sans_serif.set_checked (True)
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
==Adding Check Marks to Menu Items==
|
||||
|
||||
The following example demonstrates how to display a check mark next to a menu item. The code also demonstrates how to track which item is checked.
|
||||
<code>
|
||||
mi_medium: WINFORMS_MAIN_MENU
|
||||
</code>
|
||||
<code>
|
||||
create mi_medium.make_from_text_and_on_click (("&Medium").to_cil, create {EVENT_HANDLER}.make (Current, $format_size_clicked))
|
||||
mi_medium.set_checked (True)
|
||||
</code>
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
==Cloning Menus==
|
||||
|
||||
In many cases, the context menu for a control is a subset of the main menu. You cannot add the same menu items to multiple menus, but you can clone a menu item or set of menu items. The following code demonstrates how to clone the '''Format''' menu <span>create</span>d previously and add it to the context menu of a '''Label'''.
|
||||
<code> mmy := label_1_context_menu.get_menu_items.add_menu_item (mi_format.clone_menu)
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
[[Property:title|Message Box]]
|
||||
[[Property:weight|-11]]
|
||||
[[Property:uuid|cbc37679-43b0-99b8-b8c7-1be8be49882e]]
|
||||
<div>
|
||||
[[Image:hello-world|Hello world form]] <br/>
|
||||
[[Image:message-box|Hello world form]]
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\hello_world_dlg\''
|
||||
# Choose ''hello_world_dlg.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above.
|
||||
|
||||
Click on the <span><eiffel>BUTTON</eiffel></span> "Click Me!" and a message box will appear with the text that you have entered in the <span><eiffel>TEXT_BOX</eiffel></span>.
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
The application shows how to use the very useful <span><eiffel>MESSAGE_BOX</eiffel></span> control.
|
||||
|
||||
An event ( <span><eiffel>EVENT_HANDLER</eiffel>)</span> is associated to a control (here to the <span><eiffel>BUTTON</eiffel></span>). So the line
|
||||
<code>
|
||||
my_button.add_click (create {EVENT_HANDLER}.make (Current, $on_my_button_clicked ))</code>
|
||||
associates a click to <span>my_button</span> to the feature <span><eiffel>on_my_button_clicked</eiffel></span>. So every time the <span>BUTTON</span> <span><eiffel>my_button</eiffel></span> is clicked, the feature <span>on_my_button_clicked</span> is executed.
|
||||
|
||||
|
||||
The feature <span><eiffel>my_button_clicked</eiffel></span> displays a <span><eiffel>MESSAGE_BOX</eiffel></span>
|
||||
<code>
|
||||
{WINFORMS_MESSAGE_BOX}.show (msg)
|
||||
</code>
|
||||
with the text contained in <eiffel>TEXT_BOX</eiffel>
|
||||
<code>
|
||||
msg := "Text is : '"
|
||||
msg.append (my_text_box.text)
|
||||
msg.append ("'")
|
||||
</code>
|
||||
|
||||
This sample uses the following classes:
|
||||
* <span><eiffel>FORM</eiffel></span>
|
||||
* <span><eiffel>BUTTON</eiffel></span>
|
||||
* <span><eiffel>TEXT_BOX</eiffel></span>
|
||||
* <span><eiffel>EVENT_HANDLER</eiffel></span>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\accessible subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio.NET.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
[[Property:title|Progress bar sample]]
|
||||
[[Property:weight|6]]
|
||||
[[Property:uuid|3b888246-2382-ec0b-ed4c-e1d35fe1bd79]]
|
||||
<div>
|
||||
[[Image:progress-bar|Hello world form]]
|
||||
</div>
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\control_reference\progress_bar_ctl\''
|
||||
# Choose ''progress_bar_ctl.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above. On the left of the form you have the <span><eiffel>PROGRESS_BAR</eiffel></span> control, and on the right you have some controls to configure the <span><eiffel>PROGRESS_BAR</eiffel></span>.
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
The application shows how to configure a <span><eiffel>PROGRESS_BAR</eiffel></span>.
|
||||
|
||||
The feature <span>on_load</span> is redefined and launch a thread (<eiffel>THREAD_START</eiffel>) that simulates the progression of a process.
|
||||
|
||||
This sample uses the following classes:
|
||||
* <span><eiffel>PROGRESS_BAR</eiffel></span>
|
||||
* <span><eiffel>GROUP_BOX</eiffel></span>
|
||||
* <span><eiffel>TRACK_BAR</eiffel></span>
|
||||
* <span><eiffel>COMBO_BOX</eiffel></span>
|
||||
* <span><eiffel>LABEL</eiffel></span>
|
||||
* <eiffel>THREAD_START</eiffel>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\controlReference\ProgressBar sub-directory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
[[Property:title|Simple data binding]]
|
||||
[[Property:weight|7]]
|
||||
[[Property:uuid|5a0572cb-435c-1558-9e05-7de7e6ba08f1]]
|
||||
<div>
|
||||
[[Image:simple-data-binding|Hello world form]]
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\data\simple_binding\''
|
||||
# Choose ''simple_binding.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above.
|
||||
|
||||
This is a list of five customers you can parse, and we display the details of the current customer in the list.
|
||||
|
||||
Clicking on the left button (|<) will bring you on the first customer of the list.
|
||||
|
||||
Clicking on the left button (<) will bring you on the precedent customer in the list.
|
||||
|
||||
Clicking on the right button (>) will bring you on the next customer in the list.
|
||||
|
||||
Clicking on the right button (>|) will bring you on the last customer of the list.
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
|
||||
|
||||
This sample uses the following class:
|
||||
* <span><eiffel>FORM</eiffel></span>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\dataBinding subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio.NET.
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
[[Property:title|Simple Hello world form sample]]
|
||||
[[Property:weight|-12]]
|
||||
[[Property:uuid|f4f924a5-20a2-403b-ee1d-a39c77fbb8fd]]
|
||||
<div>
|
||||
[[Image:simple-hello-world|Hello world form]]
|
||||
</div>
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\hello_world\''
|
||||
# Choose ''hello_world.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above. This is the simplest windows form we can display. We have just set the title with "HelloWorld".
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
The application shows how to display a Windows Form under the windows environment. The application inherits the <span><eiffel>FORM</eiffel></span> class, and just set the title with <span><code>"Hello world"</code></span> with the inherited feature <span><eiffel>set_text</eiffel></span>.
|
||||
<code>
|
||||
set_text ("Hello world")
|
||||
</code>
|
||||
|
||||
The application is launched in a <eiffel>PROCESS</eiffel> with this command line:
|
||||
<code>
|
||||
{WINFORMS_APPLICATION}.run_form (Current).
|
||||
</code>
|
||||
|
||||
This sample uses the following classes:
|
||||
* <span><eiffel>FORM</eiffel></span>
|
||||
* <eiffel>WINFORMS_APPLICATION</eiffel>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\simple hello world subdirectory of the.NET Framework SDK samples directory of Microsoft Visual Studio.NET.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
[[Property:title|Tree view]]
|
||||
[[Property:weight|9]]
|
||||
[[Property:uuid|28ca95af-120a-f99c-16ba-090dd290c23a]]
|
||||
<div>
|
||||
[[Image:tree-view|Hello world form]]
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
==Compiling==
|
||||
|
||||
To compile the example:
|
||||
# Launch EiffelStudio.
|
||||
# Click '''Add project'''
|
||||
# Browse to ''$ISE_EIFFEL\examples\dotnet\winforms\control_reference\tree_view_ctl\''
|
||||
# Choose ''tree_view_ctl.ecf''
|
||||
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
|
||||
# Click '''Open'''.
|
||||
|
||||
|
||||
==Running==
|
||||
|
||||
After launching the application, you will see a window displayed with a similar appearance to the one above. On the left of the form you have the <span><eiffel>TREE_VIEW</eiffel></span> control, and on the right you have some controls to configure the <span><eiffel>TREE_VIEW</eiffel></span>.
|
||||
|
||||
|
||||
|
||||
==Under the Hood==
|
||||
|
||||
The application shows how to use a <span><eiffel>TREE_VIEW</eiffel></span> and what are all its different configurations.
|
||||
|
||||
This sample uses the following classes:
|
||||
* <span><eiffel>TREE_VIEW</eiffel></span>
|
||||
* <span><eiffel>GROUP_BOX</eiffel></span>
|
||||
* <span><eiffel>CHECK_BOX</eiffel></span>
|
||||
* <span><eiffel>COMBO_BOX</eiffel></span>
|
||||
* <span><eiffel>LABEL</eiffel></span>
|
||||
|
||||
==Notes==
|
||||
|
||||
This sample is translated from the example located in the QuickStart\winforms\samples\ControlReference\TreeView subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.
|
||||
|
||||
Reference in New Issue
Block a user