Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder и базы данных

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
#1

Не переключается картинка после отбора данных в ComboBox С++ Builder - C++ Builder БД

02.05.2013, 11:45. Просмотров 2348. Ответов 46
Метки нет (Все метки)

Появилась проблема - одна.
В программе после отбора по жанрам потом открываю по каком-то фильму описание, и там по DBNavigator щелкаю вперед или назад, картинка не переключается, а переключается только текст. Если не отбирать данные перещелкивание картинки работает вместе с текстом.
0
Вложения
Тип файла: rar Kinoteatr.rar (7.48 Мб, 5 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2013, 11:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не переключается картинка после отбора данных в ComboBox С++ Builder (C++ Builder БД):

Не переключается изображение. C++ Builder 6 - C++ Builder
Один баг у меня в программе, нужно устранить. Всего лишь один баг. А баг такой. Через DBNavigator Не переключается картинка в описании о...

С помощью запроса значение из Edit и ComboBox поместить в базу данных при нажатии кнопки в builder c++ - C++ Builder БД
с помощью запроса значение из Edit и ComboBox поместить в базу данных при нажатии кнопки в builder c++

C++ Builder, ComboBox - C++ Builder
Доброго вечера! пожалуйста, помогите разобраться: Порядок занесения новой функции в компонент ComboBox и чем обусловлен такой порядок...

ComboBox/C++Builder - C++ Builder
хочу проверить, заполены ли поля ComboBox. Всего на форме 6 комбоБокс`ов. По очереди сравниваю с пустой строкой. Если условие верно, выдает...

ComboBox в С++ Builder - C++ Builder
Как добавить поля StringGrid в ComboBox для осуществления поиска.

ComboBox в Builder C++ - C++ Builder
Всем привет .Очень нужна ваша помощь ,народ .Можете кинуть какой-нить пример ,подсказать ,рассказать ,поставить на путь истинный ... с этой...

46
The_Immortal
04.05.2013, 00:05     Не переключается картинка после отбора данных в ComboBox С++ Builder
  #16

Не по теме:

В таком случае я тут не помощник. В хаосе разбираться не буду.

На месте аттестационной комиссии за такое творение поставил бы максимум 3 (по 5-бальной).

1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 00:09  [ТС] #17
С DBNavigator'ом можно как нибудь сделать это? Кнопками я не знаю как сделать.
0
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 00:18  [ТС] #18
Цитата Сообщение от The_Immortal Посмотреть сообщение
Evgeny92, начнете с первой формы пока что:


Button5, Button6, Button7, Button11
DBNavigator2
DBGrid2
Edit2
ComobBox5, ComboBox6



Формы на добавление и изменение должно быть максимум две - неважно сераилы ли это, фильмы или мультики. Вообще можно обойтись одной.
Речь в теме идет не о лишних компонентах и формах, об этом ничего я не спрашивал.
У меня ведь другая проблема.
На счет этого я может быть и переделаю. Уберу лишние кнопки и формы. Как только время будет.
0
Ddv122
Почемучка)
1237 / 297 / 16
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
04.05.2013, 00:22 #19
Evgeny92, ты наведи порядок, и людям проще редактировать будет + себе приятнее)
1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 00:32  [ТС] #20
Цитата Сообщение от The_Immortal Посмотреть сообщение

Не по теме:

В таком случае я тут не помощник. В хаосе разбираться не буду.

На месте аттестационной комиссии за такое творение поставил бы максимум 3 (по 5-бальной).

По нашим эта оценка 6 или 7

Добавлено через 1 минуту
День на переделку программы.

Добавлено через 7 минут
Ладно попробую переделать. Завтра отпишу.
1
The_Immortal
1560 / 496 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 01:00 #21
Evgeny92, правильно.

Навскидку проблема в этом (форма 3):

C++
1
2
3
4
5
6
7
8
9
10
11
12
if(!(TBlobField*)DataModule2->ADOTable1->FieldByName("Постер фильма")->IsNull){
       if(!Form3->Image1->Visible)Form3->Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
        ((TGraphicField*)DataModule2->ADOTable1->FieldByName("Постер фильма"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Form3->Image1->Picture->Graphic=ptJpg;
        Form3->Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Form3->Image1->Visible=false;


А теперь смотрим на первую форму, когда производим фильтрацию по фильмам:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::ComboBox2Change(TObject *Sender)
{
DataModule2->DataSource1->DataSet = DataModule2->ADOQuery1;
    DataModule2->ADOQuery1->Close();
    DataModule2->ADOQuery1->SQL->Clear();
    if(ComboBox2->ItemIndex == 0)
      DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы");
    else
      DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  Страна LIKE '%"+ComboBox2->Text+"%'");
    DataModule2->ADOQuery1->Open();
}
И сравниваем DataSet'ы

Ничего не замечаем?
2
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:16  [ТС] #22
ADOTable1 на ADOQuery1 менять?

И все же этот проект начинаю переделывать и возникают вопросы, в котором не знаю как решить. Наверное переделывать не буду.
0
Ddv122
Почемучка)
1237 / 297 / 16
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
04.05.2013, 01:23 #23
Evgeny92,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TForm3::DBNavigator1Click(TObject *Sender,
      TNavigateBtn Button)
{
AnsiString wsg = DataModule2->ADOQuery1->FieldByName("Òðåéëåð")->AsString; //Èç ïîëå Òðåéëåð áóäåò îòêðûâГ*ГІГјГ±Гї ññûëêГ* Г*Г* ГўГҐГЎ Г±ГІГ°Г*Г*èöó
wsg = wsg.SubString(wsg.Pos("#")+1,wsg.Length());
wsg = wsg.Delete(wsg.Pos("#"),1);
Form3->CppWebBrowser1->Navigate(WideString(wsg) ) ;
 
if(!(TBlobField*)DataModule2->ADOQuery1->FieldByName("Ïîñòåð ôèëüìГ*")->IsNull){
       if(!Form3->Image1->Visible)Form3->Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
        ((TGraphicField*)DataModule2->ADOQuery1->FieldByName("Ïîñòåð ôèëüìГ*"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Form3->Image1->Picture->Graphic=ptJpg;
        Form3->Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Form3->Image1->Visible=false;
}
//---------------------------------------------------------------------------
+

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::Button12Click(TObject *Sender)
{
Form4->Show();
Form4->TabSheet1->Show();
 
if(!(TBlobField*)DataModule2->ADOTable2->FieldByName("Ïîñòåð ñåðèГ*Г«Г*")->IsNull){
       if(!Form4->Image1->Visible)Form4->Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
             DataModule2->ADOQuery1->SQL->Add("Select * from Ôèëüìû WHERE  Г‘ГІГ°Г*Г*Г* LIKE '%"+ComboBox2->Text+"%'");
    DataModule2->ADOQuery1->Open();
        ((TGraphicField*)DataModule2->ADOTable2->FieldByName("Ïîñòåð ñåðèГ*Г«Г*"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Form4->Image1->Picture->Graphic=ptJpg;
        Form4->Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Form4->Image1->Visible=false;
}
1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:26  [ТС] #24
Менял я на Query
Ошибка выскакивает
0
Ddv122
Почемучка)
1237 / 297 / 16
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
04.05.2013, 01:45 #25
Evgeny92, ахххх
я 3 форму смотрел)))))))))а у тебя на 4)
Наведи порядок , то чёрт ногу сломит)
1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:50  [ТС] #26
Да, сработало:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Button11Click(TObject *Sender)
{
Form3->Show();
Form3->TabSheet1->Show();
 
 
if(!(TBlobField*)DataModule2->ADOTable1->FieldByName("Постер фильма")->IsNull){
       if(!Form3->Image1->Visible)Form3->Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
             DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  Жанры LIKE '%"+ComboBox1->Text+"%'");
    DataModule2->ADOQuery1->Open();
        ((TGraphicField*)DataModule2->ADOTable1->FieldByName("Постер фильма"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Form3->Image1->Picture->Graphic=ptJpg;
        Form3->Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Form3->Image1->Visible=false;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm3::DBNavigator1Click(TObject *Sender,
      TNavigateBtn Button)
{
AnsiString wsg = DataModule2->ADOTable1->FieldByName("Трейлер")->AsString; //Из поле Трейлер будет открываться ссылка на веб страницу
wsg = wsg.SubString(wsg.Pos("#")+1,wsg.Length());
wsg = wsg.Delete(wsg.Pos("#"),1);
Form3->CppWebBrowser1->Navigate(WideString(wsg) ) ;
 
if(!(TBlobField*)DataModule2->ADOQuery1->FieldByName("Постер фильма")->IsNull){
       if(!Form3->Image1->Visible)Form3->Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
        ((TGraphicField*)DataModule2->ADOQuery1->FieldByName("Постер фильма"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Form3->Image1->Picture->Graphic=ptJpg;
        Form3->Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Form3->Image1->Visible=false;
}
Как добавить коды во внутрь также для других категорий. Решена проблема с Жанрами. Надо еще добавить и страны и годы.



Но появилась другая ошибка. при запуски программы. Если не отобрал по Жанрам. Открываю Описание листаю а картинка они исчезли, не появляются.
При запуске ComboBox1(Жанры) в свойстве Text "Всех жанров" и в Itims "Всех жанров" в списке.
0
Ddv122
Почемучка)
1237 / 297 / 16
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
04.05.2013, 01:52 #27
Evgeny92, Жень, наведи порядок, то не понятно что у тебя где и как...
1
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:57  [ТС] #28
Ну я тогда, переделывать не буду. А просто Компоненты Передвину, Label'ми подпишу. Так мне сделать?
0
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 02:13  [ТС] #29
Не знаю. Так сойдет?
Подвинул компоненты.
0
Вложения
Тип файла: rar 12345.rar (7.81 Мб, 5 просмотров)
Evgeny92
276 / 4 / 2
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 02:20  [ТС] #30
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Да, сработало:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Button11Click(TObject *Sender)
{
Form3->Show();
Form3->TabSheet1->Show();
 
 
if(!(TBlobField*)DataModule2->ADOTable1->FieldByName("Постер фильма")->IsNull){
       if(!Form3->Image1->Visible)Form3->Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
             DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  Жанры LIKE '%"+ComboBox1->Text+"%'");
    DataModule2->ADOQuery1->Open();
        ((TGraphicField*)DataModule2->ADOTable1->FieldByName("Постер фильма"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Form3->Image1->Picture->Graphic=ptJpg;
        Form3->Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Form3->Image1->Visible=false;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm3::DBNavigator1Click(TObject *Sender,
      TNavigateBtn Button)
{
AnsiString wsg = DataModule2->ADOTable1->FieldByName("Трейлер")->AsString; //Из поле Трейлер будет открываться ссылка на веб страницу
wsg = wsg.SubString(wsg.Pos("#")+1,wsg.Length());
wsg = wsg.Delete(wsg.Pos("#"),1);
Form3->CppWebBrowser1->Navigate(WideString(wsg) ) ;
 
if(!(TBlobField*)DataModule2->ADOQuery1->FieldByName("Постер фильма")->IsNull){
       if(!Form3->Image1->Visible)Form3->Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
        ((TGraphicField*)DataModule2->ADOQuery1->FieldByName("Постер фильма"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Form3->Image1->Picture->Graphic=ptJpg;
        Form3->Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Form3->Image1->Visible=false;
}
Как добавить коды во внутрь также для других категорий. Решена проблема с Жанрами. Надо еще добавить и страны и годы.



Но появилась другая ошибка. при запуски программы. Если не отобрал по Жанрам. Открываю Описание листаю а картинка они исчезли, не появляются.
При запуске ComboBox1(Жанры) в свойстве Text "Всех жанров" и в Itims "Всех жанров" в списке.
Да сработало, но еще при повторном заходе в Описание выдает ошибку.
0
04.05.2013, 02:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2013, 02:20
Привет! Вот еще темы с ответами:

Работа с ComboBox в С++ Builder 6 - C++ Builder
Есть такая проблема, надо на форме связать два ComboBox компонента. При выборе элемента из списка на ComboBox1 ему соответствовал элемент...

Поиск из ComboBox в С++ Builder - C++ Builder
Подскажите плиз. Как организовать поиск по StringGrid. Ели у меня есть ComboBox и в нем занесены поля StringGrid. Поиск должен...

DBImage и ComboBox в C++Builder - C++ Builder БД
Добрый день специалисты. Использую C++Builder 6. Дипл. проект делаю. Тема Kinoteatr. Делаю тот же проект что и некоторые курсовые на...

Задачка с использованием ComboBox(Builder C++) - C++ Builder
Пожалуйста помогите!!!нужно написать код для трех форумов,в первом находиться таблица с данными(к примеру список учеников),во втором сам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru