Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
1

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

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

Author24 — интернет-сервис помощи студентам
Появилась проблема - одна.
В программе после отбора по жанрам потом открываю по каком-то фильму описание, и там по DBNavigator щелкаю вперед или назад, картинка не переключается, а переключается только текст. Если не отбирать данные перещелкивание картинки работает вместе с текстом.
Вложения
Тип файла: rar Kinoteatr.rar (7.48 Мб, 10 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2013, 11:45
Ответы с готовыми решениями:

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

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

Обновление данных листа после изменения ComboBox
На листе имеются ячейки G1 (фамилия), K1 (имя), I1 (отчество), N1 (фамилия, инициалы). При...

Ошибка в ComboBox после добавления источника данных
Есть класс, который я использую в качестве источника данных, он имеет вид: public class DemoSource...

46
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
02.05.2013, 12:07  [ТС] 2
Код на Form1

На ComboBox1 по Жанрам
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
DataModule2->DataSource1->DataSet = DataModule2->ADOQuery1;
    DataModule2->ADOQuery1->Close();
    DataModule2->ADOQuery1->SQL->Clear();
    if(ComboBox1->ItemIndex == 0)
      DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы");
    else
      DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  Жанры LIKE '%"+ComboBox1->Text+"%'");
    DataModule2->ADOQuery1->Open();
 
}
На DBGrid
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::DBGrid1CellClick(TColumn *Column)
{
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->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;
}

На Form3

На DBNavigator

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->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;
}
0
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
02.05.2013, 12:17  [ТС] 3
Вот проект нормальный.

Прошу помочь. Всего лишь одна ошибка.
Вложения
Тип файла: rar Kinoteatr.rar (7.48 Мб, 11 просмотров)
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
02.05.2013, 12:19 4
Evgeny92, какая?
0
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
03.05.2013, 12:40  [ТС] 5
Ну вообщем.Проблема после отбора в выпадающем списке.

В главном окне, отбираю по жанрам фильмы. Потом открываю описание по каком-то фильму(она в новом окне). Там есть переключатель DBNavigator по нему щелкаю и картинка не переключается. Только текст переключается.

Если я после запуска программы, не отобрал по жанрам и т.д., открываю описание и там переключаю картинка и текст переключается. Тут норм нет проблем.

Добавлено через 9 часов 56 минут
???

Добавлено через 14 часов 18 минут
Никаких предложений?
0
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
03.05.2013, 12:57  [ТС] 6
Проблема с переключением картинки после отбора по жанрам, по странам или по годам, или по поиску фильма.
Текст соотвествует записям БД, а картинка нет.
Миниатюры
Не переключается картинка после отбора данных в ComboBox С++ Builder   Не переключается картинка после отбора данных в ComboBox С++ Builder   Не переключается картинка после отбора данных в ComboBox С++ Builder  

Не переключается картинка после отбора данных в ComboBox С++ Builder   Не переключается картинка после отбора данных в ComboBox С++ Builder  
0
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
03.05.2013, 20:17  [ТС] 7
Что мне сделать? Одна проблема всего лишь? Как исправить?
Скачайте и посмотрите как работает программа.

Проблема. Не переключается картинка в окне описании, после отбора фильмов по жанрам и по другим категориям.

Добавлено через 22 минуты
Неужели мне так и оставить с багом?
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
03.05.2013, 23:10 8
Evgeny92, я советовал замени DBNavigator на image и Button и переключай картинки
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
03.05.2013, 23:32 9
Evgeny92, пока проект детально рассматривать не стал, но как только открыл, то сразу возник вопрос: для чего используется два компонента TADOConnection?
0
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
03.05.2013, 23:45  [ТС] 10
Ну я делал для 2-х таблиц. Можно было бы с одним, база одна а таблицы 2-е. Ну пусть так будет.

Добавлено через 11 минут
Вот решил поменять на кнопки. Я правда не знаю как это сделать. Делал по принципу добавления делал на другой форме.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
void __fastcall TForm3::Button3Click(TObject *Sender)
{
 DataModule2->DataSource1;
DataModule2->ADOTable1->Next();
DataModule2->ADOTable1->FieldByName("Íàçâàíèå ôèëüìà")->AsString = Form3->DBText1;
DataModule2->ADOTable1->FieldByName("Æàíðû")->AsString = Form3->DBText2;
DataModule2->ADOTable1->FieldByName("Ñòðàíà")->AsString = Form3->DBText3;
DataModule2->ADOTable1->FieldByName("Ãîä âûõîäà")->AsString = Form3->DBText4;
DataModule2->ADOTable1->FieldByName("Ðåæèññåð")->AsString = Form3->DBText5;
DataModule2->ADOTable1->FieldByName("Âðåìÿ")->AsString = Form3->DBText6;
DataModule2->ADOTable1->FieldByName("Â ðîëÿõ")->AsString = Form3->DBMemo1->Text;
DataModule2->ADOTable1->FieldByName("Ñþæåò")->AsString = Form3->DBMemo2->Text;
 
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->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;
 
DataModule2->ADOTable1->Post();
 
 
 
}
Но ошибка выскакиваерт на строчки

C++
1
DataModule2->ADOTable1->FieldByName("Íàçâàíèå ôèëüìà")->AsString = Form3->DBText1;
А с Навигатором никак сделать нельзя?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
03.05.2013, 23:45 11
Evgeny92, уважаемый, у Вас в проекте истинный хаос

Удалите ADOConnection2.
Удалите ненужные кнопки - одной кнопкой закрывать аналогичную другую, но просто с другим названием - это полнейший моветон. Меняйте по надобности их Caption.
Удалите лишние DBGrid'ы/DBNavigator'ы на первой форме. По необходимости меняйте их DataSet.
Удалите лишние формы - я их как минимум 2 штуки обнаружил.
1
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
03.05.2013, 23:54  [ТС] 12
Не нужные кнопки это какие? И формы какие?

Добавлено через 59 секунд
До защиты остается очень мало времени. Программу давно должна быть разработана. И вот один баг всего лишь убрать нужно.
Сейчас я с пояснительной запиской занимаюсь.

Добавлено через 2 минуты
Вам понятна какая у меня ошибка? Я расписал как мог.

Добавлено через 1 минуту
программа то нормально в основном работает.
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
03.05.2013, 23:54 13
Evgeny92, начнете с первой формы пока что:

Цитата Сообщение от Evgeny92 Посмотреть сообщение
Не нужные кнопки это какие?
Button5, Button6, Button7, Button11
DBNavigator2
DBGrid2
Edit2
ComobBox5, ComboBox6


Цитата Сообщение от Evgeny92 Посмотреть сообщение
И формы какие?
Формы на добавление и изменение должно быть максимум две - неважно сераилы ли это, фильмы или мультики. Вообще можно обойтись одной.
1
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
03.05.2013, 23:55 14
Evgeny92, ну чего 2 месяца есть)

Цитата Сообщение от Evgeny92 Посмотреть сообщение
Вам понятна какая у меня ошибка? Я расписал как мог.
Понятна)
1
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
03.05.2013, 23:59  [ТС] 15
Цитата Сообщение от The_Immortal Посмотреть сообщение
Evgeny92, начнете с первой формы пока что:


Button5, Button6, Button7, Button11
DBNavigator2
DBGrid2
Edit2
ComobBox5, ComboBox6
Это тоже не важно. Мне устраивает.

делал так. На форме 2-е кнопки чтобы переключиться. Это Фильмы и Сериалы. По кнопке Фильмы, становятся комоненты и БД Сериалы не видимыми, если по Сериалам то компоненты Фильмы становятся не видимыми.
0
The_Immortal
04.05.2013, 00:05
  #16

Не по теме:

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

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

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


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



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

Не по теме:

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

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

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

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

Добавлено через 7 минут
Ладно попробую переделать. Завтра отпишу.
1
04.05.2013, 00:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2013, 00:32
Помогаю со студенческими работами здесь

Сохранить данные в ComboBox после добавления новых данных
Добрый день. Создана форма организаций. Список организаций в комбобоксе создан программно. ...

Раскладка клавиатуры после входа не переключается при нажатии клавиш
Доброго времени суток, господа-форумчане. Проблема следующего характера: Поднял CentOS 6.3 64-bit...

Как реализовать вставку данных, после выбора из ComboBox в DataGridVew
Есть DataGridView, в нем ComboBoxDataGridView - Изделия, при выборе изделия необходимо в...

Сравнение значений в строках после отбора
Добрый день! Подскажите, можно ли после того как заполнил ТЗ и сделал свертку и отбор, сравнить...

Добавление дополнительного поля для отбора в форбму отбора
Здравствуйте, подскажите пожалуйста как добавить в форму отбора дополнительные поля для отбора в...

Несколько Combobox-ов. После выбора значения в одном Combobox-е, оно должно стать недоступным в других
Доброго времени суток. У меня такая проблемка. Имеется 3 combobox'a ,содержащие названия городов,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru