Jump to content

x11

uniGUI Subscriber
  • Posts

    2823
  • Joined

  • Last visited

  • Days Won

    14

Everything posted by x11

  1. x11

    Image jfif

    Judging by this message, nothing needs to be done? http://forums.unigui.com/index.php?/topic/18034-как-скачать-log-файл-из-папки-uniservermodulelogfullpath/&tab=comments#comment-98920
  2. x11

    Image jfif

    And what about webp?
  3. Я пока вижу пользу от HyperServer только в одном случае - это загрузка exe-файла серверной части, ну т.е. обновление бэкэнда. Да, это действительно удобно. Подключенные пользователи не отваливаются и продолжают работать, а новые подключаются уже к новой версии *.exe. Но не нужно забывать, что на бэкэнде еще может быть куча файлов, папок и/или база данных, т.е. можно было бы как-то выгрузить на сервер какой-нибудь архив, чтобы потом его распаковать и распределить всё по нужным папкам, но такого функционала нет, т.е. и обновление пока еще неполноценное. HyperServer может запустить 2-3-5 копий моего приложения на сервере, но зачем это нужно, ведь процессор все равно у компьютера один? Какой реально толк от трех параллельно запущенных приложений? Еще есть какой-то монитор ресурсов, тоже может быть полезная вещь, пока не знаю. А что еще полезного можно извлечь из HyperServer`а? Спасибо.
  4. Еще пример с RemoteQuery в событии OnRemoteQueryEx() procedure TfmmEditObjectParent.comboStreetsRemoteQueryEx(Sender: TComponent; const QueryString: string; Result: TStrings); begin comboOnRemoteQuery3(Sender as TUniCustomDBLookupComboBox, 'STREETS', QueryString, Result); end; procedure comboOnRemoteQuery3(combo: TUniCustomDBLookupComboBox; const sTable, QueryString: string; var Result: TStrings); Var n: integer; q: TUniQuery; begin q := combo.ListSource.DataSet as TUniQuery; q.Close; // выбрать из справочника нужные данные q.SQL.Text := 'SELECT ID, NAME FROM ' + sTable + ' WHERE UPPER(NAME) CONTAINING(UPPER(:NAME)) AND DELETED IS DISTINCT FROM 1 ORDER BY NAME'; if (QueryString.Length <= 2) and (QueryString <> '*') then// если пользователь ввел меньше 2 символов, но не звездочку, то поиск не начинать exit; if (QueryString = '*') or (QueryString = '[null]') then // если пользователь ввел звездочку или нажал на кнопку раскратия выпадающего списка - значит нужно выбрать из базы всеп значения q.Params[0].AsString := '' else q.Params[0].AsString := QueryString;// искомое название, что ввел пользователь q.Open; if q.RecordCount = 0 then begin Result.Add(constEmptyRes);// если в базе нет походящих записей, показать ему "данных нет" exit; end; n := 0; q.First; while not q.Eof do begin Result.AddObject(q.Fields[1].AsString, Pointer(q.Fields[0].AsInteger));// добавляем в выпадающий список имена и ID q.Next; inc(n); if N > 100 then Break;// макс. 100 строк end; end; В событии OnGetKeyValueEx() procedure TfmmEditObjectParent.comboStreetsGetKeyValueEx(const Sender: TComponent; const Value: string; var KeyValue: Variant); var lcb: TUniCustomDBLookupComboBox; begin lcb := Sender as TUniCustomDBLookupComboBox; if (lcb.Items.Count = 0) or (lcb.ItemIndex = -1) then exit; lcb.Tag := integer(lcb.Items.Objects[lcb.ItemIndex]);// что выбрал польлователь - записываем в TAG id из базы if lcb.Tag > 0 then lcb.KeyValue := lcb.Tag;// выбираем нужную запись по ID end;
  5. ну я давал здесь несколько примеров, как работать со свойством Objects http://forums.unigui.com/index.php?/topic/17909-unicolorcombobox/page/2/&tab=comments#comment-99611 Если кратко, используем свойства AddObject для наполнения и Objects для получения
  6. function focus(sender, e, eOpts) { sender.blur(); } in (TUniEventStrings)
  7. try blur http://forums.unigui.com/index.php?/topic/14514-не-показывать-виртуальную-клавиатуру-для-unimspinner/&tab=comments#comment-78786
  8. я верю, а почему вы не хотите показать как? на примере
  9. @Sherzod неудобство в том, что кнопки ооочень маленькие и расположены между собой далеко. Было бы значительно удобнее вот так: с большими кнопками, которые расположены рядом. Юзабилити же!
  10. tunimImage.JSInterface.JSConfig('cls', ['imgPhoto']); or tunimImage.LayoutConfig.cls := 'imgPhoto'; then css: .imgPhoto img { width: 100%; height: 100%; object-fit: scale-down; }
  11. Первая проблема в том, что меню не хочет автоматически скрываться после нажатия на какой-нибудь пункт. Вторая проблема в том, что я добавил код: procedure TfmmSearchResults.popupMnuResClick(Sender: TUnimMenuItem); begin popupMnuRes.Visible := False; end; но меню все равно остается висеть на экране, даже у чужой формы, перекрывая ее
  12. Мне кажется, что проблему у меню тоже связана со свойством ServerModule.Options.soControlNameAsId как описано в этой теме и что-то мне подсказывает, что во всем фреймворке есть и другие проблемы, связанные с этим свойством, когда оно включено
  13. Ну да, есть разница, в UnimFormReady() работает. Спасибо.
  14. Нет. В UnimFormShow() Есть большая разница?
  15. Нет, 0 все равно остается
  16. Подскажите, а как можно вместо нулевого значения, т.е. вместо 0, выводить свой placeholder, свой текст? Ну т.е. как добавить свой placeholder я знаю, но он не отображается, т.к. там введено значение 0.
  17. Сделайте заодно и пример, как программно листать внутренние панели вперед-назад. Чтобы на главной панели было 2 кнопки (вперед-назад) и пользователь листает внутренние панели этими двумя кнопками. Это будет полезно для организации галереи, т.к. в uniGUI пока что отсутствует компонента-галерея.
  18. Спасибо. Получилось. Извиняюсь за свою невнимательность
  19. правильно так?? function beforeInit(sender, config) { config.defaults = { listeners: { expand: function() { ajaxRequest(sender, "_expand", ["uname="+sender.layout.getExpanded()[0].uname]); } } }; config.header = { defaults: { width: 25 } }; }
  20. добавил код к сетке uniDBGrid и здесь получилось function beforeInit(sender, config) { config.header = { defaults: { width: 25 } } } но, как видите, здесь код без моего кода, без события listeners
  21. Конечно. Я об этом и написал, что без CSS обрезает иконки. И картинку приложил. Вот, еще раз перепроверил на всякий случай. CSS закоментировал. У панели добавил код width: 25,
×
×
  • Create New...