سؤال

في الطلب (النموذج الرئيسي هو TTntForm, C++Builder 2006):

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Caption=L"1st caption";        // This works.
  Form1->Caption=L"2nd caption"; // But this doesn't work,
                                 // Caption of the form remains "1st caption".
}

ما قد يكون سبب هذه المشكلة ؟

تحرير: شكرا لكم جميعا على إجاباتك.لقد وجدت علة.كان هناك مرتين إنشاء نموذج في ملف المشروع:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
هل كانت مفيدة؟

المحلول 4

شكرا لكم جميعا على إجاباتك.لقد وجدت علة.كان هناك مرتين إنشاء نموذج في ملف المشروع:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);

نصائح أخرى

هل أنت متأكد من أن "هذا" هو في الواقع Form1?

if (this != Form1)
    ShowMessage("Whoops. Didn't expect that...");

كيف هو شكل كونها خلقت ؟ هل هو في قائمة إذا "autocreate" أشكال في خيارات المشروع ، أو يمكنك يدويا إنشاء مثيل من ذلك ؟

على افتراض Form1 النموذج الرئيسي ، هو عادة إنشاؤها بواسطة الكود في الرئيسية project.cpp الملف في الدالة WinMain().

Application->CreateForm(__classid(TForm1), &Form1);

هذا يجب ان تحصل على كتب لك تلقائيا بواسطة C++Builder, لذا يجب الحذر من تغيير ذلك يدويا.

محاولة

النفس.التعليق

إذا كان هذا يعمل ثم Form1 ليس مثيل TForm1

أو debug لمعرفة نوع

هل أنت متأكد من TForm1 شكل الطبقة كنت تعمل مع إنشاء مثيل Form1?

أنا لا أعتقد أن TForm1 يعرف أن لديك ما يسمى

TForm1 * Form1=new TForm1(...); 

somewere.هل هذه أول محاولة في CBuilder?TForm1 * Form1 أن ترى ولدت في أعلى الملف هو مجرد إعلان.يجب أيضا إنشاء.لماذا لا مثل أول, العمل, حل ؟ ليست هناك حاجة لاستخدام Form1 داخل الصف.أو إذا كان يجب عليك حقا ثم استخدام

this->Caption="...";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top