Jump to content

EOR

uniGUI Subscriber
  • Posts

    27
  • Joined

  • Last visited

Everything posted by EOR

  1. Все заработало. Забыл отписаться просто. DFM object MyUniForm: TUniForm Left = 0 Top = 0 Width = 500 Height = 400 Color = clSkyBlue object UniMemo1: TUniMemo Left = 10 Top = 10 Width = 200 Height = 80 Hint = '' Color = clMoneyGreen Lines.Strings = ( 'UniMemo1' 'UniMemo1' 'UniMemo1' 'UniMemo1' 'UniMemo1') TabOrder = 0 end object Label1: TUniLabel Left = 220 Top = 10 Width = 31 Height = 13 Caption = 'Label1' end object Button1: TUniButton Left = 220 Top = 30 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = UniButton1Click <-- не работает end object ListBox1: TUniListBox Left = 10 Top = 110 Width = 200 Height = 60 TabOrder = 1 Items.Strings = ( 'ListBox1' 'ListBox1' 'ListBox1') end end Если интересно выложу демку. Только пока с обработчиками событий на контролах не разобрался. Чего то там пока все глухо
  2. Приветствую всех, Пытаюсь реализовать сабж. Подгрузка ресурса (панельки с мемо на ней) проходит нормально без ошибок, но в браузере почему-то отображается не правильно. Вот содержимое MyUniPanel.dfm object MyUniPanel: TUniPanel Left = 0 Top = 0 Width = 500 Height = 400 object UniMemo1: TUniMemo Left = 10 Top = 10 Width = 200 Height = 100 Hint = '' Lines.Strings = ( 'UniMemo1' 'UniMemo1' 'UniMemo1' 'UniMemo1' 'UniMemo1') TabOrder = 0 end end Вот код, который подгружает панель procedure TMainForm.UniButton1Click(Sender: TObject); var StrStream: TStringStream; Component: TUniPanel; begin StrStream := TStringStream.Create; try StrStream.LoadFromFile(UniServerModule.FilesFolderPath + 'MyUniPanel.dfm'); Component := TUniPanel(StringToComponent(StrStream.DataString)); Component.Parent := MainForm; Component.Align := alClient; Application.InsertComponent(Component); finally StrStream.Free; end; end; Что я делаю не так??? Заранее спасибо. Тестовый проект прикладываю. UniGUI_DFM_Load_Test.zip
  3. Это было просто для примера. Чтобы понять что у UniMemo1лежит в VCLControl. Теоретически у компонентов UniGUI есть ссылка на компонент, отображаемый в дизайнере Delphi IDE вместо реального компонента UniGUI. То есть вместо TuniMemo будет отображен TMemo и т.п. Согласно документации http://www.unigui.com/doc/online_help/api/!!MEMBERTYPE_Properties_uniGUIBaseClasses_TUniGUIBaseControl.html Свойство VCLControl VCLControl is a design time instance of a VCL control which visually represent UniGUI control in designer. This control is provided to enhance developer's experience when designing forms. For some controls such as TUniDBGrid VCLControl also provide additional functionalities such as column re-sizing. Что примерно означает: VCLControl - это экземпляр элемента управления VCL во время разработки, который визуально представляет элемент управления UniGUI в дизайнере. Этот элемент управления предназначен для повышения удобства разработки форм для разработчиков. Для некоторых элементов управления, таких как TUniDBGrid, VCLControl также предоставляет дополнительные функции, такие как изменение размера столбца. Таким образом здесь должны быть ссылки на экземпляры TMemo, TButton и т.д. а здесь мы имеем TCustomTransparentControl. Это не работает, или я просто не умею его готовить :) ЗЫ. А вот в дизайнере Delphi IDE это работает
  4. LMD Designer использует для редактирования формы в общем случае потомков обычной стандартной формы TForm. Поэтому вопрос состоит в том, что как нормально отобразить на обычной форме TForm контролы UiniGUI в том виде в котором мы его видим в редакторе форм Delphi IDE. Но при запущенном приложении отображение нормально не происходит: Может есть какое-то свойство компонента UniGUI которое отвечает за отображение его в дизайн тайме типа VCLControl, которое почему-то не работает. В выражении TMemo(UniMemo1.VCLControl).Lines.Text := '111'; // TMemo(UniMemo1.VCLControl).Lines = nil Что как мне кажется не правильно. Нет? И вообще при вставке любого UniGUI компонента с палитры UniGUI Standard (см. рисунок) выясняется, что имя класса (c.VCLControl.ClassName) у всех один и тот же: TCustomTransparentControl И соответственно нормально не приводится к соответствующим типам TMemo, TButton
  5. Может кто подскажет почему в IDE Delphi в режиме проектирование формы UniGUI uniMemo1 - отображается нормально. Тот же контрол UniGUI uniMemo1 после запуска приложения Как включить отображение UniGUI uniMemo1 на обычной форме в режиме VCLMode = true на обычной VCL форме TForm??? Спасибо.
  6. Пробую написать редактор форм для UniGUI контролов для последующей динамической подгрузки файла формы в run-time. Но после размещения на форме дизайнера некоторые компоненты UniGUI не правильно отображаются (только как рамки). Контролы UniGUI - в design mode. Свойства VCLMode = true, WebMode = false, csDesigning in ComponentState = true Как сделать нормальное отображение компонента при вставке и изменении свойств в инспекторе объектов? Редактор форм написан с использованием пробной версии LMD DesignPack https://www.lmdinnovative.com/products/vcl/lmddesignpack/ Демо проект UniGUIandLMDDesigner.zip работает только при запущеном Delphi Заранее спасибо.
  7. Да. Это отлично работает. Большое спасибо.
  8. Прикрепляю тестовый проект. UniDBVGridCheckBoxedTitles.zip
  9. Вопрос с отображением CheckBox'ов поверх грида решен. Добавляем обработчик в UniDBVerticalGrid / ClientEvent / Extevent / OnAfterrender: function OnAfterrender(sender) { sender.getEl().setStyle('z-index','0'); } Остался последний вопрос: Как сделать отступ текста в заголовке uniDBGridColumn чтобы убрать наложение текста и CheckBox'ов? Спасибо заранее.
  10. Создаю динамически CheckBox'ы: // Создаем чекбоксы for i := 0 to UniDBVerticalGridVars.DBColumns.Count - 1 do begin uniDBGridColumn := TUniDBGridColumn(UniDBVerticalGridVars.DBColumns[i]); // if DataController.MacroList.Count > 0 then begin CheckBox := TUniCheckBox.Create(Self); with TUniCheckBox(InsertControl(CheckBox)) do begin; Top := 20 + i * 10; // Как найти смещение для попадания в нужную строку? Left := 20 + i * 10; // OnChange := UniCheckBoxChange; end; end; end; CheckBox'ы создаются но они перекрываются UniDBVerticalGrid'ом, то есть находятся под ним и невидимы. Методы CheckBox.BringToFront и UniDBVerticalGrid.SendToBack не работают. ВОПРОСЫ: 1. Как отобразить CheckBox'ы поверх грида??? 2. Как найти смещение для попадания CheckBox'а в нужную строку? 3. Как сделать отступ в заголовке uniDBGridColumn чтобы освободить место для CheckBox'а? Спасибо заранее. UPD: Пока увеличил отступ от левого края у грида. CheckBox'ы видно, но выглядит это очень коряво Вопросы, заданные выше, все еще актуальны. UPD2: Пробую изменить z-index для UniDBVerticalGrid: UniSession.AddJS('Ext.onReady(function(){'+UniDBVerticalGrid.JSName+'.getEl().setStyle(''z-index'','+IntToStr(99999)+')});'); Получаю ошибку: UniGUI 1.90.0.1526 Что делать???
  11. Здравствуйте. Существует две реализации одного проекта "Desktop" версия и "Web" версия. Для реализации функционала работы с вводом параметров запроса в базу данных в Web версии проекта необходимо отобразить CheckBox в заголовке поля (TUniDBGridColumn). Например вот так это реализовано в "Desktop" версии проекта (используется TcxDBVerticalGrid - DevExpress VCL): ВОПРОСЫ: 1. Есть ли возможность реализовать такое в UniDBVerticalGrid? Обходные пути через ClientEvents -> ExtEvents? 2. Как обработать изменение состояния CheckBox (OnChange)? Заранее спасибо.
  12. Нет конечно это я для наглядности привел. Я делаю так: За ссылку спасибо. Посмотрим.
  13. Работает если перед "=" поставить пробел. Main.dfm object UniDBTreeGrid1: TUniDBTreeGrid ... LayoutConfig.Cls = ' = custom-row' ... Большое спасибо. И чтобы не плодить темы еще вопрос: Следующий код в моем тестовом приложении (исходники прикладывал) не работает в FireFox. Ошибка: document.execCommand('cut/' copy) было отклонено, поскольку оно не вызывалось из короткого запуска обработчика событий, созданного пользователем procedure TMainForm.UniFormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin // Ctrl+C if (Key = 67 {'C'}) and (ssCtrl in Shift) then begin UniSession.AddJS( // Не работает в FireFox // Ошибка: document.execCommand('cut/' copy) было отклонено, поскольку оно не вызывалось из короткого запуска обработчика событий, созданного пользователем //Почему? ' var focus = document.activeElement;' + ' var textarea = document.getElementById("' + UniMemo1.JSName + '_id-inputEl"); '+ ' textarea.select(); '+ ' try { '+ ' var successful = document.execCommand(''copy''); '+ ' if(successful) console.log(''Copied!''); '+ ' else console.log(''Unable to copy!''); '+ ' } catch (err) { '+ ' console.log(''Unsupported Browser!''); '+ ' } ' + ' focus.focus(); // Возвращаем фокус туда, где был' ); end; end; Почему?
  14. Да. Я имею ввиду изменение стиля (цвета фона/шрифта) нескольких выделенных (selected) строк в компоненте UniDBTreeGrid1:
  15. Здравствуйте, Подготовил приложение, демонстрирующее проблему. Версия UniGUI 1509. Описание того, что уже сделано : 1. UniDBTreeGrid1: ClientEvents -> UniEvents -> beforeInit config.selModel = { type: 'checkboxmodel', mode: 'MULTI' }; 2. UniDBTreeGrid1.Options -> dgDontShowSelected=True (Если этого не сделать, то при получении данных в UniDBTreeGrid1 получим ошибку: Could not set cell position: row: [0], column:[1] :Cannot read property 'store' of undefined.) 3. Выделенные строки для передачи в буфер обмена. В версии 1506 не нормально работало. Выделенные строки выделялись и сразу выделение снималось и визуально выделенных строк не было видно так как галочка с checkbox'а тоже снималась. После обновления до версии 1509 эта проблема ушла. Выделение остается постоянным и не снимается галочка с checkbox'а. По CTRL+C содержимое ячеек копируется в буфер обмена: Обработчики UniDBTreeGrid1: ClientEvents -> ExtEvents -> select/deselect формируются динамически. 4. Пытаюсь изменить стиль выделенных ячеек через UniServerModule.CustomCSS: /* DBTreeGrid Selected row*/ .custom-row .x-grid-cell { background-color: #B299CC !important; } .custom-row .x-grid-cell-selected { background-color: greenyellow !important; } Стили назначаются строкам динамически в событиях UniDBTreeGrid1: ClientEvents -> ExtEvents -> select/deselect Но стиль CSS не применяется к выделенным строкам 5. В связи с этим вопрос несколько меняется. Как теперь мне изменить цвет выделенных ячеек на кастомный? Что-нибудь типа например такого: Заранее спасибо. DBTreeGrid_Multiselect.zip
  16. Хорошо. Завтра подготовлю приложение демонстрирующее проблему и описание того, что уже сделано.
  17. Здравствуйте. Возникла необходимость воспользоваться компонентом TUniDBTreeGrid. Пользователь должен выделить мышкой несколько строк в UniDBTreeGrid и скопировать их в буфер обмена для последующей вставки в MS World, MS Excel или куда то еще. Я прочитал по интересующему вопросу топики (темы) и Сделал как там советовали и все заработало, но не так как ожидалось. То есть я получаю в буфер обмена нужные данные, но пользователь не видит, какие строки он выделил в UniDBTreeGrid. То есть нет визуального отображения выделенных строк. Это понятно так как включена опция UniDBTreeGrid.Options -> dgDontShowSelected=True Попробовал подкрашивать выделенные строки с помощью CustomCSS как описано здесь: Но тоже ничего не вышло. Стиль "custom-row" вроде бы применяется (видно в отладчике Chrome), но изменения не отображаются в браузере. Подскажите пожалуйста как мне решить эту проблему с отображением выделенных (selected) строк в компоненте UniDBTreeGrid. Заранее спасибо.
  18. Разобрался сам. Извините. function checkPlugin (form_name) { .... ajaxRequest(form_name.form, "EventName", ["result=" + result]); .... }
  19. Здравствуйте, Есть необходимость вызывать внешнюю функцию из двух разных форм. Как сделать универсальный ajaxRequest, чтобы передавая в параметре этой функции имя формы получать правильную форму- получатель? Что-нибудь такое: Delphi: ... UniSession.AddJS('checkPlugin(' + Self.Name + ')'); Внешний JS: function checkPlugin (form_name) { .... ajaxRequest(Ext.getForm(form_name).form, "EventName", ["result=" + result]); .... } или так не получится? Спасибо.
  20. Я все проверил. Так работает. Большое спасибо.
  21. Интересно откуда они там появились? Их там не должно быть по стандарту Base64. https://en.wikipedia.org/wiki/Base64
  22. Поспешил и не проверил на переносимость. Перевыложил архив в предыдущем сообщении. Спасибо.
  23. Готово.Base64AjaxError.zip
  24. Хорошо, но минут 15 на подготовку нужно
  25. Здравствуйте Возникает ошибка "Invalid or unexpected token" при попытке вызвать javascript функцию из внешнего файла подключенного в CustomFiles procedure TForm1.UniButton1Click(Sender: TObject); var s,s1,s2: string; begin try s1 := StringOfChar('Z', 100000); // Long String 100 000 chars s2 := EncodeString(s1); //Base64 string 100 000 chars s := 'ExternalFuncWithParameters(0, "' + s2 + '")'; UniSession.SendResponse(s, True); finally end; end; Такая же ошибка при использовании UniSession.AddJS(s); Прошу помощи клуба. Заранее спасибо
×
×
  • Create New...