Jump to content

boka

uniGUI Subscriber
  • Posts

    27
  • Joined

  • Last visited

Posts posted by boka

  1. Вопрос практический такой же, как в последних постах тут 

    Поясню свой:

    Есть DBLookupCombo c заполненными только ListSource, KeyField и ListName.
    DataSet под ListSource является master в Master-Detail relation, cоответственно, при выборе нового значения в DBLookupComboBox перезапрашивается detail dataset.

    image.png.165bf2abf0bd573e445a36f63f6b1fcb.png

    Всё бы хорошо, но если в detail dataset накопились изменения при CachedUpdates, то их желательно записать в БД, выполнив ApplyUpdates и предварительно спросив, а стоит ли их сохранять.

    EnableSynchronousOperations = true и запрос MessageDlg обязательно должен быть блокирующим, иначе [ListSource.DataSet.]KeyField успевает поменяться на новый и закэшированные в detail dataset изменения сбрасываются.
    Пытался поднимать MessageDlg и в TUniDBLookupCombo.OnChange, и в ~.OnChangeValue (само собой в OnSelect, OnExit и OnCloseUp уже поздно), и в [ListSource.DataSet.]KeyField.OnChange, но получаю "Dataset Blocking method MessageDlg() can not be called here".

    Где-то в ClientEvents я успею перехватить контроль в самом начале, когда ещё можно?

  2. Yep, much closer, thanx @Sherzod

    Changed code a bit but on the repeat attempt it keeps the last used Cell in an edit state.

    image.png.eb0afaab79a6f405771f0e1068cff890.png

    I tried both methods to finish editing but did not succeed.

    function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts) {
      columns.forEach(function(col) {
        if (col.getEditor().xtype == "combo") {
          col.getEditor().on('select', function(combo) {
            Ext.defer(function() {
              var _row = sender.getStore().indexOf(sender.getSelection()[0]);
              if (col.dataIndex === '1' && combo.getValue() === 'Min-Max') {
                            
                var _colIndx = 2;
                sender.editingPlugin.startEditByPosition({
                  row: _row,
                  column: _colIndx
                });
                sender.getColumns()[_colIndx].getEditor().setValue(null);
                sender.editingPlugin.completeEdit; //1st
    
                _colIndx = 3;
                sender.editingPlugin.startEditByPosition({
                 row: _row,
                 column: _colIndx
                });
                sender.getColumns()[_colIndx].getEditor().setValue(null);
                sender.editingPlugin.completeEdit;
    
              } else if (col.dataIndex === '1' && combo.getValue() != 'Min-Max') {
                var _colIndx = 4;
                sender.editingPlugin.startEditByPosition({
                  row: _row,
                  column: _colIndx
                });
                sender.getColumns()[_colIndx].getEditor().setValue(null);
                sender.editingPlugin.editing = false; // 2nd
              }
            }, 0)
          })
        }
      })
    }

     

  3. Thanks, @Sherzod

    Ok, now I catch that fired AJAXEvent and get those necessary cells clear before Post already!

    But! The combobox (without Post) turns back to the initial value every time! And even though it was already in changed state!

    if EventName = 'comboSelected' then begin
        var DS := (Sender as TUniDBGrid).DataSource.DataSet;
        if not (DS.State in dsEditModes) then
          DS.Edit;
    
          if DS.FieldByName('METHOD_NAME').Value = 'Min-Max' then begin
            DS.FieldByName('LOOKUP_DEPTH').Value  := null;
    
            DS.FieldByName('METHOD_TYPE').Value   := 'MM';
            DS.FieldByName('METHOD_NAME').Value   := 'Min-Max'
          end
          else begin
            DS.FieldByName('LEFTOVER_MIN').Value  := null;
    
            DS.FieldByName('METHOD_TYPE').Value   := 'AV';
            DS.FieldByName('METHOD_NAME').Value   := 'по среднему';
          end;
    
    //      Post;
      end;

    As you see I even tried to reassign it's value.

    P.S. I don't want to Post changes without need.

  4. As far as I understand this event fires when the AField changes. Ok, now I hook the changes of that dropdown field in OnSetCellValue on Form (Previously was in OnChange event in DataModule).

    But in OnSetCellValue the underlying DataSet is in dsBrowse state that makes me turn it into Edit state first, then change the necessary fields values and Post them after all  because only after DataSet.Post I see the refreshed data in DBGrid.

    And is there any way to refresh the DBGrid/Row/Cell representation without posting?


    image.png.fd1fd366b117ff840029a4c6663db447.png

    I just want to see/make the empty cell 'Остаток min' immediately right after changing 'Min-Max' selected above onto 'по среднему' (there are only two values)

  5. image.png.e3d76eba4ca4e94f85dd2ca28bbf39a3.png

    When choosing first value 'по среднему' from dropdown list I want to clear value from cell 'Остаток min' in that row, when choosing 'Min-Max' - from 'Глубина анализа'.
    Just to see them empty.
    As it seen in my example I do it with the data of corresponding dataset fields (in OnChange event of underlying 'dropdown' TField) but that doesn't lead to the DBGrid representation

  6. I have a lookup db field among different others in my connected TxxQuery and I want to clear some of them on DBGrid right after choosing the value from dropdown, when it is already collapsed.
    Assigning nulls on "data" level doesn't work

    IsMinMax := SameText(qDemandSettingsMETHOD_TYPE.Value, 'MM');
    
    if IsMinMax then
      qDemandSettingsLOOKUP_DEPTH.AsVariant := null
    else
      qDemandSettingsLEFTOVER_MIN.AsVariant := null;

    [METHOD_TYPE is that "lookup" field, LOOKUP_DEPTH and LEFTOVER_MIN - those I need to clear in DBGrid]

    Do I need to do something on client side or somehow force to refresh the grid?

  7. Hi everybody.

    Does anybody besides @GerhardV have a positive experience with Sencha Themer?

    I've just downloaded and installed it as trial, made some cosmetic but noticeable changes in Grid, DropdownBox and TreeMenu decorations, generated both package and css, placed them in correct folder, have chosen then among all available themes but .. But don't see the results in runtime.

    Maybe someone can suggest anything, direct me what I have missed?

    1.jpg

    2.jpg

    3.jpg

    4.jpg

  8. On 12/7/2018 at 12:23 PM, delagoutte said:

    anybody could help, farshad ? other ?

    I have produced a theme with sencha themer based on triton.

    where should I put the files produced by themer ? unipackage-6.5.3 ? other directory ?

    We must create other files ?

    what should I do for my theme to appear in the list of themes available in unigui ?

    it's been months that I ask on different post without ever having a complete answer with good practices.
    Would it finally be possible to have one?

    Did you get any answers or solutions?

  9. where there any PM answers for your question?
    I've just installed Sencha Themer (it's trial for 30 days) and made one theme (package) just like an attempt, but cannot apply it to unuGUI app


     

  10. только если кто-то со стороны решит сделать. uniGUI - это "VCL"-wrapper вокруг Secha ExtJS

  11. версия 1.90.0.1530

    к моменту публикации вопроса пробовал разное: и v5, и v4, и с fa-, и без, и этот символ, и другие.
    по предложениям выходит, что если в кнопке выводится, а в триггере коммбобокса нет, то надо просто продолжапть провобвать варианты игры со шрифтом? 😀

    https://yadi.sk/i/C1FAWCe_JdYP5Q
    вот, просто пытаюсь подставить в триггер одну из иконок, которые "рассыпаны" по разным элементам формы. ну, чтоб новый "зонтик" отсечь с его fa- и без, заодно в IconItems их же повставлял. Результат тот же.

    стоит попробовать свежий Trial 1.90.0.1537?

    Sherzod, это баг? (собственно, я с этого свой вопрос начинал)

  12. https://yadi.sk/i/UxwR5sMxKL-fkA
    https://yadi.sk/i/mJd4XoC9QK9y3Q
    https://yadi.sk/i/lQPmAtHu2FbAqQ
    https://yadi.sk/i/bRsaPaQJ_GR38A
    https://yadi.sk/i/ME7XLN23HLI0kw

    думаю, по последовательности скринов всё станет понятным. ещё раз: изменения делаются в типовом примере из FMSoft\Framework\uniGUI\Demos\Desktop\NativeImageList - FontAwesome
    (ньюбам нельзя инсертить аттачи на форуме?)

×
×
  • Create New...