/**
* 大量文字输入控件,点击弹出文字输入窗口
*
* @class App.widget.PopupTextArea
* @extends Ext.ux.form.TriggerField
* @author hongpf
* @date 2009-5-26
*/
Ext.ns('App.widget');
App.widget.PopupTextArea = Ext.extend(Ext.ux.form.TriggerField, {
trigger2Class : 'x-form-more-trigger',
/**
* @cfg {Integer} winWidth 弹出框的宽度
*/
winWidth : null,
/**
* @cfg {Integer} minWinWidth 弹出框最小宽度
*/
minWinWidth : 420,
/**
* @cfg {Integer} winHeight 弹出框高度
*/
winHeight : null,
/**
* @cfg {Integer} minWinHeight 弹出框最小高度
*/
minWinHeight : 300,
winTitle : '输入内容',
maxLength : 1000,
maxLengthText : '内容长度不能超过500个字!',
initComponent : function() {
App.widget.PopupTextArea.superclass.initComponent.call(this);
this.addEvents('select', 'cancel');
},
initWin : function() {
var width = this.winWidth || this.minWinWidth;
var height = this.winHeight || this.minWinHeight;
var showFieldLabel = this.fieldLabel.replace(/<.*>/g, '');
this.maxLengthText = showFieldLabel + '的最大长度是 ' + this.maxLength + ' 个字符,或 ' + this.maxLength / 2 + ' 个汉字!';
if (!this.win) {
if (!this.form) {
var textAreafield = new Ext.form.TextArea({
maxLength : this.maxLength,
maxLengthText : this.maxLengthText,
name : 'text'
});
this.form = new Ext.FormPanel({
frame : false,
header : false,
bodyBorder : false,
layout : 'fit',
width : width - 20,
height : height - 50,
defaults : {
width : width - 30
},
defaultType : 'textfield',
items : [textAreafield]
});
this.form.textAreafield = textAreafield;
}
this.win = new Ext.Window({
title : this.winTitle,
width : this.winWidth || this.minWinWidth,
height : this.winHeight || this.minWinHeight,
autoScroll : true,
bodyStyle : 'padding:5px;',
layout : 'fit',
closeAction : 'hide',
items : [this.form],
buttons : [{
text : "确定",
handler : this.confirm.createDelegate(this)
}, {
text : "取消",
handler : this.cancel.createDelegate(this)
}]
});
this.fireEvent("initWin", this);
}
},
onRender : function(ct, position) {
App.widget.PopupTextArea.superclass.onRender.call(this, ct, position);
if (Ext.isGecko) {
this.el.dom.setAttribute('autocomplete', 'off');
}
this.initWin();
},
confirm : function() {
var hVal = Ext.getCmp(this.hiddenName);
if (!this.form.getForm().isValid()) {
Ext.Msg.alert('提示', this.maxLengthText);
return;
}
var values = this.form.getForm().getValues();
if (!values.text) {
values.text = '';
}
var value = values.text;
this.setValue(value);
this.win.hide();
},
cancel : function() {
this.win.hide();
},
setValue : function(v) {
App.widget.PopupTextArea.superclass.setValue.call(this, v);
this.onChange();
},
validateBlur : function() {
return !this.win || !this.win.isVisible();
},
onDisable : function() {
App.widget.PopupTextArea.superclass.onDisable.call(this);
if (this.wrap) {
// this.wrap.addClass(this.disabledClass);
// this.el.removeClass(this.disabledClass);
}
},
onDestroy : function() {
if (this.win.el) {
this.win.destroy();
}
App.widget.PopupTextArea.superclass.onDestroy.call(this);
},
onTriggerClick : function() {
this.win.show();
if (this.form.rendered) {
this.form.textAreafield.setReadOnly(this.disabled || this.readOnly);
}
this.win.buttons[0].setDisabled(this.disabled || this.readOnly);
this.onFocus();
this.form.getForm().setValues({
text : this.getValue()
});
this.form.find('name', 'text')[0].focus(false, 100);
}
});
Ext.reg('popupTextArea', App.widget.PopupTextArea);
分享到:
相关推荐
s005.ZIP 一种可以弹出的按钮,具有多种形态和功能(31KB) 69,s004.ZIP 在 list 控件里进行增量查询(4KB) 70,s003.ZIP 一个进度条的控件,可以有多种形态供你选择(142KB) 71,s002.ZIP ...
s005.ZIP 一种可以弹出的按钮,具有多种形态和功能(31KB) 69,s004.ZIP 在 list 控件里进行增量查询(4KB) 70,s003.ZIP 一个进度条的控件,可以有多种形态供你选择(142KB) 71,s002.ZIP ...
创建模板点击主窗口中的菜单文件->另存为模板,将会弹出下面的对话框,帮助您将当前正在编辑的项目保存为新的模板。您需要键入新模板的名称、作者及说明,程序会根据当前视图自动创建预览图像。模板创建完成之后,...
创建模板点击主窗口中的菜单文件->另存为模板,将会弹出下面的对话框,帮助您将当前正在编辑的项目保存为新的模板。您需要键入新模板的名称、作者及说明,程序会根据当前视图自动创建预览图像。模板创建完成之后,...
s005.ZIP 一种可以弹出的按钮,具有多种形态和功能(31KB) 69,s004.ZIP 在 list 控件里进行增量查询(4KB) 70,s003.ZIP 一个进度条的控件,可以有多种形态供你选择(142KB) 71,s002.ZIP ...
12.3 使窗口只第一次访问时弹出 12.4 禁止弹出警告框 12.5 关闭窗口不提示的方法 12.6 关闭窗口时的提示 12.7 定时弹出窗口 12.8 调整窗口的大小 12.9 打开的窗口居中 12.10 打开窗口的等待提示 12.11 在打开的窗口...
12.3 使窗口只第一次访问时弹出 12.4 禁止弹出警告框 12.5 关闭窗口不提示的方法 12.6 关闭窗口时的提示 12.7 定时弹出窗口 12.8 调整窗口的大小 12.9 打开的窗口居中 12.10 打开窗口的等待提示 12.11 在打开的窗口...
API之网络函数1. API之网络函数 WNetAddConnection 创建...GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 GetSystemMenu 取得指定窗口的系统菜单的句柄 HiliteMenuItem 控制顶级菜单条目的加亮显示...
10.1.2 弹出式菜单 10.1.3 设计菜单的步骤 0.1.4 菜单编辑器 10.2 下拉菜单的设计 10.3 菜单项的控制 10.3.1 有效性控制 10.3.2 菜单项标记 10.3.3 菜单项的增减 10.4 弹出式菜单 实训 习题 第 11章 ...
+Button, Window等控件弹出位置属性的变化。 -Window的Target属性由字符串类型变为枚举类型,注意更新以前的代码:Target="_self" -> Target="Self", Target="_parent" -> Target="Parent"。 -MenuButton, ...
+Button, Window等控件弹出位置属性的变化。 -Window的Target属性由字符串类型变为枚举类型,注意更新以前的代码:Target="_self" -> Target="Self", Target="_parent" -> Target="Parent"。 -MenuButton, ...
2 <br>0003 设置程序代码行序号 3 <br>0004 开发环境全屏显示 3 <br>0005 设置窗口的自动隐藏功能 3 <br>0006 根据需要创建所需解决方案 4 <br>0007 如何使用“验证的目标架构”功能 4 ...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
独立打包,保证可解压,内含大量源码,网上搜集而来。一共10几包,每个包几十兆。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序...
独立打包,保证可解压,内含大量源码,网上搜集而来。一共10几包,每个包几十兆。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序...
独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、...
独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、...
独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、...
修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。 5. 修改扩展界面支持库一,解决树形框...
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...