artem_niko Posted February 28, 2020 Share Posted February 28, 2020 Hello! I want that when user press button "Cancel", in RowEditor, will be working my code. For example, show message. How? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 28, 2020 Share Posted February 28, 2020 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; Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 28, 2020 Author Share Posted February 28, 2020 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... Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 28, 2020 Share Posted February 28, 2020 8 minutes ago, Артем said: And message not showing when I press "Cancel" in RowEditor... Can you make a simple testcase for check!? Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 28, 2020 Author Share Posted February 28, 2020 6 minutes ago, Sherzod said: Can you make a simple testcase for check!? Sorry, can't. Commercical project. If you are solution is principal working, but no... My ShowMessageN is ignoring by the RowEditor… Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 28, 2020 Share Posted February 28, 2020 1 minute ago, Артем said: Sorry, can't. Commercical project. Try to analyze it in a new project. Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 28, 2020 Author Share Posted February 28, 2020 1 minute ago, Sherzod said: Try to analyze it in a new project. I understand why code in procedure not working... Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 20 hours ago, Sherzod said: Try to analyze it in a new project. I understand why code in procedure not working... Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 Anybody have idea how do it? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 29, 2020 Share Posted February 29, 2020 2 minutes ago, Артем said: I understand why code in procedure not working... ? 2 minutes ago, Артем said: Anybody have idea how do it? Please try to make a simple testcase for reproduce. Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 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? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 29, 2020 Share Posted February 29, 2020 6 minutes ago, Артем said: You answer me that you try ro analizy. Sorry, Возможно я не правильно выразился. Это также означает, "Попробуйте проанализировать это на новом проекте". Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 1 minute ago, Sherzod said: Sorry, Возможно я не правильно выразился. Это также означает, "Попробуйте проанализировать это на новом проекте". Да там, по-сути, одна строчка кода. Я не думаю, что на новом проекте заработает. У вас есть какой-нибудь проект, в который бы вы могли поместить ваше же решение? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 29, 2020 Share Posted February 29, 2020 1 minute ago, Артем said: У вас есть какой-нибудь проект, в который бы вы могли поместить ваше же решение? Да конечно, к примеру на демо примере, работает без проблем: \FMSoft\Framework\uniGUI\Demos\Desktop\GridEditors - Row Editor Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 36 minutes ago, Sherzod said: Да конечно, к примеру на демо примере, работает без проблем: \FMSoft\Framework\uniGUI\Demos\Desktop\GridEditors - Row Editor Посмотрел пример. Я там вообще не вижу того, что нужно. Ни вашего кода, ни возможности отключать RowEditor во время работы программы в RunTime... Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 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', []); } Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 29, 2020 Share Posted February 29, 2020 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; 1 Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 4 minutes ago, Sherzod said: Артем, Вы должны добавить условие!! procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin if EventName = '_cancel' then begin // Ваш код end end; Не, я же не знал, что надо это условие добавить, ведь я использовал ваш код, а он был без этого условия дан вами. Сейчас работает, спасибо большое! А как называется условие, которое срабатывает для второй кнопки? И вообще, где вы берете информацию об этом, обо всех этих названиях, JS для компонентов? 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 29, 2020 Share Posted February 29, 2020 Just now, Артем said: Не, я же не знал, что надо это условие добавить, ведь я использовал ваш код, а он был без этого условия дан вами. Простите... Вообще-то я хотел дать Вам и это событие пустым function canceledit(editor, context, eOpts) { // } 1 Quote Link to comment Share on other sites More sharing options...
artem_niko Posted February 29, 2020 Author Share Posted February 29, 2020 1 minute ago, Sherzod said: Простите... Вообще-то я хотел дать Вам и это событие пустым function canceledit(editor, context, eOpts) { // } Спасибо, что не дали его пустым 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 29, 2020 Share Posted February 29, 2020 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; 1 Quote Link to comment Share on other sites More sharing options...
artem_niko Posted March 3, 2020 Author Share Posted March 3, 2020 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; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.