Resizable Dialog
Part of DflCategory
Description
Demonstrates DialogApp that adjusts the position and size of several controls when the overall application window is resized. (Caveat: Done by a DFL newbie so this may not be best way to accomplish the goal.)
Example
// To compile: // dmd DflTest dfl.lib -L/exet:nt/su:windows:4.0 private import std.string; private import dfl.form, dfl.event, dfl.drawing, dfl.application; private import dfl.button, dfl.textbox, dfl.treeview; class ResizableForm: Form { this() { text = "DflResizeTest"; CreateControls(); } const int DEFAULT_LEFT = 2; const int DEFAULT_TOP = 2; const int DEFAULT_HEIGHT_ADJUST = 45; const int DEFAULT_WIDTH_ADJUST = 10; const int DEFAULT_RIGHT = 504; const int DEFAULT_BOTTOM = 404; const int CHAPTREE_WIDTH = 122; const int DEFAULT_BUTTON_HEIGHT = 25; const int DEFAULT_BUTTON_WIDTH = ((CHAPTREE_WIDTH / 2) - 3); const int SEARCHBUTTON_HEIGHT = DEFAULT_BUTTON_HEIGHT; const int BOOKSBUTTON_WIDTH = DEFAULT_BUTTON_WIDTH; const int HELPBUTTON_WIDTH = DEFAULT_BUTTON_WIDTH; const int HELPBUTTON_LEFT = (DEFAULT_RIGHT - (DEFAULT_BUTTON_WIDTH + 5)); const int SEARCHBUTTON_WIDTH = DEFAULT_BUTTON_WIDTH; const int SEARCHBUTTON_LEFT = (DEFAULT_BUTTON_WIDTH + 4); const int SEARCHWORDS_LEFT = (CHAPTREE_WIDTH + 0); const int CHAPTREE_HEIGHT = (DEFAULT_BOTTOM - (DEFAULT_BUTTON_HEIGHT + DEFAULT_HEIGHT_ADJUST)); const int CHAPTREE_TOP = (DEFAULT_BUTTON_HEIGHT + 4); const int OPTIONSBUTTON_WIDTH = 60; const int OPTIONSBUTTON_LEFT = (DEFAULT_RIGHT - (OPTIONSBUTTON_WIDTH + DEFAULT_BUTTON_WIDTH + 8)); const int TEXTVIEWER_WIDTH = (DEFAULT_RIGHT - (CHAPTREE_WIDTH + 3)); const int SEARCHWORDS_WIDTH = (DEFAULT_RIGHT - (CHAPTREE_WIDTH + OPTIONSBUTTON_WIDTH + DEFAULT_BUTTON_WIDTH + 8)); private void CreateControls() { size = Size((DEFAULT_RIGHT - DEFAULT_LEFT) + DEFAULT_WIDTH_ADJUST, DEFAULT_BOTTOM - DEFAULT_TOP); // Overall form size resize ~= &ResizeForm; booksButton = new Button; booksButton.parent = this; booksButton.text = "Books"; booksButton.location = Point(DEFAULT_LEFT, DEFAULT_TOP); booksButton.size = Size(DEFAULT_BUTTON_WIDTH, DEFAULT_BUTTON_HEIGHT); helpButton = new Button; helpButton.parent = this; helpButton.text = "Help"; helpButton.size = Size(DEFAULT_BUTTON_WIDTH, DEFAULT_BUTTON_HEIGHT); optionsButton = new Button; optionsButton.parent = this; optionsButton.text = "Options"; optionsButton.size = Size(DEFAULT_BUTTON_WIDTH, DEFAULT_BUTTON_HEIGHT); searchButton = new Button; searchButton.parent = this; searchButton.text = "Search"; searchButton.location = Point(SEARCHBUTTON_LEFT, DEFAULT_TOP); searchButton.size = Size(DEFAULT_BUTTON_WIDTH, DEFAULT_BUTTON_HEIGHT); searchWordsTextBox = new TextBox; searchWordsTextBox.parent = this; searchWordsTextBox.text = "searchWordsTextBox"; searchWordsTextBox.location = Point(SEARCHWORDS_LEFT, DEFAULT_TOP); searchWordsTextBox.multiline = false; searchWordsTextBox.readOnly = false; viewerTextBox = new TextBox; viewerTextBox.parent = this; viewerTextBox.text = "viewerTextBox"; viewerTextBox.location = Point(CHAPTREE_WIDTH, CHAPTREE_TOP); viewerTextBox.multiline = true; viewerTextBox.readOnly = true; viewerTextBox.wordWrap = true; chapSelectorTree = new TreeView; chapSelectorTree.parent = this; chapSelectorTree.location = Point(DEFAULT_LEFT, CHAPTREE_TOP); ResizeForm(null, null); } private void ResizeForm(Object sender, EventArgs ea) { Size formClientSize = clientSize(); Rect formBounds = bounds(); int formHeight = formClientSize.height; int formWidth = formClientSize.width; int helpButtonLeft = (formWidth - (DEFAULT_BUTTON_WIDTH + 5)); int chapTreeHeight = (formHeight - (DEFAULT_BUTTON_HEIGHT + 10)); int optionsButtonLeft = (formWidth - (OPTIONSBUTTON_WIDTH + DEFAULT_BUTTON_WIDTH + 8)); int textViewerWidth = (formWidth - (CHAPTREE_WIDTH + 3)); int searchWordsWidth = (formWidth - (CHAPTREE_WIDTH + OPTIONSBUTTON_WIDTH + DEFAULT_BUTTON_WIDTH + 8)); searchWordsTextBox.size = Size(searchWordsWidth, DEFAULT_BUTTON_HEIGHT); viewerTextBox.size = Size(textViewerWidth, chapTreeHeight); chapSelectorTree.size = Size(CHAPTREE_WIDTH, chapTreeHeight); optionsButton.location = Point(optionsButtonLeft, DEFAULT_TOP); helpButton.location = Point(helpButtonLeft, DEFAULT_TOP); } private Button booksButton; private Button helpButton; private Button optionsButton; private Button searchButton; private TreeView chapSelectorTree; private TextBox searchWordsTextBox; private TextBox viewerTextBox; } int main() { Application.run(new ResizableForm); return 0; }
Source
Link | http://www.dsource.org/tutorials/index.php?show_example=136 |
Posted by | Lynn |
Date/Time | Wed Dec 22, 2004 4:04 pm |