forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   Проблема: глючное меню (http://forum.boolean.name/showthread.php?t=8674)

DJ PhoeniX 15.07.2009 17:40

Проблема: глючное меню
 
Вложений: 1
Собственно, делаю расписание электричек ;)
Проблему увидите сами из исходника.
Как я понял, после прохода, он просто автоматом нажимает первый пункт меню.
Как выловить и исправить?

odd 16.07.2009 19:53

Ответ: Проблема: глючное меню
 
Цитата:

Сообщение от DJ PhoeniX (Сообщение 111016)
Собственно, делаю расписание электричек ;)
Проблему увидите сами из исходника.
Как я понял, после прохода, он просто автоматом нажимает первый пункт меню.
Как выловить и исправить?

Вот так будет правильнее и без глюков:

PHP код:

Program Elektrichka2009;
Uses typStringList;

var
  
vects, list, line, stat: typStringList.TStringList;
  
id, nowdo: integer;
  
cmd, cmdOK, cmdExit: command;
  exit: 
boolean;
  
procedure Load;
var
  
res:resource;
  
b:integer;
  
s:string;
  
time:integer;
begin
  ShowCanvas
;
  
DrawImage(LoadImage('/logo.png'),0,0);
  
SetColor(0,128,0); 
  
DrawText('Загрузка...', (GetWidth - GetStringWidth('Загрузка...'))/2, GetHeight - 20);
  
repaint; Delay(5000);
  
  {
  
// Это я закомментировал пока, нет файлов, не откуда считывать
  
res:=OpenResource('/vects.lst');
  
repeat
    b
:=ReadByte(res); // Не проще ли сразу строками считывать? Побайтно это жутко долго.
    
s:=s+chr(b);
  
until b=eof;
  
vects:=SetStringList(s,chr(13));
  
res:=OpenResource('/trains.lst');
  
repeat
    b
:=ReadByte(res); // то же
    
s:=s+chr(b);
  
until b=eof;
  list:=
SetStringList(s,chr(13));
  }
end;
  

begin
    Load
; ShowForm;
    
repeat
        ClearForm
;
        
ShowMenu('Главное меню',CH_IMPLICIT);
        
id:=MenuAppendString('Показать расписание');
        
id:=MenuAppendString('Ближайший поезд');
        
id:=MenuAppendString('Найти поезд');
        
id:=MenuAppendString('Выход');
        
cmdOK:=CreateCommand('ОК', CM_OK, 1);
        
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
        
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
        
AddCommand(cmdExit);
        
Repaint;
        
cmd := EMPTYCOMMAND;
        
repeat
            cmd
:=GetClickedCommand;
            if 
cmd=cmdExit then Halt;
            
Delay(50); // Вставь тут небольшую паузу. Система же должна считывать клавиатуру.    
        
until cmd=cmdOk;
        
ShowForm;
        if 
MenuGetSelectedIndex=0 then nowdo:=2 else
        if 
MenuGetSelectedIndex=1 then nowdo:=3 else
        if 
MenuGetSelectedIndex=2 then nowdo:=4 else
        if 
MenuGetSelectedIndex=3 then Halt; // или break
        
ShowAlert('NowDo', ''+nowdo, LoadImage('/icon.png'), ALERT_INFO);
        
Repaint; Delay(3000);
    
until false;
end. 


DJ PhoeniX 16.07.2009 20:17

Ответ: Проблема: глючное меню
 
Сделал так, теперь не работает центральная клавиша... ладно, поколбашусь с KeyToAction & Ko...

odd 23.07.2009 21:53

Ответ: Проблема: глючное меню
 
Сделай графическое меню с помощью либы Lib_menu32 и не мучайся.


Часовой пояс GMT +4, время: 02:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot