ضع طاولة

هناك جداول عائمة وجداول مضمنة:

  • Inline tables يتم وضعها على نفس طبقة النص ويتم وضعها في تدفق النص الذي يحيط فقط الجدول أعلاه وأدناه. ستظهر الجداول المضمنة دائما بين الفقرات التي وضعتها فيها.
  • يتم وضع Floating tables فوق النص، ويتم تحديد موضع الجدول بالنسبة للفقرة بواسطة مرساة الجدول. لهذا السبب، يتأثر موضع الجدول العائم في المستند بإعدادات تحديد المواقع الرأسية والأفقية.

تحتاج أحيانا إلى وضع جدول في مستند بطريقة معينة. للقيام بذلك، تحتاج إلى استخدام أدوات المحاذاة وتعيين المسافات البادئة بين الجدول والنص المحيط.

في هذه المقالة، سنناقش الخيارات التي يوفرها Aspose.Words لتحديد المواقع.

حدد موضع الجدول المضمن

يمكنك تعيين موضع جدول مضمن باستخدام Aspose.Words API والخاصية Alignment. وبالتالي، يمكنك ضبط محاذاة الجدول بالنسبة إلى صفحة المستند.

يوضح مثال التعليمات البرمجية التالية كيفية تعيين موضع جدول مضمن:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
// Align the table to the center of the page.
table->set_Alignment(TableAlignment::Center);

احصل على محاذاة الجدول العائم

إذا تم تعيين التفاف نص الجدول على Around، يمكنك الحصول على المحاذاة الأفقية والرأسية للجدول باستخدام خصائص RelativeHorizontalAlignment و RelativeVerticalAlignment.

باستخدام other types of text wrapping، يمكنك الحصول على محاذاة الجدول المضمنة باستخدام خاصية Alignment.

يوضح مثال التعليمات البرمجية التالية كيفية الحصول على محاذاة الجدول:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
if (table->get_TextWrapping() == TextWrapping::Around)
{
std::cout << System::EnumGetName(table->get_RelativeHorizontalAlignment()) << std::endl;
std::cout << System::EnumGetName(table->get_RelativeVerticalAlignment()) << std::endl;
}
else
{
std::cout << System::EnumGetName(table->get_Alignment()) << std::endl;
}

الحصول على موقف الجدول العائم

يتم تحديد موضع الجدول العائم باستخدام الخصائص التالية:

يوضح مثال الكود التالي كيفية الحصول على موضع جدول عائم:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Table wrapped by text.docx");
for (const auto& table : System::IterateOver<Table>(doc->get_FirstSection()->get_Body()->get_Tables()))
{
// If the table is floating type, then print its positioning properties.
if (table->get_TextWrapping() == TextWrapping::Around)
{
std::cout << System::EnumGetName(table->get_HorizontalAnchor()) << std::endl;
std::cout << System::EnumGetName(table->get_VerticalAnchor()) << std::endl;
std::cout << table->get_AbsoluteHorizontalDistance() << std::endl;
std::cout << table->get_AbsoluteVerticalDistance() << std::endl;
std::cout << System::Convert::ToString(table->get_AllowOverlap()) << std::endl;
std::cout << table->get_AbsoluteHorizontalDistance() << std::endl;
std::cout << System::EnumGetName(table->get_RelativeVerticalAlignment()) << std::endl;
std::cout << ".............................." << std::endl;
}
}

تعيين موقف الجدول العائم

تماما مثل الحصول على، يمكنك تعيين موضع جدول عائم باستخدام نفس Aspose.Words API.

من المهم أن تعرف أن المحاذاة والمسافة الأفقية والرأسية هي خصائص مجتمعة ويمكن للمرء إعادة تعيين الآخر. على سبيل المثال، سيؤدي تعيين RelativeHorizontalAlignment إلى إعادة تعيين AbsoluteHorizontalDistance إلى قيمته الافتراضية والعكس صحيح. وينطبق الشيء نفسه على الترتيب الرأسي.

يوضح مثال التعليمات البرمجية التالية كيفية تعيين موضع جدول عائم:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Table wrapped by text.docx");
SharedPtr<Table> table = doc->get_FirstSection()->get_Body()->get_Tables()->idx_get(0);
table->set_AbsoluteHorizontalDistance(10);
table->set_RelativeVerticalAlignment(VerticalAlignment::Center);
doc->Save(ArtifactsDir + u"WorkingWithTables.FloatingTablePosition.docx");

الحصول على المسافة بين الجدول والنص المحيط

Aspose.Words يوفر أيضا فرصة لمعرفة المسافات بين الجداول والنصوص المحيطة:

يوضح مثال الكود التالي كيفية الحصول على المسافة بين الجدول والنص المحيط به:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Tables.docx");
std::cout << "\nGet distance between table left, right, bottom, top and the surrounding text." << std::endl;
auto table = System::ExplicitCast<Table>(doc->GetChild(NodeType::Table, 0, true));
std::cout << table->get_DistanceTop() << std::endl;
std::cout << table->get_DistanceBottom() << std::endl;
std::cout << table->get_DistanceRight() << std::endl;
std::cout << table->get_DistanceLeft() << std::endl;