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

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

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

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

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

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

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

46
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 01:00
Студворк — интернет-сервис помощи студентам
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
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:16  [ТС]
ADOTable1 на ADOQuery1 менять?

И все же этот проект начинаю переделывать и возникают вопросы, в котором не знаю как решить. Наверное переделывать не буду.
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
04.05.2013, 01: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
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:26  [ТС]
Менял я на Query
Ошибка выскакивает
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
04.05.2013, 01:45
Evgeny92, ахххх
я 3 форму смотрел)))))))))а у тебя на 4)
Наведи порядок , то чёрт ногу сломит)
1
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:50  [ТС]
Да, сработало:

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
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
04.05.2013, 01:52
Evgeny92, Жень, наведи порядок, то не понятно что у тебя где и как...
1
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 01:57  [ТС]
Ну я тогда, переделывать не буду. А просто Компоненты Передвину, Label'ми подпишу. Так мне сделать?
0
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 02:13  [ТС]
Не знаю. Так сойдет?
Подвинул компоненты.
Вложения
Тип файла: rar 12345.rar (7.81 Мб, 6 просмотров)
0
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 02:20  [ТС]
Цитата Сообщение от 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
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
04.05.2013, 02:21
Evgeny92, удали не нужное, сделай по уму, переделка твоя - день/два займет)
дбнавигатор замени на просто кнопки, устрани варинги...тебе только 4 формы нужны)
Честно скажу это на 6/7 балов не потянет...
2
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 05:30
Ddv122,
Цитата Сообщение от Ddv122 Посмотреть сообщение
удали не нужное, сделай по уму, переделка твоя - день/два займет)
Это так.


Цитата Сообщение от Ddv122 Посмотреть сообщение
дбнавигатор замени на просто кнопки
А вот с этим пока не заморачивайтесь.


Цитата Сообщение от Ddv122 Посмотреть сообщение
тебе только 4 формы нужны
Первая форма - общий список фильмов/сериалов с возможностью поиска, фильтрации, удаления.
Вторая форма - детализированный просмотр фильма/сериала.
Третья форма - добавление/изменение информации о фильме/сериале.

Третью, если совсем сложно, можно разбить еще на две:
3.1 Добавление информации о фильме/сериале.
3.2 Изменение информации о фильме/сериале.

Но я бы не стал разбивать.
1
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
04.05.2013, 19:58  [ТС]
И вот при переделки возникает ряд вопросов.

1)
В том проекте. 2-е сетки 2-е кнопки Найти, и компоненты ComboBox'ы. На Компоненте Найти.

Код на одном компоненте Button для поиска Фильма.

C++
1
2
3
4
5
DataModule2->DataSource1->DataSet = DataModule2->ADOQuery1;
    DataModule2->ADOQuery1->Close();
   DataModule2->ADOQuery1->SQL->Clear();
    DataModule2->ADOQuery1->SQL->Add("Select * from Фильмы WHERE  [Название фильма] LIKE '%"+Edit1->Text+"%'");
    DataModule2->ADOQuery1->Open();
И такой же код на другой кнопке для поиска Сериала
C++
1
2
3
4
5
DataModule2->DataSource2->DataSet = DataModule2->ADOQuery2;
    DataModule2->ADOQuery2->Close();
   DataModule2->ADOQuery2->SQL->Clear();
    DataModule2->ADOQuery2->SQL->Add("Select * from Сериалы WHERE  [Название сериала] LIKE '%"+Edit2->Text+"%'");
    DataModule2->ADOQuery2->Open();


Сетка DBGrid одна, Поле Найти Button3 Одна. Т.е.
При нажатии Кнопки Фильмы нужно что бы По кнопке найти и фильтрация по жанрам и т.д. находила по БД Фильмы
При нажатии Кнопки Сериалы ....... по БД Сериалы.
Как эти 2-а кода написать в одну кнопку Найти Button3?


2)Добавил формы на Добавление записи и Изменение записи.
Тут нужно при переходе в первой форме Фильмы нужно чтобы в Форме добавления Там кнопка Добавить Button какойто, Нужно чтобы добавлял свою таблицу БД Фильмы.
При переходе Сериалы .... тоже самое.


В том проекте Форма добавление записи, на кнопку добавление записи

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
void __fastcall TForm5::Button2Click(TObject *Sender)
{
if (Edit1->Text=="")
{
ShowMessage("Введите данные Название фильма!");
return;
}
else if (Edit2->Text=="")
{
ShowMessage("Введите данные Жанры!");
return;
}
else if (Edit3->Text=="")
{
ShowMessage("Введите данные Страна!");
return;
}
else if (Edit4->Text=="")
{
ShowMessage("Введите данные Год выхода!");
return;
}
else if (Edit5->Text=="")
{
ShowMessage("Введите данные Режиссер!");
return;
}
else if (Edit6->Text=="")
{
ShowMessage("Введите данные Время!");
return;
}
else if (Memo1->Text=="")
{
ShowMessage("Введите данные В ролях!");
return;
}
else if (Memo2->Text=="")
{
ShowMessage("Введите данные Сюжет!");
return;
}
else if (Edit7->Text=="")
{
ShowMessage("Введите данные Трейлер!");
return;
}
else if(Image1->Picture->Graphic==NULL)
{
ShowMessage("Вставьте Обложку фильма");
return;
}
 
DataModule2->ADOTable1->Insert();
DataModule2->ADOTable1->FieldByName("Название фильма")->AsString = Form5->Edit1->Text;
DataModule2->ADOTable1->FieldByName("Жанры")->AsString = Form5->Edit2->Text;
DataModule2->ADOTable1->FieldByName("Страна")->AsString = Form5->Edit3->Text;
DataModule2->ADOTable1->FieldByName("Год выхода")->AsString = Form5->Edit4->Text;
DataModule2->ADOTable1->FieldByName("Режиссер")->AsString = Form5->Edit5->Text;
DataModule2->ADOTable1->FieldByName("Время")->AsString = Form5->Edit6->Text;
DataModule2->ADOTable1->FieldByName("В ролях")->AsString = Form5->Memo1->Text;
DataModule2->ADOTable1->FieldByName("Сюжет")->AsString = Form5->Memo2->Text;
DataModule2->ADOTable1->FieldByName("Трейлер")->AsString = Form5->Edit7->Text;
 
TMemoryStream* strm = new TMemoryStream();
Image1->Picture->Graphic->SaveToStream(strm);
((TGraphicField*)DataModule2->ADOTable1->FieldByName("Постер фильма"))->LoadFromStream(strm);
 delete strm;
 strm = NULL;
 
DataModule2->ADOTable1->Post();
 
 Form5->Hide();   //Закрыть форму Добавление записи в БД Фильмы
 
//Очистить текст в полях
Edit1->Clear();
Edit2->Clear();
Edit3->Clear();
Edit4->Clear();
Edit5->Clear();
Edit6->Clear();
Memo1->Clear();
Memo2->Clear();
Edit6->Clear();
Edit7->Clear();
Image1->Picture->Graphic=NULL;
 
}
Добавлено через 3 минуты
Вот что прописано на кнопки при переходе на Form1

Кнопка Фмльмы
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule2->DataSource1;
Button7->Caption = "О фильме";
DBGrid1->Columns->Items[1]->Title->Caption = "Название фильма";
DBGrid1->Columns->Items[9]->Title->Caption = "Постер фильма";
 
 
}
Кнопка сериалы
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button2Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule2->DataSource2;
Button7->Caption = "О сериале";
DBGrid1->Columns->Items[1]->Title->Caption = "Название сериала";
DBGrid1->Columns->Items[9]->Title->Caption = "Постер сериала";
}
Добавлено через 8 часов 52 минуты
Вообщем, подумал вообще убрать сериалы. Будут только фильмы. путаница пошла. Не знаю как исправить проект. Не знаю как сделать все это одними компонентами. с 4-мя формами... Вообщем сложно мне это сделать...

Добавлено через 13 минут
Сериалы в Кинотеатрах без мысленно.
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
04.05.2013, 21:10
Evgeny92, мне кажется ты не прав
У меня тётка в прокате работает, там сериалов больше, чем фильмов)
1)Составь алгоритм
2)Нарисуй форму - удобную в работе (быстрое редактирование и добавление и удобный просмотр )
3)Должно примерно выйти 4 формы, 1 главная форма, (добавление/изменение) 2 форма, О программе 3 форма, 4 просмотр о фильме ( + печать инфы о фильме)
4)Подключи БД к форме
А там уже видно будет...
По сути работы на день/два тут)
1
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
05.05.2013, 00:25  [ТС]
И вот все же навел порядок. Сериалы убрал. Т.к. я не знаю что делать с 2-мя таблицами.
Сделал только Бд фильмы.
Вот помогите разобраться с переключателем картинки после Отбора по категориям или поиска.
Вложения
Тип файла: rar Kinoteatr.rar (7.59 Мб, 7 просмотров)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
05.05.2013, 20:14
Evgeny92,
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Вот помогите разобраться с переключателем картинки после Отбора по категориям или поиска.
5-ая форма:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "Unit1.h"
...
    void __fastcall TForm5::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 );
    Form5->CppWebBrowser1->Navigate(WideString(wsg) ) ;  //На форме О фильме Отображает веб страницу с трейлером.
 
    if ( !( TBlobField * )DataModule2->ADOTable1->FieldByName( "Постер фильма" )
        ->IsNull && Form1->DBGrid1->DataSource->DataSet ==
        DataModule2->ADOTable1 )
    {
        if ( !Form5->Image1->Visible )
        {
            Form5->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 )
        {
            Form5->Image1->Picture->Graphic = ptJpg;
        }
        Form5->Image1->Picture->Graphic->LoadFromStream( strm );
        delete strm;
        delete ptJpg;
    }
    else
        if ( !( TBlobField * )DataModule2->ADOQuery1->FieldByName
            ( "Постер фильма" )
            ->IsNull && Form1->DBGrid1->DataSource->DataSet ==
            DataModule2->ADOQuery1 )
        {
            if ( !Form5->Image1->Visible )
            {
                Form5->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 )
            {
                Form5->Image1->Picture->Graphic = ptJpg;
            }
            Form5->Image1->Picture->Graphic->LoadFromStream( strm );
            delete strm;
            delete ptJpg;
        }
        else
        {
            Form5->Image1->Visible = false;
        }
}

Цитата Сообщение от Evgeny92 Посмотреть сообщение
Т.к. я не знаю что делать с 2-мя таблицами.
Меняйте DataSet у DBGrid.
2
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
05.05.2013, 23:40  [ТС]
Спасибо большое.

Добавлено через 33 минуты
Кстати еще нужно мне с браузером решить вопрос также как и с картинками.

С этим кодом
C++
1
2
3
4
5
AnsiString wsg = DataModule2->ADOTable1->FieldByName( "Трейлер" )
        ->AsString; // Из поле Трейлер будет открываться ссылка на веб страницу
    wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
    Form5->CppWebBrowser1->Navigate(WideString(wsg) ) ;  //На форме О фильме Отображает веб страницу с трейлером.
Как это мне сделать? Тоже через условие.

Добавлено через 4 минуты
Хотя стоп. Сейчас сам что то задумал.

Добавлено через 3 минуты
Во так попытался сделать. аналогично как и с тем кодом на изображение.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (AnsiString wsg = DataModule2->ADOTable1->FieldByName( "Òðåéëåð" )->AsString && Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1) // Èç ïîëå Òðåéëåð áóäåò îòêðûâàòüñÿ ññûëêà íà âåá ñòðàíèöó
     {
    wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
    }
    else
if (AnsiString wsg = DataModule2->ADOQuery1->FieldByName( "Òðåéëåð" )
        ->AsString && Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOQuery1) // Èç ïîëå Òðåéëåð áóäåò îòêðûâàòüñÿ ññûëêà íà âåá ñòðàíèöó
        {
        wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
      }
      else
      {
    Form5->CppWebBrowser1->Navigate(WideString(wsg) ) ;  //Íà ôîðìå Î ôèëüìå Îòîáðàæàåò âåá ñòðàíèöó ñ òðåéëåðîì.
          }
Добавлено через 1 минуту
Но при запуске ошибку выдает на строчку:

C++
1
if (AnsiString wsg = DataModule2->ADOTable1->FieldByName( "Трейлер" )->AsString && Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1)
Курсор стоит на &&

Добавлено через 1 минуту
Исправьте код мой пожалуйста.
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
06.05.2013, 01:05
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Но при запуске ошибку выдает на строчку:
а какой смыл в коде этом, логику не пойму
ну и примерно так
C++
1
      if ((wsg == DataModule2->ADOTable1->FieldByName( "Òðåéëåð" )->AsString) && (Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1))
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
06.05.2013, 01:19
Evgeny92,
Цитата Сообщение от Evgeny92 Посмотреть сообщение
Исправьте код мой пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Browser( TDataSet * DataSet )
{
    AnsiString wsg = DataSet->FieldByName( "Трейлер" )->AsString;
    // Из поле Трейлер будет открываться ссылка на веб страницу
    wsg = wsg.SubString( wsg.Pos( "#" ) + 1, wsg.Length( ) );
    wsg = wsg.Delete( wsg.Pos( "#" ), 1 );
    Form5->CppWebBrowser1->Navigate( WideString( wsg ) );
    // На форме О фильме Отображает веб страницу с трейлером.
}
...
void __fastcall TForm5::TabSheet2Show( TObject * Sender )
{
    if ( Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOTable1 )
    {
        Browser( DataModule2->ADOTable1 );
    }
    if ( Form1->DBGrid1->DataSource->DataSet == DataModule2->ADOQuery1 )
    {
        Browser( DataModule2->ADOQuery1 );
    }
}
Кстати, если оставаться на вкладке "Трейлер" и покликать на DBNavigator, то трейлеры не меняются - так задумано?

И второе: очень рекомендую у всех КомбоБоксов свойство Style выставить в csDropDownList, иначе первый попавшийся "дурак" порушит Вашу программку
1
 Аватар для Evgeny92
277 / 5 / 4
Регистрация: 09.11.2011
Сообщений: 294
06.05.2013, 02:17  [ТС]
меняется сама веб-страница с трейлером. Должен переключаться.

Спасибо огромное. Все сделал программа работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2013, 02:17

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru