Перейти к содержанию

Вопросы

Здравствуйте, у меня возник вопрос Как базу данных подключить к TGrid? Я использую Delphi XE3 и База данных Accsess: ADOConnection + ADOQuery + DataSource. И вот как отобразить в TGrid Таблицу бд ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Так как этот форум FireMonkey, посоветую вам сразу юзать базу SQLite, с ней можно будет и на мобильных устройствах работать и на desktop ну и приложение писать на FMX, а если нужно чисто Delphi (VCL), то лучше загляните на другой форум, быстрее найдете ответ, и обратите внимание на сторонний компонент DBgridEh

Отредактировал Dev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, Dev сказал:

Так как этот форум FireMonkey, посоветую вам сразу юзать базу SQLite, с ней можно будет и на мобильных устройствах работать и на desktop ну и приложение писать на FMX, а если нужно чисто Delphi (VCL), то лучше загляните на другой форум, быстрее найдете ответ, и обратите внимание на сторонний компонент DBgridEh

Дело в том что я начинал писать на VCL. Но потом когда понял что нормальной графики там не сделать переконвертировал (в ручную) на FireMonkey (Delphi XE3) Там подключено 4 базы данных Access. И переходить на SQLite Не хочется. Переписывать много надо будет. Мб можно как-то подключить к TGrid бд ADO ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Не понятно, что мешает подключить согласно приведенного примера?

Отредактировал GASCHE

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
54 минуты назад, GASCHE сказал:

Не понятно, что мешает подключить согласно приведенного примера?

То что в FireMonkey нет компонетна DBGride есть компонет TGride В котором нет DataSource

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
5 часов назад, SIARHEI RAHOUSKI сказал:

Но потом когда понял что нормальной графики там не сделать

Вы имеете ввиду дизайн? Можно очень красиво все оформить и на VCL к примеру с компонентами  AlphaControls, они устанавливаются легко и распространяются для жителей СНГ бесплатно, там стили можно так же как и в FMX делать самому и есть в комплекте около ста готовых, на любой вкус. Здесь все зависит от вашей идеи. В FMX свои трудности... и свой набор для работы с базами данных к примеру - FDConnection FDQuery или FDTable и это обычно прикручивают к компоненту ListView, а не к TGrid, через Bind (но лучше кодом) и как оптимальный вариант для этого набора - база SQLite, если не ошибаюсь, эти компоненты не умеют работать с базой Accsess

Отредактировал Dev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1

Здесь или тут смотрели? 

Отредактировал GASCHE

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, GASCHE сказал:

Здесь или тут смотрели? 

Попробовал второй способ - помогло. Таблицу отображает, но проект  запускать не хочет пишет ошибку:
Checking project dependencies...
Compiling Project1.dproj (Debug, Win32)
dcc command line for "Project1.dpr"

[dcc32 Fatal Error] F2046 Out of memory
Failed
Elapsed time: 00:00:01.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, GASCHE сказал:

Здесь или тут смотрели? 

Странно ошибка сама пропала. Большое спасибо!!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
8 часов назад, GASCHE сказал:

Здесь или тут смотрели? 

Ошибка опять вернулась. Таблица отображается но компелировать не хочет пишет: [dcc32 Fatal Error] F2046 Out of memory

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Сверху в поиске наберите TGrid там посмотрите может что поможет, и простенький проект можно выложить, тогда может кто и быстрее подскажет. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 часов назад, GASCHE сказал:

Сверху в поиске наберите TGrid там посмотрите может что поможет, и простенький проект можно выложить, тогда может кто и быстрее подскажет. 

[dcc32 Fatal Error] F2046 Out of memory <---- это вроде ошибка не хватка памяти. Не знаешь как можно её увеличить ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 часа назад, SIARHEI RAHOUSKI сказал:

Не знаешь как можно её увеличить ?

Нет не знаю, но думаю вы такой не один.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Используйте сразу Berlin, там есть пример как использовать DB Grid c набором данных.

XE3 + Fire Monkey -> даже не мучайтесь, во-первых мало что получится, во-вторых всё равно надо буде переделывать при переходе на следующие версии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
20 часов назад, RoschinSpb сказал:

Используйте сразу Berlin, там есть пример как использовать DB Grid c набором данных.

XE3 + Fire Monkey -> даже не мучайтесь, во-первых мало что получится, во-вторых всё равно надо буде переделывать при переходе на следующие версии.

Я уже понял :) Я просто курсовую дописываю и там чуть-чуть осталось. А так, я только на новых версиях теперь буду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Советую перейти на ListView.

Ну или приобрести стороннюю разработку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От Евгений Корепов
      Класс для работы с FastCGI серверами, такими как php-fpm.
      Для тех кто не в теме : веб-сервер, к примеру nginx, получает запросы и отправляет их на исполнение FastCGI серверу, к примеру php-fpm, php-fpm получает имя скрипта, параметры, выполняет все и возвращает результат в nginx, который в свою очередь возвращает этот результат запросившему клиенту.
      С помощью класса вы можете так же, выполнять php скрипты на локальном или удаленном сервере.
      Исходники https://github.com/EvgeniyKorepov/FastCGIClient
      Пример delphi
      var FFastCGI : TFastCGI; ... procedure TFormMain.FormCreate(Sender: TObject); var AHost : String; APort : Word; AScriptFileName, ARequest, AContent : String; begin AHost := '10.0.0.4'; APort := 9000; FFastCGI := TFastCGI.Create(AHost, APort); FFastCGI.KeepAlive := True; AScriptFileName := '/opt/xxx.php'; ARequest := 'request=1234567890'; if FFastCGI.Get(AScriptFileName, ARequest, AContent) then Memo.Text := AContent else Memo.Text := FFastCGI.StatusCode.ToString + ' ' + FFastCGI.StatusText; end; пример php 
      <?php header('Content-Type: text/html; charset=utf-8'); if (isset($_REQUEST["request"])) if ($_REQUEST["request"] == "1234567890") { header("Status: 200"); echo 'OK'; } else { http_response_code(400); echo "ERROR"; }  
    • От Евгений Корепов
      Я написал класс для демонизации приложения в linux. Класс форкает процесс, обрабатывает поступающие сигналы и передает их в основной поток через потокобезопасную очередь.
      Исходники https://github.com/EvgeniyKorepov/LinuxDaemon
      Для использования просто подключите модуль UnitDaemon в свое консольное приложение:
      program DaemonTest; {$APPTYPE CONSOLE} uses System.SysUtils, System.IOUtils, System.SyncObjs, Posix.Stdlib, Posix.SysStat, Posix.SysTypes, Posix.Unistd, Posix.Signal, Posix.Fcntl, Posix.Syslog in 'Posix.Syslog.pas', UnitDaemon in 'UnitDaemon.pas'; var AEventType : TEventType; begin syslog(LOG_NOTICE, 'main START'); while True do begin syslog(LOG_NOTICE, 'main LOOP'); if UnitDaemon.QueueEvent.PopItem(AEventType) = System.SyncObjs.TWaitResult.wrSignaled then begin syslog(LOG_NOTICE, 'main UnitDaemon.QueueEvent.PopItem'); case AEventType of TEventType.StopProcess : begin syslog(LOG_NOTICE, 'main Event StopProcess'); ExitCode := EXIT_SUCCESS; exit; end; TEventType.Start : begin syslog(LOG_NOTICE, 'main Event START'); end; TEventType.Reload : begin // Reload config syslog(LOG_NOTICE, 'main Event RELOAD'); end; TEventType.Stop : begin syslog(LOG_NOTICE, 'main Event STOP'); ExitCode := EXIT_SUCCESS; exit; end; end; end; Sleep(50); end; end. Так же поддерживается systemd - для этого положите  DaemonTest.service в /etc/systemd/system/ и используйте :
      systemctl start DaemonTest.service systemctl reload DaemonTest.service systemctl stop DaemonTest.service  
    • От Виталий Иванов
      Я недавно или давно писал по поводу почему компилятор при разном наборе USES увеличивает время компиляции где-то от 4 до 10 раз. То есть проект может компилируются за 10 секунд, а при небольших манипуляциях с USES станет компилироваться 40 секунд и тд. Очень хорошо заметно на большом проекте у меня с 1 минуты 18 секунд выросло время компила до 1 часа 40 минут.
      Ну хватит предыстории после анализа зависимостей и проверки логов обращения к файловой системе был выяснен интересный факт :)
      У меня в проекте появился UNIT в котором глобальные методы для так сказать конфигурирования внешнего вида компонентов (компоненты тоже самописные) и получилось следующая ситуация:
      1. В UNIT с формой лежит один из визуальных компонентов назовем его TXXX
      2. соответственно в первом (interface секции) USES данного модуля прописывается автоматом модуль из зависимостей компонента
      3. В нижнем (implementation секции) USES расположен UNIT с глобальными методами (назовем его UNIT XXX) для так сказать конфигурирования его (установка бордера и другой дичи)
      4. В этом UNIT XXX (interface секции) USES также прописаны модули этих визуальных компонентов для передачи их в методы как параметры.
      Так вот из-за такой ошибочной связи время компила увеличивается в разы и по анализу project dependency увеличивается с более менее приемлемых (по времени компиляции) 200 до 500.
      Из сходя из этого начала рефакторинг всего кода и переводить компоненты на интерфейсы это сокращает project dependency проекта и неплохо так, перевод одного компонента который используется почти везде в проекте на интерфейс сократил с 200 до 190 и время компила начала сокращаться.
      Сори за много букавок, но может кому будет интересно или кто с толкнулся с такой проблемой.
       
      Так же в решении и анализе взаимосвязей помог эксперт MMX. 
    • От AlexM
      Win10
      Delphi 10.3.1
      необходимо реализовать редактирования ячейки TGrid, на котором есть LiveBindings
      нужна маска редактирования и шрифт

      пробовал OnCreateCustomEditor
      procedure TForm1.Grid1CreateCustomEditor(Sender: TObject;   const Column: TColumn; var Control: TStyledControl); var   tmpEdit: TEdit; begin   tmpEdit := TEdit.Create(self);   tmpEdit.MaxLength := 3;   tmpEdit.Font.Style := tmpEdit.Font.Style + [TFontStyle.fsUnderline];   Control := tmpEdit; end; MaxLength работает ок, но хотелось бы всё-таки маску
      жирный шрифт не устанавливается
      введенное значение не сохраняется, по окончании редактирования восстанавливается старое значение, даже если tmpEdit в LiveBindings привязать к LinkFillControlToField
    • От Дмитрий Потапов
      Приветствую. Имеется необходимость получить список всех видимых (GUI) компонентов, установленных в Delphi. Я видел где-то, что можно как-то попробовать через ToolsAPI это сделать, но ничего толкового на эту тему так и не нашел. Может есть у кого мысли по этому поводу?
      Если возникнет вопрос: для чего тебе это?
      Ответ: Для приложения LivePreview, которое идет вместе со студией для того, чтобы видеть то, что размещаю на форме непосредственно на устройстве.

      Спасибо!
    • От Светлана
      Ну всё в принципе как всегда, либо я барашка, либо лыжи не едут)
      А всё просто - я хочу, чтобы пока данные с сервера загружались по клику кнопки, пользователю элементарно был отклик в виде крутящейся какой нибудь фигни и он видел, что процесс идёт и что прога не зависла и никуда лишний раз не тыкал.
      Пока что для тестов сделала элементарно кнопку Update (speedbutton с image), данные элементарно грузятся и отображаются в GridPanel, а поверх него, чтоб пользователь и не смог куда либо тыкнуть, замостила панелькой с Image, вращаемой по таймеру (всё это дело наверху Visible:=false). И когда клацаем по кнопке Update, то панельку сверху грида делаю отображаемой и запускаю таймер, потом этот же обработчик/процедура грузит данные, а по окончанию останавливаем таймер и скрываем полупрозрачну, еще кстати, панельку. Аля вот так:
      procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin //отображаем лого загрузки P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; //с запуском таймера GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется //и скрывае лого загрузки Timer_load_rotate.Enabled := false; //уже в обратном порядке P_showLoad.Visible := false; end; иии... ни черта не происходит как я хочу(
      Это лого вообще в итоге не отображается, а если убрать его скрытие, то оно у нас отобразится уже только тогда, когда всё загрузится. Логика мне стала подсказывать, что следовало его как то отобразить выполнив в параллельном асинхронном потоке аля так:
      procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin TThread.Queue(TThread.Current, //TThread.Queue TThread.Synchronize ForceQueue procedure() begin P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; end); GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется end; И опять оно отображается только после того, как всё загрузится и проработает вся процедура. И уже чего только не пробовала и Synchronize и ForceQueue; и через TTask.Run и |task := TTask.Create(procedure () ... и т.д.| ничего не подходит, вот хоть убейся это всё дело будет отображаться только после полной отработки процедуры клика. Может я не в том направлении вообще рою и это как то по другому делается? Может я еще пока отлаживаю на Win32, а не всё на android, а там вот пара вариантов и норм на нём работают? Но чтот я никак не могу понять, что к чему... должно же быть как то просто, а я чтот никак не могу понять как(
    • От Morfi
      Доброго времени суток.
      Нашел проблему при написании кастомного грида, который наследуется от TCustomGrid:
      При использовании LiveBindings  между кастомным гридом и набором данных, после закрытия среды вываливается AV:

       

       
      Подскажите, что я упустил?
       
      Минимальный код кастомного грида:
       
    • От ComAlex
      Goоgle Play перестает поддерживать 32-bit Android-приложения c 01.08.2019.
      А выкладывать в Goоgle Play новые УЖЕ нельзя.
      Последние же Delphi XE не позволяют создать 64-bit Android-приложения.
      Кто знает, когда появится новая версия с поддержкой 64 - bit? Говорили, что в конце лета, но лето кончилось
    • От yooSee
      Всем привет, вот и я решил внести свою лепту в жизнь форума и сегодня мы разберемся с разрешениями на Delphi Rio под Андроид. 
      Для примера мы будем использовать разрешения на чтение и запись с памяти устройства, для начала в нашем проекте выставим в Delphi>Project>Application>Uses Permissions галочки на Read External Storage и Write External Storage.
      в uses проекта добавьте следующее
      uses System.Permissions, Androidapi.Jni.Os, Androidapi.Helpers, далее  создадим переменные
      var Form: TForm; .... FPermissionWrite: string; FPermissionRead: string; в Form.Create добавим следующий код
      procedure TForm.FormCreate(Sender: TObject); begin FPermissionWrite := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); //Значение на запись FPermissionRead := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); //Значение на чтение end; и теперь сам не посредственно запрос на подтверждение наших прав
      procedure TForm.Button1Click(Sender: TObject); begin PermissionsService.RequestPermissions ([FPermissionWrite, FPermissionRead], nil); end; //это вызовет окно с запросом разрешения прав ну и для проверки бросим на форму TMemo и пару TButton , в них реализуем сохранение и чтение из файла с памяти устройства
      procedure TForm.Button1Click(Sender: TObject); begin Memo1.Lines.LoadFromFile(TPath.Combine(TPath.GetSharedDocumentsPath, 'test.txt')); end; procedure TForm.Button2Click(Sender: TObject); begin Memo1.Lines.SaveToFile(TPath.Combine(TPath.GetSharedDocumentsPath, 'test.txt')); end; P.S. Напоминаю что для работы TPath нам понадобится подключить в Uses 
      uses System.system.ioutils; Надеюсь материал будет полезен! 
       
       
       

      video_2019-02-08_00-11-36.mp4 Permissions.zip
    • От TAZAQ
      Доброго времени суток, возникло пару вопросов по поводу нового релиза студии, а конкретно Delphi 10.3 community:
      1) В каком месте находится презентованный z-order для компонентов и как он работает?
      2) Почему на inline объявление переменных ругается редактор кода, но при этом компилятор спокойно пережевывает и не давится?

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...