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, linestattypStringList.TStringList;
  
idnowdointeger;
  
cmdcmdOKcmdExitcommand;
  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('Загрузка...'))/2GetHeight 20);
  
repaintDelay(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_OK1);
        
cmdExit:=CreateCommand('Выход'CM_EXIT2);
        
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:=else
        if 
MenuGetSelectedIndex=1 then nowdo:=else
        if 
MenuGetSelectedIndex=2 then nowdo:=else
        if 
MenuGetSelectedIndex=3 then Halt// или break
        
ShowAlert('NowDo'''+nowdoLoadImage('/icon.png'), ALERT_INFO);
        
RepaintDelay(3000);
    
until false;
end


DJ PhoeniX 16.07.2009 20:17

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

odd 23.07.2009 21:53

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


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

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