modify()函数的用法

 dw1.modify(modstring)
//功能:使用字符串中定义的操作修改数据窗口控件 其中:modstring:string类型,其值定义修改数据窗口的各种操作。
返回值:string .成功时返回空字符串(“”),发生错误时返回一条出错消息。形式:"line n column n incorrect syntax"(指明哪行哪列错了)
 可以应用于:a.修改数据窗口中各种对象的颜色、标题、文本等。
       b.修改数据窗口中不同表的更新状态,以便让应用程序一次可以更新多个表
       c.修改数据窗口对象中sql select语句中的where子句
       d.改变retrieve only as needed(按需检索数据)状态(对应于数据窗口对象的retrieve.asneeded属性,modity()中引用该函数为:object.datawindow.retrieve.asneeded)
              e.改变数据窗口对象的数据源
       f.控制打印预览显示模式。
       g.在数据窗口对象中增加和删除对象
modify()函数中使用的表达式:当为数据窗口对象的某个属性指定一个表达式时,其表达式的格式格式:defaultvalue~tDataWindowpainterexpression  其中datawindowpainterexpression是数据窗口画笔表达式。
如:modstring="empid.color='16777215~tIF(emp_status=~~'A~~',255,16777215)'"    dw1.modify(modstring) //对于empid列来说,当emp_status列的值为A时,empid列的数据显示为红色,否则为白色。
如:rtn=dw_1.modify("emid.font.italic=0 oval_1.backgroud.mode=0   oval_1.backgroup.color=255") //一次修改了多个对象的属性
如:dw1.modify("objectname.backgroup.mode='<0,1>'") dw1.modify("objectname.backgroup.color='long'") //要将背景高为不透明(opaque)才能看到背景颜色。
如:dw1.modify("depid.color='0~t"+"if(depid=200,65380,if(dipid=100,255,0))"') //当depid=200时,其值显示为绿色,等于100时为红色,其它值为黑色。
如:string mod_string,err     long color1,clor2,color3,default_color 
     err=dw1.modify("salary.backgroup.mode=0")
     if err<>"" then  return
     /////下面是构造modstring,如果salary<10000,则其背景高为红色; 20000<如果>=10000  设为蓝色,30000<如果>20000 设为绿色;其它为的白色。
 color1=255 //红色  color2=16711680 //蓝色  color3=65280 //绿色 default_color=1677215//白色
 modstring="salary.backgroup.color="'+string(default_color)+"~tIF(salary<10000,"+string(color1)+",if(salary<20000,"+string(color2)+",if(salary<30000,"+string(color3)+","string(default_color)+")))'"
 err=dw1.modify(modstring)
 if err<>"" then
     messagebox("tip",出错位置为:"+err)
  return
end if
如:dw1.modify("dep_t.text='部门'") //把dw1中文本对象dep_t的标题改为”部门“
如:dw1.modify("dep_t.text='无~t"+"if(depid>201,~'营销部~',~'财务部~')'") //如果depid>201其标题为”营销部“,否则为”财务部“)
如: original_select=dw1.describe("datawindow.table.select")
   mod_string="datawindow.table.select="'+original_select+where_clause+""'
   rc=dw1.modify(mod_string)
   if rc="" then
       dw1.retrieve()
   else
       messagebox("tip","this error is"+rc)
   end if
如:string rc,mod_string,name_str="张飞"   integer dept_num=100
     dw1.modify("datawindow.table.select="")  //去掉数据窗口中的Select语句
   mod_string="datawindow.table.procedure='1 execute dbo.emp_arg2;1@dept_id_arg=:num_arg1,@lname_arg=:str_arg1"' //将数据窗口的procedure属性设置为所需的存储过程
     rc=dw1.modify(mod_string)
       if rc="" then
         dw1.retrive(dept_num,name_str)
       else
       messagebox("tip","fail is "+rc)
       end if         //////////////////////
如:dw1.modify("destroy logo") //删除dw1中的位图logo
如:dw1.modify("destroy column salary") //删除数据窗口dw1中的列对象salary,同时从缓冲区中删除该列的数据(这是column的作用)
如:modstring='create bitmap(band=footer x="37" y="12' height="101" width="1509" filename="c:\p1.bmp" border="0" name=bmp1)'
     dw1.modify(modstring)  //在数据窗口dw1的第一个分组的组标题同区增加一个名为p1位图对象。
************************
  1、改变detail区的高度:dw_1.Modify("DataWindow.detail.Height=200")
  2、对标题栏文本的更改(文本名为dept_name_t):dw_1.modify("dept_name_t.text = '单位名称'")
  3、增加计算域:假设一grid型的数据窗口,其中有个字段为部门号dept_id,我们要增加一个统计部门数的计算域count(dept_id for all):
  string ls_modrow
  dw_1.Modify("DataWindow.summary.Height=64")
  ls_modrow = 'Create compute(band=summary font.charset="0" font.face="MS Sans Serif" font.family="2" font.height="-8" font.pitch="2" font.weight="400" background.mode="1" background.color="536870912" color="0" x="9" y="4" height="52" width="297" format="[general]" expression="count(dept_id for all)" alignment="1" border="0" crosstab.repeat=no )~r~n'
  dw_1.modify( ls_modrow )
  4、以下程序段让grid数据窗口中网格线不见,并在detail区增加加一条线
  string ls_line
  DW_1.Modify("DataWindow.Grid.Lines='1' ")
  dw_1.Modify("DataWindow.detail.Height=332")
  ls_line = 'Create line(band=detail background.mode="2" background.color="16777215" pen.style="0" pen.width="5" pen.color="0" x1="37" y1="320" x2="1458" y2="316" )~r~n'
  dw_1.modify( ls_line )
  象这种数据窗口动态增加控件的方法,也可以先在数据窗口画板中手工加上去,倒成sytnax后,查看其语法,再反写回去即可。
<think>好的,我现在需要回答用户关于Python函数使用方法的问题。用户之前询问过“python爱心代码高级”,现在转向基础内容,可能是一位刚开始学习Python的新手,或者是想巩固基础知识的开发者。首先,我需要确保回答内容清晰、易懂,覆盖函数的基本概念、定义、参数、返回值、作用域以及常用技巧。 用户可能已经了解一些Python语法,但对函数的具体使用还不熟悉。我需要从函数的定义开始,逐步展开,包括如何定义函数、参数类型(位置参数、默认参数、可变参数等)、返回值、变量的作用域,以及一些高级技巧如lambda函数和装饰器。同时,应该提供示例代码帮助理解,并注意代码的简洁性,避免让用户感到困惑。 用户可能的需求包括:如何创建自己的函数,如何传递参数,如何处理返回值,如何避免作用域问题,以及如何利用函数提高代码复用性。此外,可能对递归函数和匿名函数感兴趣。需要确保每个部分都有示例,并且解释清楚每个概念的应用场景和注意事项。 需要避免使用过于专业的术语,保持语言简单明了。例如,解释参数时,可以用类比的方式,如默认参数类似于备选方案,如果没有提供则使用默认值。同时,要注意结构清晰,使用标题和子标题帮助用户快速找到所需信息。 还要考虑用户可能遇到的问题,例如变量作用域导致的错误,或者参数传递中的常见误区。在讲解时,需要指出这些常见错误,并提供解决方法。例如,在作用域部分,强调全局变量和局部变量的区别,以及如何使用global关键字。 最后,总结部分要回顾重点,并鼓励用户多加练习,因为函数是编程中的核心概念,熟练掌握对后续学习至关重要。同时,可以提到后续可以学习装饰器等高级主题,激发用户的学习兴趣。</think>以下是 Python 函数的详细使用方法,涵盖基础到进阶内容: --- ### **一、函数的定义与调用** #### 基本结构 ```python def 函数名(参数): """档字符串(可选)""" 代码块 return 返回值 # 可选 ``` #### 示例 ```python # 定义函数 def greet(name): """向指定名字问好""" print(f"Hello, {name}!") return len(name) # 返回名字长度 # 调用函数 result = greet("Alice") # 输出 Hello, Alice! print(result) # 输出 5 ``` --- ### **二、参数类型** #### 1. 位置参数 ```python def power(base, exponent): return base ** exponent print(power(2, 3)) # 8(必须按顺序传参) ``` #### 2. 默认参数 ```python def power(base, exponent=2): # 默认指数为2 return base ** exponent print(power(3)) # 9(使用默认参数) print(power(3, 4)) # 81 ``` #### 3. 可变参数(*args) ```python def sum_numbers(*args): # 接收任意数量参数 total = 0 for num in args: total += num return total print(sum_numbers(1, 2, 3)) # 6 ``` #### 4. 关键字参数(**kwargs) ```python def build_profile(**kwargs): # 接收字典形式参数 profile = {} for key, value in kwargs.items(): profile[key] = value return profile user = build_profile(name="Bob", age=30, city="New York") print(user) # {'name': 'Bob', 'age': 30, 'city': 'New York'} ``` --- ### **三、返回值处理** #### 多返回值 ```python def rectangle_info(width, height): area = width * height perimeter = 2 * (width + height) return area, perimeter # 实际返回元组 a, p = rectangle_info(3, 4) # 元组解包 print(f"面积:{a}, 周长:{p}") # 面积:12, 周长:14 ``` --- ### **四、作用域规则** #### 局部变量 vs 全局变量 ```python count = 10 # 全局变量 def modify(): global count # 声明使用全局变量 count = 20 # 修改全局变量 local_var = 5 # 局部变量 modify() print(count) # 20 # print(local_var) # 报错,局部变量无法访问 ``` -- ### **五、高阶函数用法** #### 1. 函数作为参数 ```python def apply_operation(func, x, y): return func(x, y) def add(a, b): return a + b print(apply_operation(add, 3, 5)) # 8 ``` #### 2. Lambda 表达式 ```python square = lambda x: x ** 2 print(square(5)) # 25 # 配合高阶函数使用 numbers = [1, 2, 3, 4] squared = list(map(lambda x: x**2, numbers)) print(squared) # [1, 4, 9, 16] ``` --- ### **六、递归函数** ```python def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) print(factorial(5)) # 120 ``` --- ### **七、常用技巧** #### 1. 类型提示(Python 3.5+) ```python def add(a: int, b: int) -> int: return a + b ``` #### 2. 函数注解 ```python def split_str(s: str, sep: str = ',') -> list: """按分隔符分割字符串""" return s.split(sep) ``` #### 3. 装饰器(高级用法) ```python def timer(func): import time def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"{func.__name__} 执行时间:{end-start:.2f}秒") return result return wrapper @timer def long_operation(): import time time.sleep(2) long_operation() # 输出执行时间 ``` --- ### **最佳实践** 1. 函数名使用小写字母和下划线组合(snake_case) 2. 单个函数建议不超过50行代码 3. 函数应保持单一职责原则 4. 使用档字符串说明功能(可通过 `help(函数名)` 查看) --- 通过灵活运用函数,可以显著提升代码的可读性和复用性。建议从简单功能开始实践,逐步掌握参数传递和作用域控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值