xrenok |
Отправлено: 26.02.2004, 17:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Использую цепочку ADOConnection1, ADODataSet1, DataSource1, DBGridEh1.
Требуется программно удалять и редактировать записи в гриде (посредством вызова popupmenu).
Пока просто пытаюсь вывести окно с предупреждением:
Application->MessageBox(ADODataSet3->FieldByName("Title")->Text->AsString, "Удаление записи", MB_OKCANCEL);
Ничего не выходит. Как надо делать? |
|
xTrim |
Отправлено: 26.02.2004, 18:22 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
CODE |
Application->MessageBox(ADODataSet3->FieldByName("Title")->AsString, "Удаление записи", MB_OKCANCEL)
|
может так?
|
|
olegenty |
Отправлено: 26.02.2004, 18:42 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а на самом деле вот так:
CODE | Application->MessageBox([B]ADODataSet3->FieldByName("Title")->AsString.c_str()[/B], "Удаление записи", MB_OKCANCEL) |
ибо объявлена функция вот так:
CODE | int __fastcall MessageBox(const char * Text, const char * Caption, int Flags); |
|
|
xrenok |
Отправлено: 26.02.2004, 18:44 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Так работает:
ShowMessage(ADODataSet3Title->AsString);
А так нет:
Application->MessageBox(ADODataSet3Title->AsString, "Óäàëåíèå çàïèñè", MB_OKCANCEL);
|
|
olegenty |
Отправлено: 26.02.2004, 19:00 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
надо к char* преобразовывать:
Application->MessageBox(ADODataSet3Title->AsString.c_str(), "Удалить запись", MB_OKCANCEL);
|
|
xrenok |
Отправлено: 28.02.2004, 23:57 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Подскажите как написать данную функцию без использования strcat. Для меня тип AnsiString совершенно не знаком.
void __fastcall TForm1::FilmDeleteExecute(TObject *Sender)
{
char tmp[258]="\"";
int msg;
strcat(strcat(tmp,ADODataSet1->FieldByName("Title")->AsString.c_str()),"\"");
msg = Application->MessageBox(tmp, "Удаление записи", MB_OKCANCEL);
if(msg==IDOK){ADODataSet1->Delete();}
}
|
|
olegenty |
Отправлено: 03.03.2004, 09:18 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
мне бы твои проблемы:
CODE |
void __fastcall TForm1::FilmDeleteExecute(TObject *Sender)
{
AnsiString asMessage = "\"" + ADODataSet1->FieldByName("Title")->AsString + "\"";
int msg;
msg = Application->MessageBox(asMessage.c_str(), "Удаление записи", MB_OKCANCEL);
if(msg==IDOK)
{
ADODataSet1->Delete();
}
}
|
с другого языка переходишь, чтоли? Страуструпа двухтомник второе издание найди и почитай. (в смысле — рекомендую, потому что вопросы ну совсем чайные)
|
|
xrenok |
Отправлено: 03.03.2004, 17:56 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Да, с другого. С чистого Си.
О типе AnsiString уже почитал. Спасибо. |
|
olegenty |
Отправлено: 04.03.2004, 09:14 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Огромное множество вещей висит на перегруженных (и, зачастую, имеющих классовое определение) операторах. Оч. удобно.
Я с паскаля переходил. Но давно.
|
|