Jump to content

Event "Cancel" in RowEditor


artem_niko

Recommended Posts

2 hours ago, Артем said:

I want that when user press button "Cancel", in RowEditor, will be working my code. 

Hello,

One possible solution by using ClientEvents...

UniDBGrid1.ClientEvents.ExtEvents -> 

function canceledit(editor, context, eOpts)
{
    ajaxRequest(this, '_cancel', []);
}
procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin

end;

 

Link to comment
Share on other sites

51 minutes ago, Sherzod said:

Hello,

One possible solution by using ClientEvents...

UniDBGrid1.ClientEvents.ExtEvents -> 


function canceledit(editor, context, eOpts)
{
    ajaxRequest(this, '_cancel', []);
}

procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin

end;

 

Hm...Not working...

I was write this:

procedure TUniFrameM1.UniDBGridReportsOfGroupAjaxEvent(Sender: TComponent;
  EventName: string; Params: TUniStrings);
begin
  ShowMessageN('1111');
end;

And message not showing when I press "Cancel" in RowEditor...

Link to comment
Share on other sites

1 minute ago, Sherzod said:

?

Please try to make a simple testcase for reproduce.

I already told you yesterday that:

Quote

Sorry, can't. Commercical project

You answer me that you try ro analizy.

I have advanced question: How disable (or hide) RowEditor in RunTime? 

Link to comment
Share on other sites

6 minutes ago, Артем said:

You answer me that you try ro analizy.

Sorry, 

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

 

Link to comment
Share on other sites

1 minute ago, Sherzod said:

Sorry, 

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

 

Да там, по-сути, одна строчка кода. Я не думаю, что на новом проекте заработает. У вас есть какой-нибудь проект, в который бы вы могли поместить ваше же решение?

Link to comment
Share on other sites

1 minute ago, Артем said:

У вас есть какой-нибудь проект, в который бы вы могли поместить ваше же решение?

Да конечно, к примеру на демо примере, работает без проблем:

\FMSoft\Framework\uniGUI\Demos\Desktop\GridEditors - Row Editor

 

Link to comment
Share on other sites

36 minutes ago, Sherzod said:

Да конечно, к примеру на демо примере, работает без проблем:


\FMSoft\Framework\uniGUI\Demos\Desktop\GridEditors - Row Editor

 

Посмотрел пример.

Я там вообще не вижу того, что нужно. Ни вашего кода, ни возможности отключать RowEditor во время работы программы в RunTime...

Link to comment
Share on other sites

23 hours ago, Sherzod said:

Hello,

One possible solution by using ClientEvents...

UniDBGrid1.ClientEvents.ExtEvents -> 


function canceledit(editor, context, eOpts)
{
    ajaxRequest(this, '_cancel', []);
}

procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin

end;

 

Я сделал как вы сказали и вот что получилось.

Когда у меня открывается форма, то срабатывает отображение сообщения, т.е. этот код:

procedure TUniFrameM1.UniDBGridReportsOfGroupAjaxEvent(Sender: TComponent;
  EventName: string; Params: TUniStrings);
begin
  ShowMessageN('1111');
end;

А вот после этого сообщения загрузка данных в UniDBGrid  не происходит.

Может что-то неправильно в этом коде?

function canceledit(editor, context, eOpts)
{
    ajaxRequest(this, '_cancel', []);
}

 

Link to comment
Share on other sites

23 hours ago, Sherzod said:

procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin end;

Артем, Вы должны добавить условие!!

procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin
  if EventName = '_cancel' then
  begin
    // Ваш код
  end
end;

 

  • Like 1
Link to comment
Share on other sites

4 minutes ago, Sherzod said:

Артем, Вы должны добавить условие!!


procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin
  if EventName = '_cancel' then
  begin
    // Ваш код
  end
end;

 

Не, я же не знал, что надо это условие добавить, ведь я использовал ваш код, а он был без этого условия дан вами.

Сейчас работает, спасибо большое! :)

А как называется условие, которое срабатывает для второй кнопки? И вообще, где вы берете информацию об этом, обо всех этих названиях, JS для компонентов?

 

  • Like 1
Link to comment
Share on other sites

Just now, Артем said:

Не, я же не знал, что надо это условие добавить, ведь я использовал ваш код, а он был без этого условия дан вами.

Простите... :)   Вообще-то я хотел дать Вам и это событие пустым :) 

function canceledit(editor, context, eOpts) { 
    //
}

 

  • Like 1
Link to comment
Share on other sites

11 minutes ago, Артем said:

А как называется условие, которое срабатывает для второй кнопки?

Должно быть edit:

function edit(editor, context, eOpts)
{
    ajaxRequest(this, '_edit', []);
}
procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin
  if EventName = '_cancel' then
  begin
    // Ваш код
  end
  else if EventName = '_edit' then
  begin
    //
  end
end;

 

  • Like 1
Link to comment
Share on other sites

On 2/29/2020 at 11:18 PM, Sherzod said:

Должно быть edit:


function edit(editor, context, eOpts)
{
    ajaxRequest(this, '_edit', []);
}

procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin
  if EventName = '_cancel' then
  begin
    // Ваш код
  end
  else if EventName = '_edit' then
  begin
    //
  end
end;

 

Сделал как вы написали. Но, после перезагрузки данных в UniDBGrid выдается ошибка:

_cgds_(O385,true);delete O385_Cols;O385.refreshColumnCache=true;O385.discardColumns(); O59A=new Ext.grid.column.RowNumberer({width:40,align:"center",hideable:false,resizable:false,draggable:false,menuDisabled:true,text:" ",dataIndex:-2});O59A.nm="O59A"; O5A2=new Ext.grid.column.Column({ogrid:O385,dataIndex:"0",renderer:_rndcll_,rdonly:false,showQTip:true,showQTipAlways:true,text:"Создан",menuDisabled:true,align:"center",width:242,attr:"{fc:'#808080',fts:'font-size:12px'}",editor:{xtype:"textfield",fieldStyle:"color:#808080"}});O5A2.nm="O5A2";O5A2.editor.uform=O385.uform;O5A2.editor.focusDisabled=true;O5A2.editor.isCellEditor=true; O5AA=new Ext.grid.column.Column({ogrid:O385,minWidth:65,dataIndex:"1",renderer:_rndcll_,rdonly:true,text:"Пол",menuDisabled:true,align:"center",ct:"number",width:65,attr:"{fts:'font-size:12px'}",unEditable:true});O5AA.nm="O5AA"; O5B2=new Ext.grid.column.Column({ogrid:O385,minWidth:130,dataIndex:"2",renderer:_rndcll_,rdonly:false,showQTip:true,showQTipAlways:true,text:"Дата рождения",hideable:false,align:"center",cf:"d.m.Y",ct:"date",width:130,attr:"{fts:'font-size:12px'}",editor:O44D,uEditor:O44D});O5B2.nm="O5B2";var e=O44D;if(e.picker){e.picker.destroy();delete e.picker;};O44D.name="2";O5B2.editor.focusDisabled=true;O5B2.editor.isCellEditor=true; O5BA=new Ext.grid.column.Column({ogrid:O385,minWidth:110,dataIndex:"3",renderer:_rndcll_,rdonly:false,showQTip:true,showQTipAlways:true,text:"Фамилия",hideable:false,width:110,attr:"{fts:'font-size:12px'}",editor:{xtype:"textfield",fieldStyle:"color:#000000"}});O5BA.nm="O5BA";O5BA.editor.uform=O385.uform;O5BA.editor.focusDisabled=true;O5BA.editor.isCellEditor=true; O5C2=new Ext.grid.column.Column({ogrid:O385,minWidth:110,dataIndex:"4",renderer:_rndcll_,rdonly:false,showQTip:true,showQTipAlways:true,text:"Имя",hideable:false,width:110,attr:"{fts:'font-size:12px'}",editor:{xtype:"textfield",fieldStyle:"color:#000000"}});O5C2.nm="O5C2";O5C2.editor.uform=O385.uform;O5C2.editor.focusDisabled=true;O5C2.editor.isCellEditor=true; O5CA=new Ext.grid.column.Column({ogrid:O385,minWidth:110,dataIndex:"5",renderer:_rndcll_,rdonly:false,showQTip:true,showQTipAlways:true,text:"Отчество",hideable:false,width:110,attr:"{fts:'font-size:12px'}",editor:{xtype:"textfield",fieldStyle:"color:#000000"}});O5CA.nm="O5CA";O5CA.editor.uform=O385.uform;O5CA.editor.focusDisabled=true;O5CA.editor.isCellEditor=true;var O385_Cols=[O59A,O5A2,O5AA,O5B2,O5BA,O5C2,O5CA];O385.reconfigure(null,O385_Cols);O385.uniConfigColumns();O5A2.setElProp({"text-align":"center"},null,0,null,null,"titleEl");O5AA.setElProp({"text-align":"center"},null,0,null,null,"titleEl");O5B2.setElProp({"background-color":"#FFFFF2","text-align":"center"},null,0,null,null,"titleEl");O5BA.setElProp({"background-color":"#FFFFF2","text-align":"center"},null,0,null,null,"titleEl");O5C2.setElProp({"background-color":"#FFFFF2","text-align":"center"},null,0,null,null,"titleEl");O5CA.setElProp({"background-color":"#FFFFF2","text-align":"center"},null,0,null,null,"titleEl");_gsc_(O390,0,3);

Сам код простой:

procedure TUniFrameM1.UniDBGridUsersOfProjectAjaxEvent(Sender: TComponent;
  EventName: string; Params: TUniStrings);
var
  proc: procedure(ACliHandle: Pointer;
                 msccOrgRequisiteINN: WideString;
                 msccIdEditiingRecordInDictionary: Integer;
                 msccNewValue: WideString; msccActionOnRecord: Integer);
begin
  if UniDBGridUsersOfProject.DataSource.DataSet.RecordCount > 0 then
  begin
    if EventName = '_cancel' then
    begin
      UniMainModule.procHandle:=LoadLibraryW(PWideChar(UniMainModule.UserDLLName));
      try
        @proc:=GetProcAddress(UniMainModule.procHandle,PChar('ForEdit'));
        UniMainModule.FDConnection.StartTransaction;
        try
          proc(UniMainModule.FDConnection.CliHandle,
               PWideChar(UniMainModule.OrgRequisiteINN),
               UniMainModule.msccIdLockedRecord,
               (Sender as TUniDBGrid).Columns[(Sender as TUniDBGrid).CurrCol].Field.Text,1);
            UniMainModule.FDConnection.Commit;
            Application.ProcessMessages;
        except
          UniMainModule.FDConnection.Rollback;
          raise;
        end;
      finally
        Application.ProcessMessages;
        FreeLibrary(UniMainModule.procHandle);
        ReloadUsersOfProject;
        iGrowl.Info(iGrowl.Title,'Новое значение не было сохранено.');
      end;
    end;
  end;
end;

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...