Последняя версия DataExpress 3 beta от 1 сентября 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Модули выражения. Проблемы при написании.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: Чт апр 13, 2017 8:57 am
Поблагодарили: 4 раза
Контактная информация:

Re: Модули выражения. Проблемы при написании.

Сообщение YurAnt » Чт май 04, 2017 6:36 pm

Не в form_create, а в функции создать параметр формы

...И вставить затем все это дело в вычисляемую надпись...
Блин. Робко теплится надежда на то, что придет человеческое решение...
Изображение

drts
Эксперт
Сообщения: 361
Зарегистрирован: Сб окт 29, 2016 11:35 pm
Откуда: Новороссийск
Благодарил (а): 25 раз
Поблагодарили: 4 раза

Re: Модули выражения. Проблемы при написании.

Сообщение drts » Чт май 04, 2017 6:37 pm

Ну х.з. можно ли так с модулем выражений. Надо почитать. Ну у меня работает вроде и в том виде, что я разместил. Только однократность запуска добавить и все. Я просто не у компа, не проверю.

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: Чт апр 13, 2017 8:57 am
Поблагодарили: 4 раза
Контактная информация:

Re: Модули выражения. Проблемы при написании.

Сообщение YurAnt » Чт май 04, 2017 6:40 pm

Я проверял. Работает. На самом деле function в описании в модуле - это обобщенное название. (Автор так постановил, решив что "chё_ugodno" будет не очень хорошо смотреться :lol: )
Изображение

neitri
Мастер скриптов
Сообщения: 539
Зарегистрирован: Пн фев 13, 2017 5:42 pm

Re: Модули выражения. Проблемы при написании.

Сообщение neitri » Чт май 04, 2017 6:44 pm

Можно попробовать так

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

procedure test;
var
 p:TKeyEvent;
begin
  p:=@GridKeyDown;
  if Self.EditWindow <> nil then
   if Self.Grid.OnKeyDown<> p then
      Self.Grid.OnKeyDown := p;
end;
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: Чт апр 13, 2017 8:57 am
Поблагодарили: 4 раза
Контактная информация:

Re: Модули выражения. Проблемы при написании.

Сообщение YurAnt » Чт май 04, 2017 6:46 pm

Вот кто щас за компом! (Сам с телефона пишу.) Сэнкс. Попробуем...
Изображение

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: Чт апр 13, 2017 8:57 am
Поблагодарили: 4 раза
Контактная информация:

Re: Модули выражения. Проблемы при написании.

Сообщение YurAnt » Пт май 05, 2017 2:56 pm

neitri писал(а):Можно попробовать так

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

procedure test;
var
 p:TKeyEvent;
begin
  p:=@GridKeyDown;
  if Self.EditWindow <> nil then
   if Self.Grid.OnKeyDown<> p then
      Self.Grid.OnKeyDown := p;
end;

Странно.. Почему-то функция срабатывает один раз и потом молчит, пока не "перекинешь" фокус в гриде. Может надо не к надписи и к OnAfterScroll привязать?
Изображение

neitri
Мастер скриптов
Сообщения: 539
Зарегистрирован: Пн фев 13, 2017 5:42 pm

Re: Модули выражения. Проблемы при написании.

Сообщение neitri » Пт май 05, 2017 3:03 pm

А что собственно хотите сделать?
Только целиком пожалуйста, Со всеми нюансами.
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: Чт апр 13, 2017 8:57 am
Поблагодарили: 4 раза
Контактная информация:

Re: Модули выражения. Проблемы при написании.

Сообщение YurAnt » Пт май 05, 2017 3:06 pm

neitri писал(а):А что собственно хотите сделать?
Только целиком пожалуйста, Со всеми нюансами.

Конкретно в этом не хватает лишь одного: при закрытии формы не происходит ее повторного открытия "с места". Нужно создать OnAfterScroll, чтобы надпись (в которую пихаем функцию) вычислилась. А из нюансов - думаю в дальнейшем проблем уже быть не должно: хочу код кея(13) сделать необязательным параметром (по умолчанию "13") и менять при появлении другого параметра.
Изображение

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: Чт апр 13, 2017 8:57 am
Поблагодарили: 4 раза
Контактная информация:

Re: Модули выражения. Проблемы при написании.

Сообщение YurAnt » Пт май 05, 2017 3:37 pm

А в "чистом виде" - работает все безупречо:

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

procedure GridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var K:TKeyEvent;
begin
K:=Self.Grid.OnKeyDown;
if key=13 then
begin
Self.Grid.OnKeyDown := nil;
Self.EditWindow.ShowModal;
Self.Grid.OnKeyDown:=K;
end;
end;
procedure Form_Create;
begin
if Self.EditWindow <> nil then
   Self.Grid.OnKeyDown := @GridKeyDown;
end;               
Изображение

neitri
Мастер скриптов
Сообщения: 539
Зарегистрирован: Пн фев 13, 2017 5:42 pm

Re: Модули выражения. Проблемы при написании.

Сообщение neitri » Пт май 05, 2017 3:38 pm

При закрытии Модального окна Грид не получает фокус.
Необходимо вернуть фокус гриду и все повторно работает.

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

{@function
OrigName=test
Name=test
Args=
Result=
Group=Параметры приложения
Description=<br>
<b></b>
Пример:<br><br>
<code></code> <br><br>
@}

procedure GridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
fm: TdxForm;
begin
Fm := TdxGrid(Sender).Form;
if key=13 then
  begin
    fm.EditWindow.ShowModal;
    if fm.Grid.CanFocus then
      fm.Grid.SetFocus;
  end;
end;

procedure test;
var
 p:TKeyEvent;
begin
  p:=@GridKeyDown;
  if Self.EditWindow <> nil then
   if Self.Grid.OnKeyDown<> p then
     begin
      Self.Grid.OnKeyDown := p;
      if Self.Grid.CanFocus then
        Self.Grid.SetFocus;
     end;
end;   
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"


Вернуться в «Разработка расширений»