WinDLG (маленький оконщик)
Скачать (zip-файл; Размер - 50454)Обсудить в форуме
Описание
SelectDirectory + класс построения на RSL windows диалогов через Windows API.
моя копейка в копилку окон из RSL :)
моя копейка в копилку окон из 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;