On-line: Alex_Cher, гостей 2. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 41
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 17.03.14 13:18. Заголовок: Вопрос касательно Define Menu


Можно ли в МиниГуи вывести первым окном до главного окна (MAIN) какое-либо другое окно, допустим модальное и как это сделать?
Допустим надо диалог для выбора начальных параметров либо ввод пароля и т.д.
Покажите пример либо дайте ссылку где это можно посмотреть.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]


постоянный участник




Пост N: 3278
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.03.14 13:25. Заголовок: Смотри: \MiniGUI..


Смотри:
\MiniGUI\SAMPLES\BASIC\SPLASHDEMO
\MiniGUI\SAMPLES\BASIC\SPLASHDEMO_2
\MiniGUI\SAMPLES\BASIC\SPLASHDEMO_3

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 567
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.03.14 13:32. Заголовок: Eduard пишет: Можно..


Eduard пишет:

 цитата:
Можно ли в МиниГуи вывести первым окном до главного окна (MAIN) какое-либо другое окно


Да, можно. Для этого надо использовать событие ON INIT главного окна.
Ниже приведен рабочий пример из папки MiniGUI\SAMPLES\BASIC\LOGIN, реализуюший запрос пароля на входе в программу:

 цитата:
/* 
* MINIGUI - Harbour Win32 GUI library Demo
*/

#include "minigui.ch"

static logindata := {}, rank

function main

SET NAVIGATION EXTENDED

aadd(logindata, {"ADMIN","ADMIN",99,1})
aadd(logindata, {"USERNAME","PASSWORD",5,50})
aadd(logindata, {"GUEST","GUEST",3,100})

Define window sample At 0,0 width 600 height 400 main title "Want to login?" on init loginattempt(2)
Define Main Menu
Popup "&Login"
item "Login as &Admin" action loginattempt(1)
item "Login as &User" action loginattempt(2)
item "Login as &Guest" action loginattempt(3)
separator
item "E&xit" action sample.release
End Popup
Popup "&Test"
item "Check &Permissions" action CheckPermissions()
item "Show &User List" action ShowUserList() name UserList
End Popup
End Menu
End window

sample.center
sample.activate

return nil


FUNCTION loginattempt(level)
local username := logindata[level][1]
local password := logindata[level][2]
local maxattempt := logindata[level][3]
local ok, attempts := 0

rank := logindata[level][4]

SET INTERACTIVECLOSE OFF

DEFINE window login At 0,0 width 220 height 155 title "User Login" modal
DEFINE label usernamelabel
Row 10
Col 10
width 80
Value "Username"
END label
DEFINE textbox username
Row 10
Col 90
width 100
value ""
uppercase .t.
END textbox
DEFINE label passwordlabel
Row 40
Col 10
width 80
Value "Password"
END label
DEFINE textbox password
Row 40
Col 90
width 100
password .t.
value ""
uppercase .t.
END textbox
DEFINE button login
Row 80
Col 45
width 50
caption "Login"
action ( attempts++, ok := (login.username.value == username .and. login.password.value == password),;
iif(ok, Loginok(username), iif(attempts < maxattempt, (MsgStop("Not Authorized!"), login.username.setfocus), logincancelled(.t.))) )
END button
DEFINE button cancel
Row 80
Col 115
width 50
caption "Cancel"
action logincancelled(.f.)
END button
END window

login.center
login.activate

RETURN nil


static function loginok(user)

MsgInfo("Login Successful")

sample.title := "User: " + user

login.release()

SET INTERACTIVECLOSE QUERY MAIN

if rank > 99
sample.userlist.enabled := .f.
endif

return nil


static function logincancelled(immediate)

If immediate
RELEASE WINDOW ALL
Endif

If MsgYesNo("Are you sure to cancel?", "Confirmation")
Msginfo("GoodBye!")

RELEASE WINDOW ALL
Endif

return nil


function CheckPermissions()
local permission

do case
case rank < 10
permission := "ALL"
case rank < 100
permission := "read/write"
case rank > 99
permission := "readonly"
end case

MsgInfo("You have " + permission + " permissions.")

return nil


function ShowUserList()
local i, count := len(logindata), list := {}

for i=1 to count
if rank > 9 .and. logindata[4] < 10
loop
endif
aadd(list, logindata)
next

DEFINE window list At 0,0 width 400-if(isvista().or.isseven(),0,8) height 300-if(isvista().or.isseven(),0,10) ;
title "User List" modal on release if(rank < 10,savelist(),nil)
DEFINE grid userlist
Row 0
Col 0
width 384
height 262
headers {'User','Password','Max attempt','Rank'}
widths {110,110,90,50}
items list
value 1
inplaceedit { ;
{'TEXTBOX','CHARACTER' } , ;
{'TEXTBOX','CHARACTER' } , ;
{'TEXTBOX','NUMERIC', '99' } , ;
{'TEXTBOX','NUMERIC', '999' } , ;
}
justify { GRID_JTFY_LEFT,;
GRID_JTFY_LEFT,;
GRID_JTFY_RIGHT,;
GRID_JTFY_RIGHT }
allowedit (rank < 10)
cellnavigation (rank < 10)
END grid
END window

list.center
list.activate

return nil


static function savelist()
local i, count := list.userlist.itemcount

logindata := {}
for i=1 to count
aadd(logindata, {list.userlist.cell(i,1),list.userlist.cell(i,2),list.userlist.cell(i,3),list.userlist.cell(i,4)})
next

return nil



Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 161
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет