/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/



#include "dlgresid.hrc"

// Dialog Controls ---------------------------------------------------------------

String RID_STR_CLASS_CONTROL
{
	Text = "Control" ;
};
String RID_STR_CLASS_DIALOG
{
	Text = "Dialog" ;
};
String RID_STR_CLASS_BUTTON
{
	Text = "CommandButton" ;
};
String RID_STR_CLASS_RADIOBUTTON
{
	Text = "OptionButton" ;
};
String RID_STR_CLASS_CHECKBOX
{
	Text = "CheckBox" ;
};
String RID_STR_CLASS_LISTBOX
{
	Text = "ListBox" ;
};
String RID_STR_CLASS_COMBOBOX
{
	Text = "ComboBox" ;
};
String RID_STR_CLASS_GROUPBOX
{
	Text = "FrameControl" ;
};
String RID_STR_CLASS_EDIT
{
	Text = "TextField" ;
};
String RID_STR_CLASS_FIXEDTEXT
{
	Text = "Label" ;
};
String RID_STR_CLASS_IMAGECONTROL
{
	Text = "ImageControl" ;
};
String RID_STR_CLASS_PROGRESSBAR
{
	Text = "ProgressBar" ;
};
String RID_STR_CLASS_SCROLLBAR
{
	Text = "ScrollBar" ;
};
String RID_STR_CLASS_FIXEDLINE
{
	Text = "FixedLine" ;
};
String RID_STR_CLASS_DATEFIELD
{
	Text = "DateField" ;
};
String RID_STR_CLASS_TIMEFIELD
{
	Text = "TimeField" ;
};
String RID_STR_CLASS_NUMERICFIELD
{
	Text = "NumericField" ;
};
String RID_STR_CLASS_CURRENCYFIELD
{
	Text = "CurrencyField" ;
};
String RID_STR_CLASS_FORMATTEDFIELD
{
	Text = "FormattedField" ;
};
String RID_STR_CLASS_PATTERNFIELD
{
	Text = "PatternField" ;
};
String RID_STR_CLASS_FILECONTROL
{
	Text = "FileControl" ;
};
String RID_STR_CLASS_TREECONTROL
{
	Text = "TreeControl" ;
};


// Property Browser Headline ----------------------------------------------------------------

String RID_STR_BRWTITLE_PROPERTIES
{
	Text [ en-US ] = "Properties: ";
};
String RID_STR_BRWTITLE_NO_PROPERTIES
{
	Text [ en-US ] = "No Control marked";
};
String RID_STR_BRWTITLE_MULTISELECT
{
	Text [ en-US ] = "Multiselection";
};

// -----------------------------------------------------------------------
