Страница 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;
У меня работает.