我有一个带有大量控件的表单,我想迭代某个面板上的所有控件并启用/禁用它们.
我试过这个:
var component: TComponent;
begin
for component in myPanel do
(component as TControl).Enabled := Value;
end;
Run Code Online (Sandbox Code Playgroud)
但那没有做任何事.原来所有组件都在表单的组件集合中,而不是它们的父对象.那么有谁知道是否有任何方法可以获得控件内的所有控件?(除了像这样的丑陋的解决方法,这是我最终必须做的):
var component: TComponent;
begin
for component in myPanel do
if (component is TControl) and (TControl(component).parent = myPanel) then
TControl(component).Enabled := Value;
end;
Run Code Online (Sandbox Code Playgroud)
有人请告诉我有更好的方法......
我现在正在使用Asp.Net mvc框架并且喜欢它与经典的asp.net方式相比.我要说的一件事是,View是否可以接受(间接)访问数据库?
例如,我使用控制器来填充自定义数据类,其中包含我认为View需要执行其工作的所有信息,但是当我将对象传递给视图时,它也会导致数据库读取.
一个快速的伪示例.
public interface IProduct
{
/* Some Members */
/* Some Methods */
decimal GetDiscount();
}
public class Product : IProduct
{
public decimal GetDiscount(){ ... /* causes database access */ }
}
Run Code Online (Sandbox Code Playgroud)
如果View可以访问Product类(它传递了一个IProduct对象),它可以调用GetDiscount()并导致数据库访问.
我在想办法防止这种情况发生.目前我只为Product
该类提供多个接口继承.相反,仅仅实现IProduct的,现在将执行IProduct
和IProductView
.IProductView将列出该类的成员,IProduct将包含可能导致数据库访问的方法调用.
"视图"只会知道IProductView
类的接口,并且无法调用导致数据访问的方法.
在将对象传递给视图之前,我还有其他关于"锁定"对象的模糊想法,但我可以预见到这种方法可以产生巨大的副作用.
所以,我的问题:
SQLAlchemy的DateTime
类型允许timezone=True
参数将非天真的日期时间对象保存到数据库,并返回它.有没有办法修改tzinfo
SQLAlchemy传入的时区,所以它可能是,例如,UTC?我意识到我可以使用default=datetime.datetime.utcnow
; 然而,这是一个天真的时间,很乐意接受有人在一个天真的基于timezone=True
本地时间的日期时间,即使我使用它,因为它使本地或UTC时间不天真没有基准时区来规范化它.我已经尝试过(使用pytz)使日期时间对象不天真,但是当我将它保存到数据库时,它又回归天真.
注意datetime.datetime.utcnow如何不能timezone=True
很好地工作:
import sqlalchemy as sa
from sqlalchemy.sql import select
import datetime
metadata = sa.MetaData('postgres://user:pass@machine/db')
data_table = sa.Table('data', metadata,
sa.Column('id', sa.types.Integer, primary_key=True),
sa.Column('date', sa.types.DateTime(timezone=True), default=datetime.datetime.utcnow)
)
metadata.create_all()
engine = metadata.bind
conn = engine.connect()
result = conn.execute(data_table.insert().values(id=1))
s = select([data_table])
result = conn.execute(s)
row = result.fetchone()
Run Code Online (Sandbox Code Playgroud)
(1,datetime.datetime(2009,1,6,0,9,36,891887))
row[1].utcoffset()
Run Code Online (Sandbox Code Playgroud)
datetime.timedelta(-1,64800)#这是我的本地时间偏移!!
datetime.datetime.now(tz=pytz.timezone("US/Central"))
Run Code Online (Sandbox Code Playgroud)
datetime.timedelta(-1,64800)
datetime.datetime.now(tz=pytz.timezone("UTC"))
Run Code Online (Sandbox Code Playgroud)
datetime.timedelta(0)#UTC
即使我将其更改为显式使用UTC:
...
data_table = sa.Table('data', metadata,
sa.Column('id', sa.types.Integer, primary_key=True),
sa.Column('date', sa.types.DateTime(timezone=True), default=datetime.datetime.now(tz=pytz.timezone('UTC')))
) …
Run Code Online (Sandbox Code Playgroud) 我在页面上有4张图片.我想在加载所有4个图像后触发JS事件.我当然无法确定将加载图像的顺序,因此我无法在最后一张图像上触发事件.一个想法是有一个计数器,但我想不出最好的方法来检查该计数器何时等于4,因为我不喜欢每200ms检查一次setTimeout()的想法.
还有其他想法吗?
我在网站上使用jQuery,所以我认为这可能会有所帮助.
这是图像HTML代码:
<img src="/images/hp_image-1.jpg" width="553" height="180" id="featureImg1" />
<img src="/images/hp_image-2.jpg" width="553" height="180" id="featureImg2" />
<img src="/images/hp_image-3.jpg" width="553" height="180" id="featureImg3" />
<img src="/images/hp_image-4.jpg" width="553" height="180" id="featureImg4" />
Run Code Online (Sandbox Code Playgroud) 我有这个结构:
struct Map
{
public int Size;
public Map ( int size )
{
this.Size = size;
}
public override string ToString ( )
{
return String.Format ( "Size: {0}", this.Size );
}
}
Run Code Online (Sandbox Code Playgroud)
使用数组时,它可以工作:
Map [ ] arr = new Map [ 4 ] {
new Map(10),
new Map(20),
new Map(30),
new Map(40)};
arr [ 2 ].Size = 0;
Run Code Online (Sandbox Code Playgroud)
但是当使用List时,它不会编译:
List<Map> list = new List<Map> ( ) {
new Map(10),
new Map(20),
new Map(30),
new Map(40)};
list [ 2 …
Run Code Online (Sandbox Code Playgroud) 我使用的是PHP 4.3.9,Apache/2.0.52
我正在尝试使登录系统工作,在登录时可以在会话中注册DB值.一旦我被重定向,我就会丢失会话变量.
我正在使用以下代码在我的登录表单页面和重定向页面上打印会话ID /值:
echo '<font color="red">session id:</font> ' . session_id() . '<br>';
echo '<font color="red">session first name:</font> ' . $_SESSION['first_name'] . '<br>';
echo '<font color="red">session user id:</font> ' . $_SESSION['user_id'] . '<br>';
echo '<font color="red">session user level:</font> ' . $_SESSION['user_level'] . '<br><br>';
Run Code Online (Sandbox Code Playgroud)
这是我的浏览器从我的登录页面打印的内容(我只是将标题重定向到登录页面).这也是来自我的数据库的正确信息,所以此时一切都很好.
session id: 1ce7ca8e7102b6fa4cf5b61722aecfbc
session first name: elvis
session user id: 2
session user level: 1
Run Code Online (Sandbox Code Playgroud)
这是我重定向/登录页面上打印的内容(当我取消注释标题/重定向时).会话ID是相同的,但我没有得到各个会话变量的值.
session id: 1ce7ca8e7102b6fa4cf5b61722aecfbc
session first name:
session user id:
session user level: …
Run Code Online (Sandbox Code Playgroud) 我们从一个只给我们多部分/混合编码的设备接收一些xml +任意二进制文件(如图像和音频)的POST数据.
我为接收器端设置了一个cherrypy上传/ POST处理程序.我已经设法允许它使用multipart/form-data执行任意数量的参数.但是,当我们尝试发送多部分混合数据时,我们没有得到任何处理.
@cherrypy.expose
def upload(self, *args,**kwargs):
"""upload adapted from cherrypy tutorials
We use our variation of cgi.FieldStorage to parse the MIME
encoded HTML form data containing the file."""
print args
print kwargs
cherrypy.response.timeout = 1300
lcHDRS = {}
for key, val in cherrypy.request.headers.iteritems():
lcHDRS[key.lower()] = val
incomingBytes = int(lcHDRS['content-length'])
print cherrypy.request.rfile
#etc..etc...
Run Code Online (Sandbox Code Playgroud)
因此,在提交multipart/form-data时,args和kwargs定义得很好.
args是表单字段,kwargs =变量和值的哈希.当我提交multipart/mixed时,args和kwargs是空的,我只是将cherrypy.request.rfile作为原始POST信息.
我的问题是,cherrypy是否有一个内置的处理程序来处理POST的多部分/混合和分块编码?或者我是否需要覆盖cherrypy.tools.process_request_body并滚动我自己的解码器?
似乎内置的wsgi服务器与cherrypy处理这是HTTP/1.1规范的一部分,但我似乎无法在cherrypy中找到访问此功能的文档.
...澄清
我使用的是Cherrypy的3.1.1左右的最新版本.
制作默认表单只涉及在upload函数中创建参数.
对于multipart/form-data,我一直在调用curl -F param1 = @ file1.jpg -F param2 = sometext -F param3 =@file3.wav http:// destination:port/upload
在那个例子中,我得到:
args = …
Run Code Online (Sandbox Code Playgroud) 我现在正在尝试http://emacspeak.sourceforge.net我在Windows上运行它.我想使用emacs作为纯文本编辑器,并想知道每个人不能忍受的扩展/包?我最常用的语言是Perl,Java和一些C/C++.
我正在编写我的第一个PHP应用程序,它必须直接处理日期,因此直接处理PHP和MySQL具有不同日期格式的事实.
我的问题是:管理这种差异最优雅的方法是什么?
我有以下两个函数来使用php来管理差异:
function mysql_date($php_date) {
return date( 'Y-m-d H:i:s', $php_date );
}
function php_date($mysql_date) {
$val = explode(" ",$mysql_date);
$date = explode("-",$val[0]);
$time = explode(":",$val[1]);
return mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);
}
Run Code Online (Sandbox Code Playgroud)
有没有一种更简单的方法来直接在我的SQL查询中管理它?
或者你能建议任何其他更优雅的方式来管理这个吗?
我一直使用VNC这样做,这很容易,但我很好奇XDMCP之类的一些东西.据我了解,这是一种在远程X-Server上创建整个桌面的方法,看起来相当优雅.
几年前,我在Solaris服务器上工作,多个开发人员在Windows中运行X-Servers,我们能够访问完整的远程X桌面.到目前为止,我在基于X的系统中所做的所有努力似乎都表明只能加载桌面的一个远程或本地实例,所以我猜这个Solaris的东西是一个"模拟"桌面的实际应用程序,但谁知道.. ..
有什么输入?
c# ×2
datetime ×2
php ×2
python ×2
.net ×1
asp.net-mvc ×1
cherrypy ×1
controls ×1
delphi ×1
desktop ×1
emacs ×1
emacspeak ×1
forms ×1
image ×1
iterator ×1
javascript ×1
jquery ×1
linux ×1
mysql ×1
postgresql ×1
redirect ×1
session ×1
sql ×1
sqlalchemy ×1
timezone ×1
unix ×1
variables ×1
vcl ×1
x11 ×1