论坛首页 编程语言技术论坛

300行代码你能做什么

浏览 31222 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-09-03   最后修改:2009-09-03
看着布局代码的风格,有点像我以前写EXT布局代码的风格,贴出看看:
	//AddFromPanel
		function getFormPanel(type)
		{
	        var formPanel = new Ext.FormPanel({
	            labelAlign: 'top'
	            ,bodyStyle: 'padding: 5px'
	            ,frame: true
	            ,items: [{
	                    layout: 'form'
	                    ,border: false
	                    ,items: [{
	                            xtype: 'fieldset'
	                            ,title: '请填写'
	                            ,autoHeight: true
	                            ,items: function(){
	                                // this = button in tbar
	                                var items = App.formItems(dataColumnModel,
	                                [
	                                    [{'type': {value: type, disabled: true}}],
	                                    [{'type': {value: type, hidden: true, hideLabel: true}}],
	                                    ['flag', 'sort', 'level'],
	                                    ['name'],
	                                    clientExtraFields[type],
	                                    ['telephone', 'fax', 'zipcode'],
	                                    [{'address': {anchor: '95%'}}],
	                                    [{'website': {anchor: '95%'}}],
	                                    [{'info': {height: 120}}]
	                                ]);
	                                return items;
	                            }()
	                        }]
	                }]
	            ,buttons: [
	                {
	                    text: '保存'
	                    ,handler: saveForm
	                },
	                {
	                    text: '重置'
	                    ,handler: function(){this.ownerCt.getForm().reset();}
	                }
	
	            ]
	        });
	        return formPanel;
		}


渲染出来的效果如图:

  • 大小: 17.1 KB
0 请登录后投票
   发表时间:2009-09-03  
依样画葫芦:
require 'gtk2'
require 'simple_layout'

class MyWin < Gtk::Window
  include SimpleLayout::Base
  def initialize
    super('添加新客户')
    add my_layout
    signal_connect('destroy') do
      Gtk.main_quit
    end
  end

  def my_layout
    frame ' 请填写 ', :border_width => 5 do
      vbox do
        with_attr :border_width => 5 do
          vbox do
            hbox{ label '客户种类:'}
            combobox
          end
          hbox do
            with_attr :set_size_request => [200, -1], :border_width => 5 do
              vbox do
                hbox{ label '合作标记:' }
                combobox
              end
              vbox do
                hbox{ label '客户类别:' }
                combobox
              end
              vbox do
                hbox{ label '客户级别:' }
                combobox
              end
            end
          end
          vbox do
            hbox{ label '公司名称:' }
            entry :layout => [true, true]
          end
          vbox do
            hbox{ label '集团名称:' }
            entry :layout => [true, true]
          end
          hbox do
            with_attr :set_size_request => [200, -1], :border_width => 5 do
              vbox do
                hbox{ label '公司电话:' }
                entry :layout => [true, true]
              end
              vbox do
                hbox{ label '传真号码:' }
                entry :layout => [true, true]
              end
              vbox do
                hbox{ label '公司邮编:' }
                entry :layout => [true, true]
              end
            end
          end
          vbox do
            hbox{ label '公司邮编:'}
            entry :layout => [true, true]
          end
          vbox do
            hbox{ label '公司网站:' }
            entry :layout => [true, true]
          end
          vbox do
            hbox{ label '概况'}
            frame :border_width => 3 do
              scrolled_window do
                text_view :set_size_request => [-1, 100]
              end
            end
          end
        end
        hbox do
          hbox :layout => [true, true]
          hbutton_box :border_width => 5 do
            button '保存'
            button '重置'
          end
          hbox :layout => [true, true]
        end
      end
    end
  end
end

MyWin.new.show_all
Gtk.main




  • 大小: 15.6 KB
0 请登录后投票
   发表时间:2009-09-03  
不错不错,现在是没有时间学这个!看以后吧
0 请登录后投票
   发表时间:2009-09-03  
为什么要写?还是喜欢拖。。。。。

0 请登录后投票
   发表时间:2009-09-03  
jinleileiking 写道
为什么要写?还是喜欢拖。。。。。



代码生成界面有两个好处:
1. 动态界面,例如你可以从数据库中生成界面,根据不同数据类型提供不同的界面等。
2. 用普通的代码版本管理工具就可以跟踪变化记录,并且具有良好的可读性。

另外,和HTML类似,为什么要用文本编辑器写HTML?(可视化工具多了是...)
0 请登录后投票
   发表时间:2009-09-04  
建议 ls 用 dreamweaver 敲标签 ……
不关门不是什么大事,用 tidy 刷一遍就全关上了,有些不关上的浏览器也能认,节约带宽,保护环境 ……

ps:现在的 XUL 可读性太差了。
0 请登录后投票
   发表时间:2009-09-04  
rubynroll 写道
代码生成界面有两个好处:
1. 动态界面,例如你可以从数据库中生成界面,根据不同数据类型提供不同的界面等。
2. 用普通的代码版本管理工具就可以跟踪变化记录,并且具有良好的可读性。

另外,和HTML类似,为什么要用文本编辑器写HTML?(可视化工具多了是...)

嗯支持一下~我也是比较喜欢用代码写界面。
以前写页面的时候用过一段时间AceHTML Pro,感觉还不错。虽说是“敲代码”但能够被自动补全的地方也很多
现在用WPF我也还是经常手写XAML……顺手些而且容易控制版本一些 =v=
0 请登录后投票
   发表时间:2009-09-04  
好文,收藏了.....
我写桌面的机会不多, 偶尔玩玩更喜欢Shoes
0 请登录后投票
   发表时间:2009-09-04  
编写界面一个很重要的就是component复用,把事件。属性封在component的边界里。同时要兼顾美观、通用。
比如普通一点的界面,至少有个menu bar有menu item,有menu event,用代码写起来是很乏味的。


其实是就是象.NET FORM,动态生成界面也是很简单的,以上说的什么用代码编写可以存数据库是毫无关联的。
0 请登录后投票
   发表时间:2009-09-04  
subwayline13 写道


另外你这两点好处基本上不成立,或者说现在的开发工具已经完全实现了,你装个VS20008就知道了。


用MFC的话,rc文件可读性不算好,你能从rc文件中看出UI? 而即使是.NET, VS生成的代码由于没有象builder-style那样体现UI的层次,因此当你从SCM结果中观察diff时也不能很好地看出真正变化了什么。

至于动态界面,VS2008可视化似乎帮不上什么忙。

0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics