EDIT (last ! :-) :これを回避するには、UI 全体を absolutePanel に配置します (thx megabyte1024)。表示領域全体に背景色を設定できないため、完璧ではありませんが、少なくともはるかに快適です。(オンライン テスト アプリへのリンクはこの新しいバージョンで更新されます) および最終バージョンのスクリーン キャプチャ... はるかに優れています :-)
scrollPanel を持つ GAS で記述されたスタンドアロンの webapp があります。UI 全体はかなり小さく、ブラウザー ウィンドウの (小さい) 表示領域の一部しか占めていません。
気になるのは、ブラウザウィンドウに常に水平スクロールバーと垂直スクロールバーの両方があり、マウスまたはトラックパッドを使用してUIウィンドウでスクロールパネルをスクロールするとUIコンテンツに干渉することです...だから、私の質問は: これを回避する方法、スクロールバーを追加する必要がないこと、またはより小さな「webapp 領域」を定義する必要がないことをブラウザーに伝える方法はありますか?
これらのスクロール バーのサイズは、最後の 1 つがブラウザー ウィンドウより小さい限り、UI パネルのサイズから完全に独立していることに注意してください。
これは、私が言っていることを説明するためのスクリーン キャプチャです (詳細であることは理解していますが、このアプリの使用が不快になる場合があります ;-) アプリの公開バージョンへのリンクもあります。
私が解決したいもう 1 つの詳細は、この UI の上部のフォントの色です。これらは、編集可能にしたくないため、「読み取り専用」に設定した textBoxes です (ユーザーがこの読み取り専用ステータスの副作用は、フォントが「灰色」になることです...この「偽のテーブル」で同じ側面(色を除く)を維持しながら、それを回避する方法はありますか?
編集:テキストの色に関する2番目の質問を見つけました:.setStyleAttribute('color','#000000')
それと同じくらい簡単です...以前に見つけられなかったのはあまりにも愚かです;-)
注 2 : 興味深いことに、GUI ビルダーで設計された UI には同じ問題はありません ...
EDIT2:doGet部分のコードは次のとおりです(機能なしで実行するように変更されていますが、表示されるように変更されています):
var key='0AnqSFd3iikE3dFV3ZlF5enZIV0JQQ0c1a3dWX1dQbGc'
var ss = SpreadsheetApp.openById(key)
var sh = ss.getSheetByName('Sheet1')
var idx = 0
var data = ss.getDataRange().getValues();
var len = data.length;
var scrit = ['All fields','Name','Lastname','Postal Adress','ZIP code','City','Country','email','phone#']
//public version
function doGet() {
var app = UiApp.createApplication().setTitle("BrowseList Test")
.setHeight(420).setWidth(800).setStyleAttribute("background-color","beige").setStyleAttribute('padding','20');
var title = app.createHTML('<B>DATABASE User Interface</B>').setStyleAttribute('color','#888888');
app.add(title);
var scroll = app.createScrollPanel().setPixelSize(750,150)
var vpanel = app.createVerticalPanel();
var cell = new Array();
var cellWidth = [45,135,150,250,50,100]
var row = new Array();
var cHandler = app.createServerHandler('showpicked').addCallbackElement(scroll);
for(vv=0;vv<15;++vv){
row[vv]=app.createHorizontalPanel();
vpanel.add(row[vv]);
for(hh=0;hh<cellWidth.length;++hh){
cell[hh+(vv)*cellWidth.length]=app.createTextBox().setWidth(cellWidth[hh]+"").setTitle('Click to show below')
.setReadOnly(true).setId((hh+vv*cellWidth.length)+'').addClickHandler(cHandler).setStyleAttribute('background','#eeeeff').setStyleAttribute('color','#000000');
row[vv].add(cell[hh+(vv)*cellWidth.length])
}
}
app.add(scroll.add(vpanel))
// Initial populate
var resindex = new Array()
for(vv=0;vv<15;++vv){
resindex.push(vv+1)
for(hh=0;hh<cellWidth.length;++hh){
var rowpos=vv+1+idx
var cellpos = hh+vv*cellWidth.length
cell[cellpos].setValue(data[rowpos][hh]);
}
}
var rHandler = app.createServerHandler('refresh');
//
var slist = app.createListBox().setName('critere').setId('slist').addClickHandler(rHandler);
for(nn=0;nn<scrit.length;++nn){
slist.addItem(scrit[nn]);
}
var search = app.createTextBox().setName('search').setId('search').setTitle('becomes yellow if no match is found');
var modeS = app.createRadioButton('chkmode','strict').setId('chkmodes').addClickHandler(rHandler);
var modeG = app.createRadioButton('chkmode','global').setValue(true).setId('chkmodeg').addClickHandler(rHandler);
var letter = app.createRadioButton('show','letter').setValue(true).setId('letter').addClickHandler(rHandler);
var raw = app.createRadioButton('show','raw data').setId('raw').addClickHandler(rHandler);
var index = app.createHTML('found/'+len).setId('index').setStyleAttribute('color','#aaaaaa');
var grid = app.createGrid(2,10).setWidth('750');
grid.setWidget(1, 0, app.createLabel('search'));
grid.setWidget(1, 1, search);
grid.setWidget(1, 2, modeS);
grid.setWidget(1, 3, modeG);
grid.setWidget(1, 5, slist);
grid.setWidget(1, 6, app.createLabel('show mode'));
grid.setWidget(1, 7, letter);
grid.setWidget(1, 8, raw);
grid.setWidget(1, 9, index);
app.add(grid);
var hidden = app.createHidden('hidden').setId('hidden').setValue(resindex.toString());
cHandler.addCallbackElement(grid).addCallbackElement(scroll).addCallbackElement(hidden);
var result = app.createRichTextArea().setPixelSize(745,160).setId('result')
.setStyleAttribute('background','white').setStyleAttribute('font-family',"Arial, sans-serif")
.setStyleAttribute('font-size','small');
result.setHTML('test ui');
app.add(result).add(hidden);
var sHandler = app.createServerHandler('searchH').addCallbackElement(grid).addCallbackElement(scroll);
search.addKeyUpHandler(sHandler);
rHandler.addCallbackElement(grid).addCallbackElement(scroll);
slist.addChangeHandler(rHandler);
return app
}