首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autolisp DCL -对齐和上浆瓷砖

Autolisp DCL -对齐和上浆瓷砖
EN

Stack Overflow用户
提问于 2022-11-16 22:31:05
回答 2查看 89关注 0票数 0

我试图在这个DCL对话框中调整瓷砖的大小和位置。基本上,我希望将客户端框、作业框和杂项框中的edit-boxes设置为相同宽度。但是,由于text瓷砖的标签大小不同,它们的起始宽度也不同。仅仅将宽度设置为edit-boxtext瓷砖的固定值似乎并不能解决这个问题。如何更改此代码以使此对话框中的瓷砖统一?

作为奖励,我还想调整修改框中的瓷砖。我假设这将使用相同的解决方案。我想要不同宽度的edit-boxes的宽度,标签在上面。

我发现DCL文件对我来说是一个缓慢而痛苦的过程。构建此对话框的任何帮助都是有帮助的。谢谢您抽时间见我。

AutoLisp代码:

代码语言:javascript
复制
(defun C:Test01 (/ sPathAndName sDCLModuleName dclFile bContinue)
    
    ;; Initializing
    (setq sPathAndName "[File's location and name]")
    (setq sDCLModuleName "TitleRevUpdate")
    (setq bContinue T)

    ;; File Exists
    (if (not (findfile sPathAndName))(progn 
        (princ "\nError: The DCL file was not found.\n")
        (setq bContinue nil)
    ));if<-progn
    
    ;;  DCL File
    (if bContinue (progn
        (setq dclFile (load_dialog sPathAndName))
        (if (>= 0 dclFile)(progn 
            (princ "\nError: DCL file cannot be loaded.\n")
            (setq bContinue nil)
        ));if<-progn
    ));if<-progn

    ;; Creating a new module
    (if bContinue 
        (setq bContinue (new_dialog sDCLModuleName dclFile "" '(-1 -1)))
    );if

    ;; Build and run DCL module
    (if bContinue (progn
        ;; User Form
        (princ "\nstart_dialog : ")(princ (start_dialog))(terpri)
        (unload_dialog dclFile)
    ));if<-progn
);C:Test01

DCL代码:

代码语言:javascript
复制
TitleRevUpdate : dialog {
    key = "Title" ;
    label = "Update Title Block and Revision" ;

    // Title
    : boxed_column {
        key = "Column_TitleBoxes" ;
        label = "Title" ;
        
        // Client
        : boxed_column {
            key = "Client_Box" ;
            label = "Client" ;
            : row { // Row 01 - Name
                key = "Row_Client_Name" ;
                width = 15 ;
                : text {
                    key = "txt_Client_Name" ;
                    alignment = right ;
                    label = "Client's Name" ;
                    width = 10 ;
                }// text
                : edit_box {
                    key = "edbx_Client_Name" ;
                    alignment = left ;
                    width = 10 ;
                }// edit_box
            } //row
            : row { // Row 02 - Location
                key = "Row_Client_Loc" ;
                : text {
                    key = "txt_Client_Loc" ;
                    alignment = right ;
                    label = "Client's Location" ;
                    width = 10 ;
                }// text
                : edit_box {
                    key = "edbx_Client_Loc" ;
                    alignment = left ;
                    width = 10 ;
                }// edit_box
            } //row
        } //boxed_column
        : spacer {
        }// spacer
        
        // Job
        : boxed_column {
            key = "Job_Box" ;
            label = "Job" ;
            : row { // Row 03 - Name
                key = "Row_Job_Name" ;
                : text {
                    key = "txt_Job_Name" ;
                    label = "Job's Name" ;
                }// text
                : edit_box {
                    key = "edbx_Job_Name" ;
                }// edit_box
            } //row
            : row { // Row 04 - Number
                key = "Row_Job_Number" ;
                : text {
                    key = "txt_Job_Number" ;
                    label = "Job's Number" ;
                }// text
                : edit_box {
                    key = "edbx_Job_Number" ;
                }// edit_box
            } //row
        } //boxed_column
        : spacer {
        }// spacer
        
        // Miscellaneous
        : boxed_column {
            key = "Miscellaneous_Box" ;
            label = "Miscellaneous" ;
            : row { // Row 05 - Creator's Initials
                key = "Row_Creator_Name" ;
                : text {
                    key = "txt_Creator_Name" ;
                    label = "Creator's Name" ;
                }// text
                : edit_box {
                    key = "edbx_Creator_Name" ;
                }// edit_box
            } //row
            : row { // Row 06 - Date of Creation
                key = "Row_Date" ;
                : text {
                    key = "txt_TitleDate" ;
                    label = "Date" ;
                }// text
                : edit_box {
                    key = "edbx_TitleDate" ;
                }// edit_box
            } //row
            : row { // Row 07 - Issued For
                key = "Row_Issued_For" ;
                : text {
                    key = "txt_Issued_For" ;
                    label = "Issued For" ;
                }// text
                : edit_box {
                    key = "edbx_Issued_For" ;
                }// edit_box
            } //row
        } //boxed_column
    } //boxed_column
    : spacer {
    }// spacer
    
    // Revision
    : boxed_column {
        key = "Column_Revision" ;
        label = "Revision" ;
        : row { // Row 08 - Quick Choices
            key = "Row_Buttons" ;
            : button {
                key = "btn_IFC" ;
                label = "Issued for Construction" ;
            }// button
            : button {
                key = "tbn_AB" ;
                label = "As Built" ;
            }// button
            : radio_column {
                key = "RadioCol_WriteMethod" ;
                : radio_button {
                    key = "rbtn_Owt" ;
                    label = "Clear && Overwrite" ;
                }// radio_button
                : radio_button {
                    key = "rbtn_Apnd" ;
                    label = "Append / New Line" ;
                }// radio_button
            } //radio_column
        } //row
        : spacer {
        }// spacer
        : row { // Row 09 - Rev Labels
            key = "Row_Labels" ;
            : text {
                key = "txt_Rev" ;
                label = "Rev" ;
            }// text
            : text {
                key = "txt_Initials" ;
                label = "Initials" ;
            }// text
            : text {
                key = "txt_Description" ;
                label = "Description" ;
            }// text
            : text {
                key = "txt_RevDate" ;
                label = "Date" ;
            }// text
        } //row
        : row { // Row 10 - Rev Edit Boxes
            key = "Row_Rev" ;
            : edit_box {
                key = "edbx_Rev" ;
            }// edit_box
            : edit_box {
                key = "edbx_Initials" ;
            }// edit_box
            : edit_box {
                key = "edbx_Date" ;
            }// edit_box
            : edit_box {
                key = "edbx_RevDate" ;
            }// edit_box
        } //row
    } //boxed_column
    : spacer {
    }// spacer
    
    // Return Commands
    : row { // Row 11 - Buttons
        key = "Row_Return" ;
        : button {
            key = "btn_DWGs" ;
            action = "(done_dialog 2)" ;
            label = "Show Drawings" ;
        }// button
        : button {
            key = "btn_Confirm" ;
            action = "(done_dialog 1)" ;
            is_enabled = true ;
            label = "Confirm" ;
        }// button
        : button {
            key = "btn_Cancel" ;
            action = "(done_dialog 0)" ;
            is_default = true ;
            label = "Cancel" ;
        }// button
    } //row
    : spacer {
    }// spacer

} // TitleRevUpdate
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-17 13:32:17

标准DCL中编辑框对齐的关键是将width属性设置为对所有编辑框相同(并且足够大以容纳组中最大编辑框的文本和编辑区域),将所有编辑框的fixed_width属性设置为true,然后使用edit_width属性控制编辑框本身的大小。

您在使用编辑框时不需要单独的text块,相反,您可以使用edit_box块的label属性。

例如,可以将DCL的上部修改为:

代码语言:javascript
复制
TitleRevUpdate : dialog
{
    key = "Title" ;
    label = "Update Title Block and Revision" ;
    spacer;

    // Title
    : boxed_column
    {
        label = "Title" ;
      
        // Client
        : boxed_column
        {
            label = "Client" ;
            : edit_box
            {
                label = "Client's Name:";
                key = "edbx_Client_Name";
                alignment = left;
                width = 52;
                fixed_width = true;
                edit_width = 30;
            }
            : edit_box
            {
                label = "Client's Location:" ;
                key = "edbx_Client_Loc" ;
                alignment = left;
                width = 52;
                fixed_width = true;
                edit_width = 30;
            }
            spacer;
        }
        spacer;
        
        // Job
        : boxed_column
        {
            label = "Job";
            : edit_box
            {
                label = "Job's Name:";
                key = "edbx_Job_Name";
                alignment = left;
                width = 52;
                fixed_width = true;
                edit_width = 30;
            }
            : edit_box
            {
                label = "Job's Number:" ;
                key = "edbx_Job_Number" ;
                alignment = left;
                width = 52;
                fixed_width = true;
                edit_width = 30;
            }
            spacer;
        }
        spacer;
        
        // Miscellaneous
        : boxed_column
        {
            label = "Miscellaneous" ;
            : edit_box
            {
                key = "edbx_Creator_Name" ;
                label = "Creator's Name:" ;
                alignment = left;
                width = 52;
                fixed_width = true;
                edit_width = 30;
            }
            : edit_box 
            {
                key = "edbx_TitleDate" ;
                label = "Date:" ;
                alignment = left;
                width = 52;
                fixed_width = true;
                edit_width = 30;
            }
            : edit_box 
            {
                key = "edbx_Issued_For" ;
                label = "Issued For:" ;
                alignment = left;
                width = 52;
                fixed_width = true;
                edit_width = 30;
            }
            spacer;
        }
        spacer;
    }
    spacer;
        
    // Return Commands
    : row
    {
        key = "Row_Return" ;
        fixed_width = true;
        alignment = centered;
        : button 
        {
            key = "btn_DWGs" ;
            action = "(done_dialog 2)" ;
            label = "Drawings" ;
            fixed_width = true;
            width = 16;
        }
        : button 
        {
            key = "btn_Confirm" ;
            action = "(done_dialog 1)" ;
            is_enabled = true ;
            label = "Confirm" ;
            fixed_width = true;
            width = 16;
        }
        : button 
        {
            key = "btn_Cancel" ;
            action = "(done_dialog 0)" ;
            is_default = true ;
            label = "Cancel" ;
            fixed_width = true;
            width = 16;
        }
    }
    spacer;
}

若要生成以下GUI,请执行以下操作:

考虑到所有的瓷砖都共享相同的属性值,您可以定义一个命名的瓷砖来进一步压缩代码,例如:

代码语言:javascript
复制
myeditbox : edit_box
{
    alignment = left;
    width = 52;
    fixed_width = true;
    edit_width = 30;
}
mybutton : button
{
    fixed_width = true;
    width = 16;
}
TitleRevUpdate : dialog
{
    key = "Title" ;
    label = "Update Title Block and Revision" ;
    spacer;
    : boxed_column
    {
        label = "Title" ;
        : boxed_column
        {
            label = "Client" ;
            : myeditbox { label = "Client's Name:";     key = "edbx_Client_Name"; }
            : myeditbox { label = "Client's Location:"; key = "edbx_Client_Loc" ; }
            spacer;
        }
        spacer;
        : boxed_column
        {
            label = "Job";
            : myeditbox { label = "Job's Name:";   key = "edbx_Job_Name";   }
            : myeditbox { label = "Job's Number:"; key = "edbx_Job_Number"; }
            spacer;
        }
        spacer;
        : boxed_column
        {
            label = "Miscellaneous" ;
            : myeditbox { label = "Creator's Name:"; key = "edbx_Creator_Name"; }
            : myeditbox { label = "Date:";           key = "edbx_TitleDate";    }
            : myeditbox { label = "Issued For:";     key = "edbx_Issued_For";   }
            spacer;
        }
        spacer;
    }
    spacer;
    : row
    {
        key = "Row_Return" ;
        fixed_width = true;
        alignment = centered;
        : mybutton { key = "btn_DWGs";    action = "(done_dialog 2)"; label = "Drawings"; }
        : mybutton { key = "btn_Confirm"; action = "(done_dialog 1)"; label = "Confirm"; is_enabled = true; }
        : mybutton { key = "btn_Cancel" ; action = "(done_dialog 0)"; label = "Cancel";  is_default = true; }
    }
    spacer;
}
票数 2
EN

Stack Overflow用户

发布于 2022-11-17 04:36:34

例外

代码语言:javascript
复制
width = 10 ; 

你也需要

代码语言:javascript
复制
fixed_width = true;

在每个edit_box

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74468042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档