x11 Posted December 30, 2020 Share Posted December 30, 2020 На фрейме лежат несколько панелей, в нижней панели лежит сетка DBGrid с пагинатором. Так вот... получается так, что StatusBar перекрывает пагинатор. Тестовый проект приложил. Спасибо. uniGUI_StatusBar.zip Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 1 hour ago, x11 said: На фрейме лежат несколько панелей, в нижней панели лежит сетка DBGrid с пагинатором. Так вот... получается так, что StatusBar перекрывает пагинатор. У Вас же "два" статусбара. Вторая, которая расположена на основной форме, перекрывает. Тестовый случай работает корректно. Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 все верно, один для фрейма, другой - общий - для формы много фреймов, у каждого - своя панель статуса, так и задумано Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 я считаю, что некорректно Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 1 hour ago, x11 said: я считаю, что некорректно А если высота фрейма больше основной, то как в этом случае!? Как минимум у Вас должно быть выравнивание, например: UniFrame1 := TUniFrame1.Create(self); UniFrame1.Parent := self; UniFrame1.Align := alClient; //<------- UniFrame1.Show; Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 а у всех фреймов Align := alClient просто по умолчанию при создании поэтому вопрос: а какой смысл это указывать в коде? Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 ок, указал еще и в коде , всё равно не помогает Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 Just now, x11 said: а у всех фреймов Align := alClient просто по умолчанию при создании поэтому вопрос: а какой смысл это указывать в коде? 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 А, ну да, вы правы. Просто у меня фреймы наследуются от одного родителя, у которого по умолчанию указано alClient. В любом случае, указание в коде не помогает. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 Также у Вас: MainForm.AlignmentControl = uniAlignmentClient Установите: MainForm.layout = fit UniFramexx.AlignmentControl = uniAlignmentClient 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 если переводить все на uniAlignmentClient, в том числе и uniPageControl, то теперь сетка "наезжает" на заголовок панели http://prntscr.com/wd82pg хотя внизу теперь ничего не наезжает у нижней сетки высота и ширина 100%, хотя я и убирал эти значения, все равно сетка наезжает на заголовок панели, у самой панели: uniAlignmentClient + fit. Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 Всё оказалось сложнее, если убрать эту строку кода (что ниже), то все норм const constHeaderInsert = 'header.insert'; ... pnl.JSInterface.JSCall(constHeaderInsert, [1, Nav.JSControl]);// 1 - за заголовком,Nav - DBNavigator т.е. когда добавляешь навигатор, то есть проблема Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 Хмм. При использовании uniAlignmentServer, да, скорее всего проблема будет, при "выравнивании".... Но при использовании uniAlignmentClient, проблем не должно быть. Вы должны использовать соответствующие лайоуты и аттрибуты... Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 Хорошо, я сейчас пытаюсь экспериментировать. В этот пример, что в первом сообщении, я добавил UniDBNavigator и код procedure TUniFrame1.UniFrameReady(Sender: TObject); begin uniPanel2.JSInterface.JSCall('header.insert', [0, UniDBNavigator1.JSControl]); end; теперь другая проблема - в браузере пустая страница, ни исключений, ни ошибок, ничего... как узнать где и какая ошибка, из-за чего? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 А в консоли браузера? Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 а, точно, про консоль забыл: Quote Uncaught TypeError: O32.header.insert is not a function Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 10 minutes ago, x11 said: uniPanel2. TitleVisible = True ? Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 включил заголовок, теперь Quote Uncaught TypeError: O32.header is undefined Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 3 minutes ago, x11 said: Uncaught TypeError: O32.header is undefined OK. Попробуйте другой метод: uniPanel2.JSInterface.JSCallDefer('header.insert', [0, UniDBNavigator1.JSControl], 300); Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 запустилось и вот он, выглядывает навигатор Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 2 minutes ago, x11 said: запустилось и вот он, выглядывает навигатор Навигатор в HiddenPanel'е? Quote Link to comment Share on other sites More sharing options...
x11 Posted December 30, 2020 Author Share Posted December 30, 2020 нет, я не знал, что нужно так делать, но всё равно это не решило проблему вот тестовый проект https://files.dp.ua/ru/NXaSx Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 30, 2020 Share Posted December 30, 2020 2 minutes ago, x11 said: вот тестовый проект https://files.dp.ua/ru/NXaSx Я проанализирую "завтра"... Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 31, 2020 Share Posted December 31, 2020 8 hours ago, x11 said: нет, я не знал, что нужно так делать, но всё равно это не решило проблему вот тестовый проект https://files.dp.ua/ru/NXaSx Пока, попробуйте так: procedure TUniFrame1.UniFrameReady(Sender: TObject); begin // uniPanel2.JSInterface.JSCall('header.insert', [0, UniDBNavigator1.JSControl]); with UniPanel2.JSInterface do begin JSCallDefer('header.insert', [0, UniDBNavigator1.JSControl], 300); JSCallDefer('header.setHeight', [UniDBNavigator1.Height+12], 320); end; end; Quote Link to comment Share on other sites More sharing options...
x11 Posted December 31, 2020 Author Share Posted December 31, 2020 работает частично, навигатор уже появляется, но наезжает на заголовок, если указать индекс 1 вместо 0, то заголовка совсем нет procedure TUniFrame1.UniFrameReady(Sender: TObject); begin with UniPanel2.JSInterface do begin JSCallDefer('header.insert', [0, UniDBNavigator1.JSControl], 300); JSCallDefer('header.setHeight', [UniDBNavigator1.Height+12], 320); end; with UniPanel2 do if TitleVisible then JSInterface.JSCode('var tm=new Ext.util.TextMetrics();'#1'.header.insert('+ (ToolButtons.Count+1).ToString +', {xtype:"tbspacer", width:'#1'.header.title.getWidth()-(tm.getWidth('#1'.getTitle())+10)});'); end; а если добавить еще и код из соседней темы, то не работает совсем: Uncaught TypeError: O32.header is undefined 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.