الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هي اطول أداه لعرض نص ؟

بدأه ابو رفيق في 8 مايو 2010 · 2 رد · 707 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة اعضاء المنتدى الكرام عندي سؤال يمكن يكون سهل جدا بالنسبة لكم بس أنا قطعت شوط كبير فيه ولكن ظهرت مشكلة مش عارف كيف احلها

عندي فورم بعرض على أداة تسمية label من قاعدة بيانات بحيث يقرأء كافة السجلات ويجمعها مع بعض ويطبعها على كامل الأداة تحت خاصية capction وفيه أداة تايمر تجعل اداة التسمية تمرر مثل ما يظهر في شريط الأخبار زي قناة الجزيرة أو العربية

المشكلة إن الأداة تسمية لها حد معين من النص وبعد كده بتقف غيرتها لمربع نص استوعبت الحمد لله النص كله لكن ظهرت مشكله فيه وهو الفرق بينه وبين الأداة تسمية وهي خاصية autosize ياريت حد يجاوب على سؤالي كيف أخلي مربع النص يظهر بعرض النص بالكامل وإ>ا لم يكن ممكن هل هناك أداة أخرى يمكن الاعتماد عليها وشكرًا

تم تعديل هذه المشاركة بواسطة ابو رفيق في 8 مايو 2010 في 12:57

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#2

السلام عليكم...

لتغيير عرض مربع النص (TextBox) تلقائياً ليكون حسب النص الموجود فيه، اضبط الخاصية MultiLine على True (مع أننا سنعرض النص كسطر مفرد)، و ضع الكود التالي في Module (وحدة برمجية):

Private Const EM_GETLINECOUNT = &HBA
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Sub MakeTextBoxWide(ATextBox As Control, ParentForm As Form)
    Dim LnCount As Long
    Dim OldFont As Font
    Dim OldWidth As Single

    If Not (TypeOf ATextBox Is TextBox) Then Exit Sub
    If Not ATextBox.MultiLine Then Exit Sub

    Set OldFont = ParentForm.Font
    Set ParentForm.Font = ATextBox.Font

    ATextBox.Text = Trim$(Replace$(ATextBox.Text, vbCrLf, " "))
    ATextBox.Width = ParentForm.TextWidth(ATextBox.Text)
    OldWidth = ATextBox.Width

    LnCount = SendMessage(ATextBox.hwnd, EM_GETLINECOUNT, 0&, 0&)
    Do While LnCount > 1
        ATextBox.Width = ATextBox.Width + ParentForm.ScaleX(2, vbPixels, ParentForm.ScaleMode)
        If ATextBox.Width > (OldWidth * 1.5) Then Exit Do
        LnCount = SendMessage(ATextBox.hwnd, EM_GETLINECOUNT, 0&, 0&)
    Loop
    Set ParentForm.Font = OldFont
End Sub

و في الحدث Load للـ Form المحتوية على مربع النص قم باستدعاء هذا الإجراء، كالتالي مثلاً:

Private Sub Form_Load()
    MakeTextBoxWide Text1, Me
End Sub

طبعاً يمكنك استدعاء ذلك الإجراء مع أي مربع نص و من أي Form.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

كود جميل تسلم أصابعك الذهبية إية الحلاوه دي :clapping:

ألف شكر يا najy_zl رد رائع.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…