/**************************************************************
 *
 * 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 "frmui.hrc"

/*-----------------------------------------------------------------------
 Description: V-Align
 -----------------------------------------------------------------------*/
String STR_TOP
{
	Text [ en-US ] = "~Top" ;
};
String STR_BOTTOM
{
	Text [ en-US ] = "~Bottom" ;
};
String STR_CENTER_VERT
{
	Text [ en-US ] = "C~enter" ;
};
String STR_CENTER_HORI
{
	Text [ en-US ] = "~Center" ;
};
/*-----------------------------------------------------------------------
 Description: V-Rel
 -----------------------------------------------------------------------*/
String STR_TOPPRT
{
	Text [ en-US ] = "Upper Margin" ;
};

/*-----------------------------------------------------------------------
 Description: H-Rel
 -----------------------------------------------------------------------*/
/*-----------------------------------------------------------------------
 Description: V-Rel Zeichenausrichtungen
 -----------------------------------------------------------------------*/
/*-----------------------------------------------------------------------
 Description: Zeichenausrichtungen fuer frmsh.cxx - Kontextmenue
 -----------------------------------------------------------------------*/
String STR_TOP_BASE
{
	Text [ en-US ] = "Base line at ~top" ;
};
String STR_BOTTOM_BASE
{
	Text [ en-US ] = "~Base line at bottom" ;
};
String STR_CENTER_BASE
{
	Text [ en-US ] = "Base line ~centered" ;
};
String STR_LINE_TOP
{
	Text [ en-US ] = "Top of line" ;
};
String STR_LINE_BOTTOM
{
	Text [ en-US ] = "Bottom of line" ;
};
String STR_LINE_CENTER
{
	Text [ en-US ] = "Center of line" ;
};
String STR_CHAR_TOP
{
	Text [ en-US ] = "Top of character" ;
};
String STR_CHAR_BOTTOM
{
	Text [ en-US ] = "Bottom of character" ;
};
String STR_CHAR_CENTER
{
	Text [ en-US ] = "Center of character" ;
};
String STR_OLE_INSERT
{
	Text [ en-US ] = "Insert object" ;
};
String STR_OLE_EDIT
{
	Text [ en-US ] = "Edit object" ;
};
String STR_COLL_HEADER
{
	Text [ en-US ] = " (Template: " ;
};
String STR_FRMUI_BORDER
{
	Text [ en-US ] = "Borders" ;
};
String STR_FRMUI_PATTERN
{
	Text [ en-US ] = "Background" ;
};
String STR_FRMUI_WRAP
{
	Text [ en-US ] = "Wrap" ;
};
InfoBox MSG_COLUMN_ERR_BOUNDWIDTH
{
	BUTTONS = WB_OK ;
	DEFBUTTON = WB_DEF_OK ;
	Message [ en-US ] = "Column spacing exceeds the column width." ;
};

// ********************************************************************** EOF
