Перейти к содержанию
Fire Monkey от А до Я

Олег Киреев

Пользователи
  • Постов

    131
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Весь контент Олег Киреев

  1. Здравствуйте уважаемый Azaz. 1. Я извиняюсь но уважаемый Администратор просит в правилах: " 2.2. Каким должен быть текст вопроса? Текст вопроса нужно начать с указания используемой версии RAD Studio, Версии ОС и модель устройства (если речь идет о мобильной разработке)" 2. У компонента TListBox есть своё свойство-ШоуСкроллБарс. Достаточно поставить птичку. С Уважением. Олег.
  2. СпасиБО за ответ. Сообщите пожалуйста когда будет готов. С Уважением. Олег.
  3. Елена. Существует ли FastReport для разработки приложений для OS Android? С Уважением. Олег.
  4. Здравствуйте Уважаемые. Подскажите пожалуйста как устранить ошибку (скрин в приложении) на строке TNetworkState.Create в приложении для OS Android в Delphi 10.3. на телефоне 10-й Андроид. Процедура такая: //Поделиться сохранённым файлом procedure TForm_DB_BOKA_Glavn.ButtonПоделитьсяClick(Sender: TObject); var NS: TNetworkState; begin NS := TNetworkState.Create; if not NS.IsConnected then begin ShowMessage('Нет подключения к интернету.'); Abort; end else begin if NS.IsWifiConnected then ShowMessage('Подключено через WiFi'); if NS.IsMobileConnected then ShowMessage('Подключено через WWAN'); if FileExists(TPath.GetDownloadsPath+'/Модель_'+ComboBoxВсеМодели.Selected.Text+'.txt') then begin ShareFile(TPath.GetDownloadsPath+'/Model_'+ComboBoxВсеМодели.Selected.Text+'.txt', 'Это файл карточки модели '++ComboBoxВсеМодели.Selected.Text); Application.ProcessMessages; end else ShowMessage('Файл '+TPath.GetDownloadsPath+'/Model_'+ComboBoxВсеМодели.Selected.Text+'.txt'+' не найден.'); end; end; Процедура ShareFile такая: procedure ShareFile(aFileName, aComment : String); {$IFDEF ANDROID} var Intent : JIntent; uri : Jnet_Uri; AttachmentFile: JFile; S : String; {$ENDIF ANDROID} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_SEND); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); S:=TPath.GetFileName(aFileName); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(aComment)); Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(aComment)); AttachmentFile := TJFile.JavaClass.init(StringToJString(aFileName)); Uri := TJnet_Uri.JavaClass.fromFile(AttachmentFile); Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID)); Intent.setType(StringToJString('text/plain')); // Intent.setDataAndType(StrToJURI('file:' + TPath.Combine(TPath.GetSharedDownloadsPath, 'picture.png')), StringToJString ('image/png')); SharedActivity.startActivity(Intent); {$ENDIF ANDROID} end; При этом разрешение к памяти у телефона есть на это приложение. Интересно что в другом моём приложении где те же процедуры всё работает. Но перед тем как это 2-е приложение я запустил после обновления 9-го Андроида на 10-й система спросила сама разрешения а в этом нет. Я вручную разрешал. Может тут дело не в разрешениях???
  5. Вопрос решился открытием разрешения "Память" приложению на телефоне.
  6. Здравствуйте Уважаемые. В продолжение темы. У меня тоже что и у пользователя "Cody71727172" выше. Может кто знает как решить эту проблему??? С Уважением. Олег.
  7. Здравствуйте уважаемые. Думаю что мой вопрос в продолжении этой темы. Пожалуйста, кто знает, подскажите как решить следующую проблему. Есть приложение для OS Android сделанное на Сиэтле 10.0 (IDE установлена на ПК с OS Win 7) протестированное успешно на телефоне Самсунг Галакси J6 (OS Android 9). Пробую скомпелировать и запустить это же приложение на IDE Rio 10.3.2. Компеляция проходит успешно а само приложение на телефоне запускается до заставки и виснет. При установке на телефон его OS сообщает что приложение разработано для другой версии OS Android и будет работать не корректно. Телефон остался тот же с той же OS Android 9. Файлы AndroidManifest старый и новый прилагаю. Также прилагаю фото юнита и SDK менеджера. Всё в архивном файле. С Уважением. Олег. Новая папка.rar
  8. Приложение для получения информации расчётным путём об углах: - вертикальной плоскости; - в горизонтальной плоскости; - объёмный; - эквивалентный в шарнирах карданных валов на основе сделанных замеров на собранном автобусе, троллейбусе, грузовике. Может пригодиться работникам сервисных служб, лицам эксплуатирующим грузовую или пассажирскую автомобильные техники, лицам не конструкторских служб. Особенно в случае нахождения в месте недоступном к интернету и компьютеру. Работает на устройствах под OS Android. Существует и более расширенная версия для OS Windows. Пожалуйста, с предложениями и пожеланиями обращайтесь к разработчику: Кирееву Олегу по тел. +375 29 676 13 84 или пишите на kireevoleg1966@gmail.com. Буду рад Вашему любому отзыву. С Уважением. UgolKardZamer_v5.rar
  9. Сергей. Я у себя (Delphi 10 Seattle) попробовал загрузить 3D модель формата dae. В приложении Вы можете посмотреть что модель не прозрачная. С Уважением. Олег. 3D в OS Android.rar
  10. Здравствуйте Сергей. Покажите как Вы загружаете. Я у себя попробую. В книжке я нашёл вот такое замечание в приложении. С Уважением. Олег.
  11. Да Вы правы. Я быстро прочёл Ваш вопрос и не обратил внимание на слово Андроид. Прошу извинить. С Уважением. Олег.
  12. Здравствуйте. Предлагаю вместо родной 3D библиотеки установить бесплатную GLScene. Ссылок скачиваний море. Я пользуюсь давно. Конечно не идеал но лучше родной. С Уважением. Олег.
  13. Я делаю так: 1.Создаю файл базы (БД) например для Виндовс Acces (пример моего в приложении). 2.Создаю файл TreeView.dat. 3.Подключаюсь к БД. 4.Создаю нове ветки так: //Ввести ветку procedure TForm_Glavn.SpeedButton_vvod_vetkiClick(Sender: TObject); begin //проверка наличия текста в Едите if Edit_Mame_Vetok.Text = '' then begin MessageDl.MessageDlg('Вы не ввели название ветки!', mtInformation,[mbYes],0); Abort; end; TreeView1.Items. Add (TreeView1. Selected, Edit_Mame_Vetok.Text) ; //база Query_Glav.Insert; Query_Glav.FieldByName('Dat').AsString:=DateToStr(Now); Query_Glav.FieldByName('Imya_vetok').AsString:=Edit_Mame_Vetok.Text; Query_Glav.FieldByName('Opisanie').AsString:=Memo_opisanie.Text; Query_Glav.Post; //сохраняем дерево F := TFileStream.Create(Base+'\Data\TreeView.dat', fmCreate or fmShareCompat); try F.WriteComponent(TreeView1); finally F.Free; end; Edit_Mame_Vetok.Text:=''; end; 5.Создаю подветки так: //Ввести подветку procedure TForm_Glavn.SpeedButton_vvod_podvetkiClick(Sender: TObject); begin if TreeView1.Selected = nil then begin MessageDl.MessageDlg('Вы не выбрали в какой ветке делаем подветку!', mtInformation,[mbYes],0); Exit; //если не выбрана ветка выходим end; //проверка наличия текста в Едите if Edit_Mame_Vetok.Text = '' then begin MessageDl.MessageDlg('Вы не ввели название ветки!', mtInformation,[mbYes],0); Abort; end; TreeView1.Items.AddChild (TreeView1. Selected, Edit_Mame_Vetok.Text); //база Query_Glav.Insert; Query_Glav.FieldByName('Dat').AsString:=DateToStr(Now); Query_Glav.FieldByName('Imya_vetok').AsString:=Edit_Mame_Vetok.Text; Query_Glav.FieldByName('Opisanie').AsString:=Memo_opisanie.Text; Query_Glav.Post; //сохраняем дерево F := TFileStream.Create(Base+'\Data\TreeView.dat', fmCreate or fmShareCompat); try F.WriteComponent(TreeView1); finally F.Free; end; Edit_Mame_Vetok.Text:=''; end; 6.Прикрепляю файл так: // Прикрепить файл procedure TForm_Glavn.SpeedButton_FileClick(Sender: TObject); var IconStream:TMemoryStream; begin if TreeView1.Selected = nil then begin MessageDl.MessageDlg('Вы не выбрали в какой ветке делаем подветку!', mtInformation,[mbYes],0); Exit; //если не выбрана ветка выходим end; OpenDialog1.InitialDir:=Base; if Opendialog1.Execute then begin //заносим файл в потоке SpeedButton_File.Caption:='Подождите......'; Application.ProcessMessages; IconStream:=TMemoryStream.Create; IconStream.LoadFromFile(OpenDialog1.FileName); //становимся в невидимой таблице на указанной модели Query_Glav.Locate('Imya_vetok',Edit_Mame_Vetok.Text,[loPartialKey, loCaseInsensitive]); Query_Glav.Edit; if (ExtractFileExt(Opendialog1.FileName) = '.pdf')then Query_Glav.FieldByName('RashirenieFile').AsInteger:=3; if (ExtractFileExt(Opendialog1.FileName) = '.docx')then Query_Glav.FieldByName('RashirenieFile').AsInteger:=2; if (ExtractFileExt(Opendialog1.FileName) = '.jpg')then Query_Glav.FieldByName('RashirenieFile').AsInteger:=0; if (ExtractFileExt(Opendialog1.FileName) = '.rar')then Query_Glav.FieldByName('RashirenieFile').AsInteger:=1; (Query_Glav.FieldByName('File') as TBlobField).LoadFromStream(IconStream); IconStream.Free; Application.ProcessMessages; MessageDl.MessageDlg('Файл добавлен в базу!', mtInformation,[mbYes],0); SpeedButton_File.Caption:=' Прикрепить файл'; end else MessageDl.MessageDlg('Ошибка ввода!', mtInformation,[mbYes],0); end; 7. Удаляю ветку или подветку так: //Удалить ветку/ подветку procedure TForm_Glavn.SpeedButton_DeleteClick(Sender: TObject); begin if TreeView1.Items.Count = 0 then //проверка наличия веток вообще begin MessageDl.MessageDlg('Так нет же веток!', mtInformation,[mbYes],0); Abort; end; if TreeView1.Selected.HasChildren=True then //проверка наличия подветки begin MessageDl.MessageDlg('Сначала удалите подветку!', mtInformation,[mbYes],0); Image1.Refresh; Abort; end; if TreeView1.Selected.HasChildren=False then //проверка наличия подветки begin SpeedButton_Delete.Caption:='Подождите.....'; Application.ProcessMessages; //становимся в невидимой таблице на указанной ветке Query_Glav.Locate('Imya_vetok',TreeView1.Selected.Text,[loPartialKey, loCaseInsensitive]); if Query_Glav.FieldByName('Imya_vetok').AsString <> '' then Query_Glav.Delete;//удаляем в базе Application.ProcessMessages; TreeView1.Items.Delete(TreeView1.Selected); //удаляем в дереве Application.ProcessMessages; Image1.Refresh; Application.ProcessMessages; SpeedButton_Delete.Caption:=' Удалить ветку/ подветку'; end; //сохраняем дерево F := TFileStream.Create(Base+'\Data\TreeView.dat', fmCreate or fmShareCompat); try F.WriteComponent(TreeView1); finally F.Free; end; Edit_Mame_Vetok.Text:=''; end; 8. Переименовываю ветки так: //Переименовать ветку/ подветку procedure TForm_Glavn.SpeedButton3Click(Sender: TObject); begin //проверка наличия текста в Едите if Edit_Mame_Vetok.Text = '' then begin MessageDl.MessageDlg('Вы не ввели название ветки!', mtInformation,[mbYes],0); Abort; end; //становимся в невидимой таблице на указанной модели Query_Glav.Locate('Imya_vetok',TreeView1.Selected.Text,[loPartialKey, loCaseInsensitive]); TreeView1.Selected.Text:=Edit_Mame_Vetok.Text; //база Query_Glav.Edit; Query_Glav.FieldByName('Dat').AsString:=DateToStr(Now); Query_Glav.FieldByName('Imya_vetok').AsString:=Edit_Mame_Vetok.Text; Query_Glav.FieldByName('Opisanie').AsString:=Memo_opisanie.Text; Query_Glav.Post; //сохраняем дерево F := TFileStream.Create(Base+'\Data\TreeView.dat', fmCreate or fmShareCompat); try F.WriteComponent(TreeView1); finally F.Free; end; Edit_Mame_Vetok.Text:=''; end; 9.Открываю прикреплённый файл так: // Открыть прикреплённый файл отдельно procedure TForm_Glavn.SpeedButton4Click(Sender: TObject); var ImageData:TMemoryStream; begin if TreeView1.Selected = nil then begin MessageDl.MessageDlg('Вы не выбрали в какой ветке делаем подветку!', mtInformation,[mbYes],0); Exit; //если не выбрана ветка выходим end; //становимся в невидимой таблице на указанной модели Query_Glav.Locate('Imya_vetok',Edit_Mame_Vetok.Text,[loPartialKey, loCaseInsensitive]); ImageData:=TMemoryStream.Create; (Query_Glav.FieldByName('File') as TBlobField).SaveToStream(ImageData); ImageData.Position:=0; if ImageData.Size<>0 then begin if Query_Glav.FieldByName('RashirenieFile').AsInteger=3 then Path:=Base+'\Temp\Dokument.pdf'; if Query_Glav.FieldByName('RashirenieFile').AsInteger=2 then Path:=Base+'\Temp\Dokument.docx'; if Query_Glav.FieldByName('RashirenieFile').AsInteger=0 then Path:=Base+'\Temp\Dokument.jpg'; if Query_Glav.FieldByName('RashirenieFile').AsInteger=1 then Path:=Base+'\Temp\Dokument.rar'; ImageData.SaveToFile(Path); ImageData.Free; ImageData:=nil; if FileExists(Path) then begin ShellExecute (0, 'open', pChar(Path), nil, nil, SW_SHOW); end else MessageDl.MessageDlg('Файл'+Path+' в папке Data не найден.', mtInformation,[mbYes],0); end else MessageDl.MessageDlg('В этой ветке документа нет.', mtInformation,[mbYes],0); end;
  14. Подскажите пожалуйста почему когда я пытаюсь заполнить ComboBox из базы SQLite в мобильном приложении для Android вот так: //заполняем ComboBox двигателя FDQuery_ComboBox.Active:=False; FDQuery_ComboBox.SQL.Clear; FDQuery_ComboBox.SQL.Add('SELECT Dvig_ob FROM TabSR '); FDQuery_ComboBox.Active:=True; //ShowMessage('Количество строк: '+IntToStr(FDQuery_ComboBox.RecordCount)); for i:=1 to FDQuery_ComboBox.RecordCount do Begin FDQuery_ComboBox.RecNo := i; ComboBox_Engin.Items.Add(FDQuery_ComboBox.Fields[0].AsString); End; в FDQuery_ComboBox.RecordCount всего ровно 50 позиций хотя в таблице TabSR 288 строк???? СпасиБО. С Уважением.
  15. Сам спросил и сам ответил: Сделал проще вот так: //Поделится БД procedure TForm_glavn.ButtonПоделитсяБДClick(Sender: TObject); begin if FileExists(TPath.GetDownloadsPath+'/DB_BOKA.db3') then begin ShareFile(TPath.GetDownloadsPath+'/DB_BOKA.db3', 'Это файл DB_BOKA.db3 из приложения БОКА.'); Application.ProcessMessages; end else ShowMessage('Файл '+TPath.GetDownloadsPath+'/DB_BOKA.db3'+' не найден.'); Form_glavn.Realign; end; Теперь телефон не зависает.
  16. Попробовал другой файл. Та же проблема зависает телефон. Может что ещё подскажете?
  17. СпасиБо с этим разобрался. А ещё подскажите пожалуйста почему зависает телефон когда я отправляю файл так: //Поделится БД procedure TForm_glavn.ButtonПоделитсяБДClick(Sender: TObject); begin if FileExists(TPath.GetDownloadsPath+'/DB_BOKA.db3') then begin Try ShareFile(TPath.GetDownloadsPath+'/DB_BOKA.db3', 'Это файл DB_BOKA.db3 из приложения БОКА.'); Sleep(100); ShowMessage('Отправлено.'); Except ShowMessage('Не отправлено.'); End; end else ShowMessage('Файл '+TPath.GetDownloadsPath+'/DB_BOKA.db3'+' не найден.'); end; Хотя файл и сообщение отправляются нормально на указанный мной в приложении адрес. Хотя я поставил скобки исключения. С Уважением. Олег Киреев.
  18. А ещё подскажите пожалуйста почему зависает телефон когда я отправляю файл так: //Поделится БД procedure TForm_glavn.ButtonПоделитсяБДClick(Sender: TObject); begin if FileExists(TPath.GetDownloadsPath+'/DB_BOKA.db3') then begin Try ShareFile(TPath.GetDownloadsPath+'/DB_BOKA.db3', 'Это файл DB_BOKA.db3 из приложения БОКА.'); Sleep(100); ShowMessage('Отправлено.'); Except ShowMessage('Не отправлено.'); End; end else ShowMessage('Файл '+TPath.GetDownloadsPath+'/DB_BOKA.db3'+' не найден.'); end; Хотя файл и сообщение отправляются нормально на указанный мной в приложении адрес. Хотя я поставил скобки исключения. С Уважением. Олег Киреев.
  19. СпасиБО. Буду знать. Но я до этого попробовал задеплоить сюда .\assets\Download\ и приложение нашло его так: //поиск файла procedure TForm_glavn.Button10Click(Sender: TObject); var FileToFind: string; begin FileToFind := FileSearch('/storage/emulated/0/Android/data/com.embarcadero.BOKA/files/Download/DB_BOKA.db3', GetCurrentDir); if FileToFind = '' then ShowMessage('Не смог найти: ' + 'DB_BOKA.db3' + '.') else ShowMessage('Нашёл в каталоге ' + FileToFind + '.'); end;
  20. Дело в том что этот файл задеплоин так: . Я пытаюсь узнать действительно ли он там вот так: //поиск файла procedure TForm_glavn.Button10Click(Sender: TObject); var FileToFind: string; begin FileToFind := FileSearch('.\assets\external\DB_BOKA.db3', GetCurrentDir); if FileToFind = '' then ShowMessage('Не смог найти: ' + 'DB_BOKA.db3' + '.') else ShowMessage('Нашёл в каталоге ' + FileToFind + '.'); end; Сообщение показывает "Не смог найти". Подскажите пожалуйста что здесь не так? С Уважением. Олег Киреев.
  21. Здравствуйте Евгений. Пожалуйста ответьте мне на такой вопрос по этой теме. Я пытаюсь отправить файл базы вот так: //Поделится БД procedure TForm_glavn.ButtonПоделитсяБДClick(Sender: TObject); begin if FileExists(TPath.GetSharedDocumentsPath+'/DB_BOKA.db3') then begin Try ShareFile(TPath.GetSharedDocumentsPath+'/DB_BOKA.db3', 'Это файл DB_BOKA.db3 из приложения БОКА.'); ShowMessage('Отправлено.'); Except ShowMessage('Не отправлено.'); End; end else ShowMessage('Файл '+TPath.GetSharedDocumentsPath+'/DB_BOKA.db3'+' не найден.'); end; себе на почту. Появляется сообщение что файл не найден. Наверное дело в пути? Подскажите пожалуйста как узнать где лежит файл базы на телефоне? Поделитесь пожалуйста своим опытом. С Уважением. Олег.
  22. Здравствуйте Вадим. Пожалуйста ответьте мне на такой вопрос по этой теме. Я пытаюсь отправить файл базы вот так: //Поделится БД procedure TForm_glavn.ButtonПоделитсяБДClick(Sender: TObject); begin if FileExists(TPath.GetSharedDocumentsPath+'/DB_BOKA.db3') then begin Try ShareFile(TPath.GetSharedDocumentsPath+'/DB_BOKA.db3', 'Это файл DB_BOKA.db3 из приложения БОКА.'); ShowMessage('Отправлено.'); Except ShowMessage('Не отправлено.'); End; end else ShowMessage('Файл '+TPath.GetSharedDocumentsPath+'/DB_BOKA.db3'+' не найден.'); end; себе на почту. Появляется сообщение что файл не найден. Наверное дело в пути? Подскажите пожалуйста как узнать где лежит файл базы на телефоне? Поделитесь пожалуйста своим опытом. С Уважением. Олег.
  23. СпасиБО SLAVZ. Попробую. Может Вам пригодится я вот так вышел и положения: Сначала: //выбираем фото из галереи устройства procedure TForm_haracteristik.TakePhotoFromLibraryAction1DidFinishTaking( Image: TBitmap); begin Image_ФотоХаракДвиг.Bitmap.Assign(Image); end; Потом вношу в Базу: //ввести харак-ку procedure TForm_haracteristik.Button_ВвестиClick(Sender: TObject); begin if Edit_НазваниеХарактеристики.Text='' then begin ShowMessage('Вы не ввели название характеристики.'); Abort; end; //проверяем наличие дубля названия характеристики: FDQuery_Engin.Open; FDQuery_Engin.SQL.Clear; FDQuery_Engin.SQL.Add('select * from Tab_Harak_Engin where Name_Harak = ' + #39+ Edit_НазваниеХарактеристики.Text +#39); FDQuery_Engin.Active:=True; if FDQuery_Engin.RecordCount > 0 then begin ShowMessage('Такое название уже есть !'); Abort; end else begin Try FDQuery_Engin.Active:=False; FDQuery_Engin.SQL.Clear; FDQuery_Engin.SQL.Add('SELECT * FROM Tab_Harak_Engin ORDER BY Name_Harak' ); FDQuery_Engin.Active:=True; //вставляем строку новой модели: FDQuery_Engin.Insert; FDQuery_Engin.FieldByName('Name_Harak').AsString:=Edit_НазваниеХарактеристики.Text; //заносим в поток файл картинки IconStream:=TMemoryStream.Create; Image_ФотоХаракДвиг.Bitmap.SaveToStream(IconStream); IconStream.Position := 0; (FDQuery_Engin.FieldByName('Harak_Engin') as TBlobField).LoadFromStream(IconStream); IconStream.Free; FDQuery_Engin.Post; ShowMessage('Введено.'); Except ShowMessage('Ошибка ввода в базу.'); End; end; //перезагружаем Boxы Box_НазвХарДвиг.Clear; Box_НазвХарДвигУдаление.Clear; FDQuery_ComboBox_Engin.Active:=False; FDQuery_ComboBox_Engin.SQL.Clear; FDQuery_ComboBox_Engin.SQL.Add('SELECT Name_Harak FROM Tab_Harak_Engin ORDER BY Name_Harak'); FDQuery_ComboBox_Engin.Active:=True; for i:=1 to FDQuery_ComboBox_Engin.RecordCount do begin FDQuery_ComboBox_Engin.RecNo:=i; Box_НазвХарДвиг.Items.Add(FDQuery_ComboBox_Engin.FieldByName('Name_Harak').AsString); Box_НазвХарДвигУдаление.Items.Add(FDQuery_ComboBox_Engin.FieldByName('Name_Harak').AsString); end; end; Так удаляю из базы если надо: //удалить procedure TForm_haracteristik.Button_УдалитьClick(Sender: TObject); begin if Box_НазвХарДвигУдаление.ItemIndex=-1 then begin ShowMessage('Вы не выбрали имя характеристики.'); Abort; end; TX:=''; TX:=Box_НазвХарДвигУдаление.Selected.Text; //становимся на эту позицию FDQuery_Engin.Active:=False; FDQuery_Engin.SQL.Clear; FDQuery_Engin.SQL.Add('SELECT * FROM Tab_Harak_Engin where Name_Harak= '+#39+TX+ #39); FDQuery_Engin.Active:=True; Try FDQuery_Engin.Delete; ShowMessage('Удалено.'); Except ShowMessage('Не удалось удалить.'); End; //перезагружаем Boxы Box_НазвХарДвиг.Clear; Box_НазвХарДвигУдаление.Clear; FDQuery_ComboBox_Engin.Active:=False; FDQuery_ComboBox_Engin.SQL.Clear; FDQuery_ComboBox_Engin.SQL.Add('SELECT Name_Harak FROM Tab_Harak_Engin ORDER BY Name_Harak'); FDQuery_ComboBox_Engin.Active:=True; for i:=1 to FDQuery_ComboBox_Engin.RecordCount do begin FDQuery_ComboBox_Engin.RecNo:=i; Box_НазвХарДвиг.Items.Add(FDQuery_ComboBox_Engin.FieldByName('Name_Harak').AsString); Box_НазвХарДвигУдаление.Items.Add(FDQuery_ComboBox_Engin.FieldByName('Name_Harak').AsString); end; end; Так просматриваю: //просмотр картинки procedure TForm_haracteristik.ComboBox_НазвХарДвигChange(Sender: TObject); begin //становимся на эту позицию //FDQuery_Engin.Locate('Name_Harak',TX,[loPartialKey, loCaseInsensitive]); FDQuery_Engin.Active:=False; FDQuery_Engin.SQL.Clear; FDQuery_Engin.SQL.Add('SELECT * FROM Tab_Harak_Engin where Name_Harak= '+#39+Box_НазвХарДвиг.Selected.Text+ #39); FDQuery_Engin.Active:=True; Try //заносим в поток файл картинки IconStream:=TMemoryStream.Create; (FDQuery_Engin.FieldByName('Harak_Engin') as TBlobField).SaveToStream(IconStream); If IconStream.Size<>0 then begin IconStream.Position:=0; Image_Просмотр.Bitmap.LoadFromStream(IconStream); IconStream.Free; end else begin ShowMessage('Нет фото.'); Exit; end; Except ShowMessage('Не удалось загрузить фото.'); End; end;
  24. Здравствуйте Ярослав. СпасиБО за ссылку. Я её изучил. Очень полезно. Но у меня немного другая задача. Мне надо занести в БД сфотографированную картинку. Как заносить в БД потоком я знаю, но как получить в переменную имя этого файла фото???? Под Виндовс есть компонент OpenDialog и через него всё просто. Под Андроид такого компонента нет. Пожалуйста Ярослав посоветуйте как это реализовать? С Уважение Олег.
×
×
  • Создать...