EOR
-
Posts
27 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Posts posted by EOR
-
-
Приветствую всех,
Пытаюсь реализовать сабж.
Подгрузка ресурса (панельки с мемо на ней) проходит нормально без ошибок, но в браузере почему-то отображается не правильно.
Вот содержимое 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;
Что я делаю не так???
Заранее спасибо. Тестовый проект прикладываю.
-
37 minutes ago, x11 said:
Тут ничего не понял про
?
Это было просто для примера. Чтобы понять что у UniMemo1лежит в VCLControl.
Теоретически у компонентов UniGUI есть ссылка на компонент, отображаемый в дизайнере Delphi IDE вместо реального компонента UniGUI. То есть вместо TuniMemo будет отображен TMemo и т.п.
Согласно документации http://www.unigui.com/doc/online_help/api/!!MEMBERTYPE_Properties_uniGUIBaseClasses_TUniGUIBaseControl.html
Свойство
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 это работает
-
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
-
Может кто подскажет почему в IDE Delphi в режиме проектирование формы UniGUI uniMemo1 - отображается нормально.
Тот же контрол UniGUI uniMemo1 после запуска приложения
Как включить отображение UniGUI uniMemo1 на обычной форме в режиме VCLMode = true на обычной VCL форме TForm???
Спасибо.
-
Пробую написать редактор форм для 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
Заранее спасибо.
-
Да. Это отлично работает.
Большое спасибо.
-
-
Вопрос с отображением CheckBox'ов поверх грида решен.
Добавляем обработчик в UniDBVerticalGrid / ClientEvent / Extevent / OnAfterrender:
function OnAfterrender(sender) { sender.getEl().setStyle('z-index','0'); }
Остался последний вопрос:
Как сделать отступ текста в заголовке uniDBGridColumn чтобы убрать наложение текста и CheckBox'ов?
Спасибо заранее.
-
Создаю динамически 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
Что делать???
-
Здравствуйте.
Существует две реализации одного проекта "Desktop" версия и "Web" версия.
Для реализации функционала работы с вводом параметров запроса в базу данных в Web версии проекта необходимо отобразить CheckBox в заголовке поля (TUniDBGridColumn).
Например вот так это реализовано в "Desktop" версии проекта (используется TcxDBVerticalGrid - DevExpress VCL):
ВОПРОСЫ:
1. Есть ли возможность реализовать такое в UniDBVerticalGrid? Обходные пути через ClientEvents -> ExtEvents?
2. Как обработать изменение состояния CheckBox (OnChange)?
Заранее спасибо.
-
On 11/22/2019 at 7:45 PM, Sherzod said:
Не понятно, Вы делаете изменения в dfm файле?
Нет конечно это я для наглядности привел. Я делаю так:
За ссылку спасибо. Посмотрим.
-
Работает если перед "=" поставить пробел.
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;
Почему?
-
Да. Я имею ввиду изменение стиля (цвета фона/шрифта) нескольких выделенных (selected) строк в компоненте UniDBTreeGrid1:
-
Здравствуйте,
Подготовил приложение, демонстрирующее проблему. Версия 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. В связи с этим вопрос несколько меняется. Как теперь мне изменить цвет выделенных ячеек на кастомный? Что-нибудь типа например такого:
Заранее спасибо.
- 1
-
22 hours ago, Sherzod said:
Здравствуйте,
Вы можете прикрепить простой тестовый случай, то что сделано на данный момент?!
Хорошо. Завтра подготовлю приложение демонстрирующее проблему и описание того, что уже сделано.
-
Здравствуйте.
Возникла необходимость воспользоваться компонентом TUniDBTreeGrid. Пользователь должен выделить мышкой несколько строк в UniDBTreeGrid и скопировать их в буфер обмена для последующей вставки в MS World, MS Excel или куда то еще.
Я прочитал по интересующему вопросу топики (темы)
и
Сделал как там советовали и все заработало, но не так как ожидалось. То есть я получаю в буфер обмена нужные данные, но пользователь не видит, какие строки он выделил в UniDBTreeGrid. То есть нет визуального отображения выделенных строк.
Это понятно так как включена опция UniDBTreeGrid.Options -> dgDontShowSelected=True
Попробовал подкрашивать выделенные строки с помощью CustomCSS как описано здесь:
Но тоже ничего не вышло. Стиль "custom-row" вроде бы применяется (видно в отладчике Chrome), но изменения не отображаются в браузере.
Подскажите пожалуйста как мне решить эту проблему с отображением выделенных (selected) строк в компоненте UniDBTreeGrid.
Заранее спасибо.
-
Разобрался сам. Извините.
function checkPlugin (form_name) { .... ajaxRequest(form_name.form, "EventName", ["result=" + result]); .... }
-
Здравствуйте,
Есть необходимость вызывать внешнюю функцию из двух разных форм. Как сделать универсальный ajaxRequest, чтобы передавая в параметре этой функции имя формы получать правильную форму- получатель? Что-нибудь такое:
Delphi: ... UniSession.AddJS('checkPlugin(' + Self.Name + ')'); Внешний JS: function checkPlugin (form_name) { .... ajaxRequest(Ext.getForm(form_name).form, "EventName", ["result=" + result]); .... }
или так не получится?
Спасибо.
-
Я все проверил. Так работает.
Большое спасибо.
-
Интересно откуда они там появились?
Их там не должно быть по стандарту Base64. https://en.wikipedia.org/wiki/Base64
-
Поспешил и не проверил на переносимость.
Перевыложил архив в предыдущем сообщении.
Спасибо.
-
-
Хорошо, но минут 15 на подготовку нужно
-
Здравствуйте
Возникает ошибка "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);
Прошу помощи клуба. Заранее спасибо
Динамическая загрузка компонентов в приложение из ресурсов *.DFM
in Russian
Posted
Все заработало. Забыл отписаться просто.
DFM
Если интересно выложу демку.
Только пока с обработчиками событий на контролах не разобрался. Чего то там пока все глухо