WinDLG (маленький оконщик)

Автор:sdo
Дата:15.05.2009
Просмотров:6036
Скачиваний:1069
Оценка:, Оценок - 1
Скачать (zip-файл; Размер - 50454)

Обсудить в форуме

Описание

SelectDirectory + класс построения на RSL windows диалогов через Windows API.

моя копейка в копилку окон из RSL :)

Текст примера

 import swindlg;
/* ПРИМЕР ДИАЛОГА - ОКНО ЛОГИНА ДЛЯ КЛИЕНТ-БАНКА */
class (TWinDialog) TLoginDialog( _o_User )
    InitTWinDialog();
    var o_User = _o_User;
    var UserId = 0;
    const X = 0;
    const Y = 1;
    const W = 2;
    const H = 3;
    Set_XY_Style(0,0,210,112,DS_MODALFRAME+WS_POPUP+WS_SYSMENU+WS_CAPTION+DS_SETFONT+DS_SYSMODAL+DS_CENTER);

    SetFont("Microsoft Sans Serif",8);
    
    var left_offset = 80;
    var h_offset = 20;
    var V_Offset = 5;
    var edit_heigth = 13;
    var Button_Width = 50;
    var Button_Heigth = 16;
    var Button_Hor_Offset = 10;
    var Button_Ver_Offset = 7;
    var BetweenStatic_and_Edit = 4;
    AddItem(0,h_offset + 2,left_offset,10,SS_RIGHT+WS_CHILD+WS_VISIBLE,"STATIC","Пользователь");

    var name_id = AddItem(left_offset + BetweenStatic_and_Edit,h_offset,left_offset,edit_heigth,
        ES_LEFT+ES_AUTOHSCROLL+WS_CHILD+WS_VISIBLE+WS_BORDER+WS_TABSTOP,"EDIT","");

    h_offset = 55;

    AddItem(0,h_offset + 2,left_offset,10,SS_RIGHT+WS_CHILD+WS_VISIBLE,"STATIC","Пароль");
    
    var passw_id = AddItem(left_offset + BetweenStatic_and_Edit,h_offset,left_offset,edit_heigth,
        ES_LEFT+ES_PASSWORD+ES_AUTOHSCROLL+WS_CHILD+WS_VISIBLE+WS_BORDER+WS_TABSTOP,"EDIT","");

    h_offset = GetCoord(H)-Button_Ver_Offset-Button_Heigth;

    var OkButton = AddItem(Button_Hor_Offset,h_offset,Button_Width,Button_Heigth,
        BS_DEFPUSHBUTTON+WS_CHILD+WS_VISIBLE +WS_TABSTOP,"BUTTON","Ok");

    var CancelButton = AddItem(GetCoord(W)- Button_Width - Button_Hor_Offset,H_Offset,Button_Width,Button_Heigth,
        BS_PUSHBUTTON+WS_CHILD+WS_VISIBLE +WS_TABSTOP,"BUTTON","Отменить");

    macro callback(msg:Integer,id:Integer,wNotifyCode:Integer)  // обработка сообщений
        if (msg==WM_COMMAND)
            if (id==OkButton)
                o_User.keynum = 0;
                o_User.Rec.Id = ToOem(GetText(name_id) );
                if (NOT o_User.GetEQ)
                    this.MsgBox("Неизвестный пользователь!","Ошибка", MB_OK+MB_ICONHAND);
                elif( GetText(passw_id) !=ToAnsi(o_User.Rec.Passw) )
                    this.MsgBox("Неверно указан пароль!","Ошибка", MB_OK+MB_ICONHAND);
                else
                    UserId = o_User.Rec.Id;
                    EndDialog(OkButton);
                end;
            elif(id==CancelButton)
                EndDialog(CancelButton);
            end;
        end;
        return true;
    end;
end; //TLoginDialog

macro Login()                           // только если пользователей несколько и надо определиться кто именно работает
    var o_User = tbfile("o_Users");
    var ret = -1,
        id = 0;
    var passw = "";
    if (o_User.NRecords ==0)
        return 0;
    elif (o_User.NRecords ==1)
        if (o_User.Next)
            return o_User.Rec.Id;
        end;
    end;
    var isOk;

    var logobj  = TLoginDialog( o_User );           // показ диалога
    ret = logobj.Show("Регистрация пользователя");
   
    if (ret!=logobj.OkButton)
        return -1;
    else
        return logobj.UserId;
    end;

end;