Po zapisaniu tego warunku:
if(Application->MessageBox("Utworzyć nowy plik?", "Potwierdź", MB_YESNOCANCEL | MB_ICONQUESTION) == IDYES)
(najnowszy) C++ Builder wywala błąd "MessageBoxW is not a member of 'TApplication'.
Co jest nie tak?
spróbuj użyć tej funkcji z uchwytem NULL
czyli :
if(MessageBox(NULL,"Utworzyć nowy plik?", "Potwierdź", MB_YESNOCANCEL | MB_ICONQUESTION) == IDYES)
Nie utworzyłem takiego ansistringa. Cały kod:
//--------------------------------------------------------------------------- #include <fmx.h> #pragma hdrstop #include "notatnik.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.fmx" #pragma resource ("*.SmXhdpiPh.fmx", _PLAT_ANDROID) #pragma resource ("*.XLgXhdpiTb.fmx", _PLAT_ANDROID) #pragma resource ("*.NmXhdpiPh.fmx", _PLAT_ANDROID) TForm1 *Form1; AnsiString nazwa = ""; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::OtworzClick(TObject *Sender) { if(Open->Execute()) { try { PoleT->Lines->LoadFromFile(Open->FileName); nazwa = Open->FileName; } catch(...) { ShowMessage("Nie można wczytać pliku."); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::ZapiszClick(TObject *Sender) { if(nazwa != "") PoleT->Lines->SaveToFile(nazwa); else Form1->Zapisz_jakoClick(MainMenu1); } //--------------------------------------------------------------------------- void __fastcall TForm1::Zapisz_jakoClick(TObject *Sender) { if(Save->Execute()) { try { PoleT->Lines->SaveToFile(Save->FileName); nazwa = Save->FileName; } catch(...) { ShowMessage("Zapis zakończył się niepowodzeniem."); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::NowyClick(TObject *Sender) { if(MessageBox(NULL,"Utworzyć nowy plik?", "Potwierdź", MB_YESNOCANCEL | MB_ICONQUESTIONr) == IDYES) { nazwa = ""; PoleT->Lines->Clear(); } } //---------------------------------------------------------------------------
Wyczytałem, że w nowszych c++ builderach funkcja MessageBox przyjmuje argumenty innego typu, niż w starszych i trzeba było je skonwertować. Ostatecznie zadziałał ten kod:
if(MessageBox(NULL, L"Utworzyć nowy plik?", L"Potwierdź", MB_YESNOCANCEL | MB_ICONQUESTION) == IDYES)
Dzięki.
Wkleiłem Twój pierwszy fragment (bez NULLa) do Buildera...
void __fastcall TForm1::Button1Click(TObject *Sender) { if (Application->MessageBox("Utworzyć nowy plik?", "Potwierdź", MB_YESNOCANCEL | MB_ICONQUESTION) == IDYES) { ShowMessage("dziala!"); } }
...i u mnie działa
C++ Builder 10.3 Community Edition
U mnie działa coś takiego:
void __fastcall TForm1::Nowy1Click(TObject *Sender) { if(Application -> MessageBox( L"Czy na pewno utworzyć nowy plik?",L"Potwierdź", MB_YESNOCANCEL | MB_ICONQUESTION) == IDYES ) { tresc -> Lines -> Clear(); nazwapliku = ""; }
Nie wiem co te "L" oznacza.
A tak na marginesie przydałby się kurs na Embarcadero C++ Builder 10.3 Community Edition.
93,656 zapytań
142,577 odpowiedzi
323,100 komentarzy
63,174 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj