Показать сообщение отдельно
Старый 10.03.2009, 17:09   #30
Doctor Drive
Нуждающийся
 
Аватар для Doctor Drive
 
Регистрация: 28.01.2009
Сообщений: 65
Написано одно полезное сообщение
(для 2 участников)
Ответ: Lib_menu32 - Графическое меню без головной боли

В старой версии не очищается первый пункт.
В новой курсора не показывает о_О

Program MenuDemo;
Uses    menu32, font32, parse, jsr75i;
var 
root, gd, gf, path: string;
i, sel, key: integer;
a,b: image;
Begin
    
//----------------------CHOOSE DRIVE----------------------------
    
menu32.createcursor(200,20,255255000);
    
b := loadimage('/star.png');
    
path := '/';
    
parse.line(jsr75i.get_roots, '|');
    
    
font32.init(2);
    
font32.Font(0); LoadFont('Verdana_7'); 
    
font32.Font(1); LoadFont('Verdana_7b'); 
    
    
    
menu32.init; 
    
menu32.SetMenuWindow(10, 10, 110, 150); 
    
menu32.MenuFonts(0, 1);
    
for 
i := 0 to parse.len-1 do additem(b,parse.get(i));

    
    
DrawMenu; Repaint;
repeat
        key
:=KeyToAction(GetKeyClicked);
        if 
key=GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(100); end;
        if 
key=GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(100); end;
until key=GA_FIRE;
//----------------------------END OF DRIVES--------------------------------    
    
repeat

sel 
:= menu32.selected; 
path := path + parse.get(sel);
    if 
copy(parse.get(sel), length(parse.get(sel))-1,length(parse.get(sel))) <> '/' then break;
    
    
gd := jsr75i.get_dirs(path);
    
gf := jsr75i.get_files(path);

if 
gd = '' then root := gf;
if 
gd <> '' then root := gd+'|'+gf;

parse.clear;
parse.line(root, '|');
    
    
    
menu32.init;
    
    for 
i := 0 to parse.len-1 do additem(b,parse.get(i));
        
setcolor(255,255,255); fillrect(0,0,getwidth,getheight);
drawmenu; repaint;
    
    
repeat
        key
:=KeyToAction(GetKeyClicked);
        if 
key=GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(100); end;
        if 
key=GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(100); end;
until key=GA_FIRE;
    
    
until false;
    
End. 

Последний раз редактировалось Doctor Drive, 10.03.2009 в 17:36.
(Offline)
 
Ответить с цитированием