是不是吧所有check的状态再转化为字符串,原纪录直接删去?
师父做什么开发呢?偶常想什么时候能像你一样就好了

解决方案 »

  1.   

    我不清楚数据库格式,以及怎么存放到CheckListBox中的,所以怎么存的,我也不敢胡说八道。
      

  2.   

    paradox,循环读取数据库里的记录字符串,如111010011,他们对应checklistbox的
    checked[i],师父赐教
      

  3.   

    那你循环一下CheckListBox,重新生成这个字符串,然后覆盖回去。
      

  4.   

    一直连不上
    同意chechy的
    不过我觉得chris的设计思想实在不对劲
    不知你究竟想作什么呢
    其实应该多看看名家的手笔
    看看别人的软件的设计
    还有一点
    我想提一点建议对chris
    请你改一改你的网名
    你的网名实在是莫名其妙
    太卡通了吧
      

  5.   

    CSDN 今天用了一天的 PC 做服务器吧。 :-)
      

  6.   

    chris是囡囡爪牙---无敌牛虱,他不当牛虱,在水园MM不理他。同意chechy和Focus(老鱼)的
    我也觉得chris的设计思想实在有点不对劲另建议不用字符串表示权限,用一个WORD或Byte按位操作,具体看权限的个数决定。
    按字符串应该不大好,用WORD更易于移植,更易于判断,尤其在C中。
      

  7.   

    偶手边的mis例子太菜了,它用的是字符串,所以偶也跟着误入歧途了,
    不知几位师父是否有好的例子,徒弟讨要一个
    偶现在做的是用户管理这一部分,真如师父所说,偶几乎全凭想象来做,
    偶心里很没谱,界面大致如下:
               treeview               checklistbox
            超级用户                   checked[0]
               新用户                  checked[1]
                 name                 checked[2]
                 passwd               …… 
               新用户                  (表示权限)
               ……
            普通用户   
               新用户
                 name
                 passwd
               新用户
               ……
    点击新用户时,chechklist出现该用户相应权限,除了‘超级用户'与'普通用户'外,其他节点均可编辑--------不知道这样是否恰当,请师父斧正
       还有,小隐师父说用word表示权限,偶相知其祥,赐教
       改名去了……    
      

  8.   

    问我就行拉
    用DBCheck...
    很简单的
      

  9.   

    太麻烦了
    你只要设一个窗口
    上设新用户名
    中设新用户密码
    最下面设一行选项
    分别是普通用户和超级用户(可用Radiogroup)
    然后数据表中存放相应的itemindex就行
    到时判断就用这个
    其实不用这样
    超级用户应该只有一个
    再说我听你说你是想设计一个用户通讯录
    这应该不是网络版的
    用得着吗?
      

  10.   

    不麻烦,
    你应该使用 TreeView 的 item 的 data功能,
    把每个客户的信息记录在里面,
    在 TreeView的onchange事件里记录,
      

  11.   

    数据库结构不需要动
    界面建议变成
    :                               name 
                                     password
              treeview              checklistbox
            超级用户                  checked[0]
              新用户1                  checked[1]
                                    checked[2]
                                      …… 
              新用户2                  (表示权限)
              ……
            普通用户  
              新用户1
              新用户2
              ……这样程序结构会更清晰,就是一个用户的所有信息全部记录在一个节点内,
      

  12.   

    function TForm1.GetListBox: WORD;
    var
       i:Integer ;
    begin
         Result:=0;
         for I:=0 to CheckListBox1.Items.Count-1 do
          if  CheckListBox1.Checked[i] = True then
                 Result:=Result or (1 Shl i);end;
      

  13.   

    没有必要使用 word类型,用string就可以了,
    很直观,
     Result:='';
     for i:=0 to CheckListBox1.Items.Count-1 do
        if CheckListBox1.Checked[i] then
            Result:='1'+Result
        else 
            Result:='0'+Result;
      

  14.   

    有偶的师父们在,偶焉能不进步
    多谢各位师父,偶正在调试中
    小昂,name和passwd用什么控件呢? 
      

  15.   

    chris 看看AddObject带的例子。
      

  16.   

    string 和word 的用法都有普遍性吗?就是都可以应用于所有用户管里中
      

  17.   

    可以用 TEdit,
    其中 passwd的edit的passwordchar改成 *,
      

  18.   

    是的,用word代码稍微麻烦一点,
    我感觉最不方便的就是跟踪的时候 word的不直观,
    对于初学者,最好用string,操作容易,
    如果使用 word,有时候除了毛病都不知道出在哪里,
    其实word的最大好处就是在不同的语言里用法是一样的,
    而这个对于初学者来说,并不重要
      

  19.   

    小昂师父,偶已经按你写的改了界面,treeview好用,码难写,偶害怕treeview了
      

  20.   

    还好,
    你以后会碰上更难写的,
    最好把你的程序改一下,
    练习使用 TreeView的item的data功能,
    这个功能很强大,能解决不少问题,
    而且,对你认识程序的本质有好处,
      

  21.   

    如果把面向对象的知识应用到TreeView中,那么TreeView不仅不难写,而且功能强大,随心所欲。文章当然是要在data上做的。
    当然,代码会增加很多,而且掌握这个技术的前提是领悟多态。
      

  22.   

    谢师父指点,偶牢记在心
    偶已经把界面改了,相应功能也实现了
    现在被难住在
    如何吧checklistbox的checked状态回写入数据库
    即用户修改完权限保存
    chechy师父昨天教偶循环生成字符串来实现
    偶没能写出来,
    不知道生成字符串的方法
    请教
      

  23.   

    我上面不是留了方法吗ResultStr:='';
    for i:=0 to CheckListBox1.Items.Count-1 do
        if CheckListBox1.Checked[i] then
            ResultStr:='1'+ResultStr
        else 
            ResultStr:='0'+ResultStr; 
      

  24.   

    偶眼花缭乱了,居然把这么重要的给漏了,该打
    另外,偶想知道:
    在for语句中,比如
    for i:=0 to CheckListBox1.Items.Count-1 do
    这个count-1是什么意思呢?
      

  25.   

    因为items.count
    是从0开始计数的
    实际总数应该从0至count-1才对
    如果你用count会溢出
      

  26.   

    偶有又一个疑问:偶现在软件界面:          
              treeview              name: edit1 
              超级用户               password: edit2
                 新用户1             -------------- 
                 新用户2             checklistbox
                 ……                checked[0]
              普通用户               checked[1]
                 新用户              checked[2]
                 ……                …… 
                                    (表示权限)
    注:新建用户时,name与passwd 以name1和passwd1数字递增的形势,赋予新建用户
    默认的name和passwd问题:  当软件使用者连续建立多个用户,或修改数个用户的权限时,这时候的passwd、name
    和checklistbox都在不停的更换状态中,也就是新建新用户2后,新用户1的passwd(passwd1)和
    name(name1)被新用户2的passwd(passwd2)和name(name2)覆盖掉,
    而偶写入数据库的代码只在 保存 按钮下,
    只有按 保存 新建用户才存入数据库,怎么能让使用者全部新建或修改完,再全部存储呢?
       偶的意思是请示各位师父:如果一次性存储太麻烦的话,是否可以让使用者新建1个或修改1个之后,就马上存储一次
              
            
             
      

  27.   

    用一个TStringList临时存储所有数据~~~
      

  28.   

    看看Delphi的例子~~很容易的~~procedure TForm1.FormCreate(Sender: TObject);var
      MyList: TStringList;
      Index: Integer;
    begin
      MyList := TStringList.Create;
      try
        MyList.Add('Animals');
        MyList.Add('Flowers');    MyList.Add('Cars');    MyList.Sort;   { Find will only work on sorted lists! }
        if MyList.Find('Flowers', Index) then
        begin
          ListBox1.Items.AddStrings(MyList);
          Label1.Caption := 'Flowers has an index value of ' + IntToStr(Index);
        end;
      finally
      MyList.Free;
      end;
    end;
      

  29.   

    问题:  当软件使用者连续建立多个用户,或修改数个用户的权限时,这时候的passwd、name
    和checklistbox都在不停的更换状态中,也就是新建新用户2后,新用户1的passwd(passwd1)和
    name(name1)被新用户2的passwd(passwd2)和name(name2)覆盖掉,
    就是写在那里面~~如果新增或者是更改了~~
      

  30.   

    呵呵~~你还在太好了~~~~顺便帮忙Up一下这个帖子~~
    http://www.csdn.net/expert/TopicView.asp?id=304156
      

  31.   

    我把name与pass还有treeeview的的临时存储写在了onchange事件里,不知对否
    另外,checklistbox的临时存储代码写在哪里呢?偶没有找到适合的事件
      

  32.   

    存储name和passwd的时候顺便把 checklistbox存储了不就可以了吗
      

  33.   

    偶又遇到2个困难,
    1,
    偶的数据库 pass 如下
      name  passwd  qx  alias   issuper
    其中,issuper用什么判别?
    偶用 if treeview.item[i].imageindex=0 then
    感觉不对,因为只需判别新建的用户,求教 
    2
    保存时,会用到两个sql,insert和update
    产生3个处理方式,即新建、修改、新建和修改,
    用什么逻辑方式判别、处理他们  
      

  34.   

    1.issuper是一个boolean吧
    直接用if 判别就行
    你要判别新的什么用户(是不是spuer or 普通?)
    2.看不懂你要作什么?
      

  35.   

    老鱼,issuper 偶用的是 y,n 偶在paradox没有找到boolean
    偶的2是说,在保存时,究竟是inser还是update,或者都有,
    这些逻辑怎么判断?
    if 用户只修了checklistbix then
    if 用户newnode.add('') then
    ……
    偶现在毫无头绪
      

  36.   

    在paradox中
    boolean是logical
    如果只是修改Update 或edit & post
    增加就可以用insert 或 append 或 appendreacord
    具体看一下帮助
      

  37.   

    救命,偶用如下的语句修改数据库,屡次不得通过:   data.qu_yhglqx.close;
        data.qu_yhglqx.execsql;
        data.qu_yhglqx.parambyname('name').asstring:=edit1.text;
        data.qu_yhglqx.parambyname('passwd').asstring:=edit2.text;
        data.qu_yhglqx.parambyname('alias').asstring:='newnode.text';
        data.qu_yhglqx.parambyname('qx').asstring:='qxs';其中,qu_yhglqx
    update pass
    set name=:name or  passwd=:passwd or alias=:alias  or qx=:qxs
    where name=:name光标挺在
    data.qu_yhglqx.parambyname('name').asstring:=edit1.text;
        
      

  38.   

    偶把代码抄错了: 
        data.qu_yhglqx.close;
        data.qu_yhglqx.parambyname('passwd').asstring:=edit2.text;
        data.qu_yhglqx.parambyname('alias').asstring:=newnode.text;
        data.qu_yhglqx.parambyname('qxs').asstring:=qxs;
         qxs:='';
        for i:=0 to CheckListBox1.Items.Count-1 do
        if CheckListBox1.Checked[i] then
            qxs:='1'+qxs
        else
            qxs:='0'+qxs;
        data.qu_yhglqx.parambyname('name').asstring:=edit1.text;
        data.qu_yhglqx.execsql;sql语句没错,
    各位师父:
       偶是不是把问题处理得太麻烦了,我自觉超出我能驾驭的范围
    该放弃了吗?或作重大修改,我拿不定主意,想听师父的意见,
       如把这个通讯录作简单处理,偶想再写一个文档管理系统,
    请各位师父帮偶分析一下,偶吃这方面的亏太多了,从头学起