Страница 12 из 13

Re: Diesel Pascal

Добавлено: 26.02.2021 13:21:34
v-t-l
*Rik* писал(а):А если в Lazarus приложение с TZPgEventAlerter сделать, ошибка воспроизводится?

[Уведомление об исключении отладчика]

Проект project1 вызвал класс исключения 'EZSQLException' с сообщением:
SQL Error: ошибка SSL: decryption failed or bad record mac

В файле '../../src/dbc/ZDbcPostgreSqlUtils.pas' на строке 699:
raise EZSQLException.CreateWithStatus(Result,Format(SSQLError1, [GetMessage(ErrorMessage)]));


[Игнорировать этот тип исключений]

[Остановить] [Продолжить]
Есть подозрение, что TZPgEventAlerter не синхронизируется с основным потоком при использовании общего соединения.

Добавлено спустя 2 часа 1 минуту 18 секунд:
При использовании отдельного соединения для TZPgEventAlerter почти 2 часа тестирования ошибок не вызвали.

Re: Diesel Pascal

Добавлено: 26.02.2021 14:15:04
*Rik*
v-t-l писал(а):
*Rik* писал(а):А если в Lazarus приложение с TZPgEventAlerter сделать, ошибка воспроизводится?

[Уведомление об исключении отладчика]

Проект project1 вызвал класс исключения 'EZSQLException' с сообщением:
SQL Error: ошибка SSL: decryption failed or bad record mac

В файле '../../src/dbc/ZDbcPostgreSqlUtils.pas' на строке 699:
raise EZSQLException.CreateWithStatus(Result,Format(SSQLError1, [GetMessage(ErrorMessage)]));


[Игнорировать этот тип исключений]

[Остановить] [Продолжить]
Есть подозрение, что TZPgEventAlerter не синхронизируется с основным потоком при использовании общего соединения.

Добавлено спустя 2 часа 1 минуту 18 секунд:
При использовании отдельного соединения для TZPgEventAlerter почти 2 часа тестирования ошибок не вызвали.

А в Дизель-Паскале через отдельное соединение тоже работает?

Re: Diesel Pascal

Добавлено: 27.02.2021 11:06:58
v-t-l
*Rik* писал(а):А в Дизель-Паскале через отдельное соединение тоже работает?

Да, исключения не появляются.

Re: Diesel Pascal

Добавлено: 27.02.2021 11:51:39
*Rik*
v-t-l писал(а):
*Rik* писал(а):А в Дизель-Паскале через отдельное соединение тоже работает?

Да, исключения не появляются.

Это явно косяк какой-то, лучше разработчикам ZEOS сообщить, возможно они уже знают. Пока костыль в виде отдельного соединения используйте.

ps.
В Дизель-Паскаль не все компоненты от ZEOS добавлены, если ещё какие-то нужны, могу добавить.

Re: Diesel Pascal

Добавлено: 01.03.2021 16:14:42
Aleks69
Добрый день!

Выложил более-или менее настроенную среду Lazarus для Android в этой теме: viewtopic.php?f=5&t=43209

Не осталось ли у автора Diesel Pascal первых версий виртуальной машины, чтоб он смог проверить просто машину + простейшие контролы из вкладки Android Bridges (там свои контролы) на принципиальную возможность работать под Android?

Добавлено спустя 4 часа 49 минут 2 секунды:
Хотя, мне кажется - ситуация с адаптацией Diesel Pascal гораздо сложней, чем это мне виделось на первый взгляд. Масса проблем будет с расположением элементов на странице - все эти андроидные ReiativeLayout не имеют прямых аналогов (?) при работе дизайнера форм для Windows.

Re: Diesel Pascal

Добавлено: 27.02.2024 10:25:48
v-t-l
Добрый день!
Не нашел, как в xDBGrid реализовать LookupCombo столбец с с автодополнением по мере набора текста? Хотел сделать обработчик OnSelectEditor с показом своего контрола - недоступно.

Re: Diesel Pascal

Добавлено: 27.02.2024 11:20:10
*Rik*
v-t-l писал(а):Добрый день!
Не нашел, как в xDBGrid реализовать LookupCombo столбец с с автодополнением по мере набора текста? Хотел сделать обработчик OnSelectEditor с показом своего контрола - недоступно.
Здравствуйте.
Я редко использую саму сетку для редактирования данных, поэтому таким функционалом не заморачивался. Можно попробовать добавить.
Не могли бы Вы пример изготовить в Lazarus, можно с обычной сеткой, если там это работает?

Re: Diesel Pascal

Добавлено: 27.02.2024 15:29:20
v-t-l
AutoComplete для Lookup полей стандартной TDBGrid отсутствует. Поэтому сделал в примере через OnSelectEditor.
3.7z
Тестовый пример
(78.6 КБ) 602 скачивания
В DieselPascal событие OnSelectEditor не доступно.

Re: Diesel Pascal

Добавлено: 29.02.2024 11:44:01
*Rik*
Выпустил новую версию с поддержкой события. Вставил код из Вашего примера, Есть отличие:
Для получения прямоугольника, где отображать редактор, использовать r = xDBGrid1.SelectedEditorRect;
Если в столбце используется 2 поля и нужно понять где и как отображать редаткор, для верхнего поля или для нижнего, использовать xDBGrid1.CellCursorPos.
Если (Column.Index = 5) and (xDBGrid1.CellCursorPos = ccpTop) курсор в столбце с индексом 5 и в верхнем положении для поля Field
Если (Column.Index = 5) and (xDBGrid1.CellCursorPos = ccpBottom) курсор в столбце с индексом 5 и в нижнем положении для поля xField
Я убрал связь с полями и пробовал без данных, время было мало на эксперименты, сам редактор отображается. Попробуйте, получится с данными или нет?

Код: Выделить всё

method TNomenkForm.xDBGrid1SelectEditor(Sender: TObject; Column: TxColumn; var Editor: TWinControl);
var
  r: TRect;
  Ed: TDBLookupComboBox;
begin
  //if (Column.Index = 5) then
  //Если в столбце используется 2 поля и нужно понять где и как отображать редаткор,
  //Для верхнего поля или для нижнего, использовать xDBGrid1.CellCursorPos
  //На примере ниже проверяется что курсор стоит в верхнем положении.
  //Если второе поле в столбце не используется то использовать как if (Column.Index = 5)  then, без проверки позиции курсора
  if (Column.Index = 5) and (xDBGrid1.CellCursorPos = ccpTop)  then
    if ED = nil then
      ED = TDBLookupComboBox.Create(Self);
    end;
    ED.Parent = TWinControl(Sender);
    ED.Visible = False;
    ED.Color = clLime;
    //ED.DataSource:=ALBUMS_DS;
    //ED.DataField:='ArtistId';
    //ED.ListSource:=ARTISTS_DS;
    //ED.KeyField:='ArtistId';
    //ED.ListField:='Name';
    ED.AutoComplete = True;
//    ED.AutoDropDown:=True;
//    ED.AutoSelect:=True;
    r = xDBGrid1.SelectedEditorRect;
    ED.Left = r.Left-2;
    ED.Top = r.Top-2;
    ED.Width = r.Width;
    ED.Height = r.Height;
    Editor = ED;
  end;
end;  
ps. Пример на Дизель-Паскале.

Re: Diesel Pascal

Добавлено: 31.03.2024 21:07:16
v-t-l
Работает. Только, нужно добавить

Код: Выделить всё

method TForm1.EDEditingDone(Sender: TObject);
begin
  TWinControl(Sender).Parent.SetFocus;
end;
Еще, в стандартном DBGrid есть среди Options полезная опция dgDisplayMemoText, позволяющая отображать в ячейках содержимое Memo-полей вместо текста (Memo).

Re: Diesel Pascal

Добавлено: 01.04.2024 13:12:34
*Rik*
v-t-l писал(а):Работает. Только, нужно добавить

Код: Выделить всё

method TForm1.EDEditingDone(Sender: TObject);
begin
  TWinControl(Sender).Parent.SetFocus;
end;
Еще, в стандартном DBGrid есть среди Options полезная опция dgDisplayMemoText, позволяющая отображать в ячейках содержимое Memo-полей вместо текста (Memo).
Посмотрю, как время будет. Попробую добавить опцию.

Re: Diesel Pascal

Добавлено: 30.08.2024 17:40:13
v-t-l
В последней версии Diesel Pascal 2.3.2, которая с ZeosDBO 8.0, не передаются параметры запросов, как минимум в TZReadOnlyQuery. В Diesel всё присваивается, а в постгресе NULL.
В Lazarus TZReadOnlyQuery с параметрами отрабатывает нормально.

Re: Diesel Pascal

Добавлено: 30.08.2024 22:09:59
*Rik*
v-t-l писал(а):В последней версии Diesel Pascal 2.3.2, которая с ZeosDBO 8.0, не передаются параметры запросов, как минимум в TZReadOnlyQuery. В Diesel всё присваивается, а в постгресе NULL.
В Lazarus TZReadOnlyQuery с параметрами отрабатывает нормально.
Понял, проверю.

Re: Diesel Pascal

Добавлено: 31.08.2024 07:11:31
Alexander
Ему бы компиляцию в машинный код сделать, да переписать на самом себе без Лазаруса...

Re: Diesel Pascal

Добавлено: 31.08.2024 18:02:53
*Rik*
Alexander писал(а):Ему бы компиляцию в машинный код сделать, да переписать на самом себе без Лазаруса...
Смысла нет, будет тот же Лазарус..

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

Добавлено спустя 51 минуту 27 секунд:
v-t-l писал(а):В последней версии Diesel Pascal 2.3.2, которая с ZeosDBO 8.0, не передаются параметры запросов, как минимум в TZReadOnlyQuery. В Diesel всё присваивается, а в постгресе NULL.
В Lazarus TZReadOnlyQuery с параметрами отрабатывает нормально.
Надо проверить, обновил сборку. Дизель версия 2.3.4

Собственно, что обнаружил, в компонентах вместо TParam сейчас используется TZParam. В обертке интерпретатора для Zeos, которые подхватывают функции ParamByName был не исправлен возвращаемый результат TParam

Код: Выделить всё

AType.AddMethod('function ParamByName(const Value: string): TParam', @ZAbsRODataSet_PN); 
Исправил на TZParam

Код: Выделить всё

AType.AddMethod('function ParamByName(const Value: string): TZParam', @ZAbsRODataSet_PN); 
Можно вместо ParamByName использовать PN, пример ZQuery.PN('paramname').AsString = 'ыааы';
Надеюсь исправление поможет. Попробовал небольшой тест:

Код: Выделить всё

  ZReadOnlyQuery1.SQL.Text = 'INSERT INTO delivery (delivery_id, delivnaim) VALUES (:delivery_id, :delivnaim)';
  ZReadOnlyQuery1.PN('delivery_id').AsLargeInt = GetDeliveryID.GetNextValue;
  ZReadOnlyQuery1.PN('delivnaim').AsString = 'ыаыаы';
  ZReadOnlyQuery1.ExecSQL;
  Delivery.Close;
  Delivery.Open;
У меня работает.