Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListBox глюк 
V
    Опции темы
igorx86
Дата 2.4.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 8.10.2006

Репутация: нет
Всего: нет



Здравствуйте!
Есть код:
Код

procedure TMainForm.FormShow(Sender: TObject);
var
  SR:TSearchRec;
begin
//поиск всех папок с музыкой
  FindFirst(path+'*.*',faDirectory,SR);
    repeat
      if (SR.Name='.') or (SR.Name='..') or (SR.Name='') then
        continue;
      AlbumsListBox.Items.Add(SR.Name);
    until FindNext(SR)<>0;
  FindClose(SR);

  AlbumsListBox.ItemIndex:=0;

  ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);

end;

procedure TMainForm.ListSongs(dir: string);
var
  SR:TSearchRec;
begin
//поиск песен в текущей папке
  SongsListBox.Clear;
  FindFirst(path+dir+'\*.mp3',faAnyFile,SR);
    repeat
      if (SR.Name='.') or (SR.Name='..') or (SR.Name='') then
        continue;
     SongsListBox.Items.Add(SR.Name);
    until FindNext(SR)<>0;
    FindClose(SR);
  SongsListBox.ItemIndex:=0;
end;

procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    Key_3:begin
            AlbumsListBox.ItemIndex:=AlbumsListBox.ItemIndex-1;
            ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);
          end;
    Key_4:begin
            AlbumsListBox.ItemIndex:=AlbumsListBox.ItemIndex+1;
            ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);
          end;
  end;//end case
end;


но при нажатии Key_4 индекс элемента сразу становится 4, при следующем нажатии 5 и потом опять 4,не могли бы подсказать в чем проблема?

Заранее спасибо!
PM MAIL   Вверх
X-Vlad
Дата 3.4.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: нет
Всего: 5



Ставишь у формы KeyPreview = True;

Код

procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    VK_F2    :begin
            if AlbumsListBox.ItemIndex-1 <> -1 then // Чтобы невылетала ошибка что нету такого итемса
              AlbumsListBox.ItemIndex:= AlbumsListBox.ItemIndex-1;
            ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);
          end;
    VK_F3    :begin
            if AlbumsListBox.ItemIndex+1 <= AlbumsListBox.Items.Count then // Чтобы невылетала ошибка что нету такого итемса 
              AlbumsListBox.ItemIndex:=AlbumsListBox.ItemIndex+1;
            ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);
          end;
  end;//end case
end;


чтото я ненашел Key_3, Key_4. Где ты их нарыл? smile
Поставил Ф2, Ф3

Добавлено через 2 минуты и 59 секунд
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TMainForm = class(TForm)
    AlbumsListBox: TListBox;
    SongsListBox: TListBox;
    Button1: TButton;
    procedure AlbumsListBoxClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    procedure ListSongs(dir: string);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.AlbumsListBoxClick(Sender: TObject);
begin
  ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);
end;

procedure TMainForm.FormShow(Sender: TObject);
var
  SR:TSearchRec;
begin
//поиск всех папок с музыкой
  FindFirst('d:\'+'*.*',faDirectory,SR);
    repeat
      if (SR.Name='.') or (SR.Name='..') or (SR.Name='') then
        continue;
      AlbumsListBox.Items.Add(SR.Name);
    until FindNext(SR)<>0;
  FindClose(SR);

  AlbumsListBox.ItemIndex:=0;

  ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);

end;

procedure TMainForm.ListSongs(dir: string);
var
  SR:TSearchRec;
begin
//поиск песен в текущей папке
  SongsListBox.Clear;
  FindFirst('d:\'+dir+'\*.mp3',faAnyFile,SR);
    repeat
      if (SR.Name='.') or (SR.Name='..') or (SR.Name='') then
        continue;
     SongsListBox.Items.Add(SR.Name);
    until FindNext(SR)<>0;
    FindClose(SR);
  SongsListBox.ItemIndex:=0;
end;

procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    VK_F2    :begin
            if AlbumsListBox.ItemIndex-1 <> -1 then
              AlbumsListBox.ItemIndex:= AlbumsListBox.ItemIndex-1;
            ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);
          end;
    VK_F3    :begin
            if AlbumsListBox.ItemIndex+1 <= AlbumsListBox.Items.Count then
              AlbumsListBox.ItemIndex:=AlbumsListBox.ItemIndex+1;
            ListSongs(AlbumsListBox.Items.Strings[AlbumsListBox.ItemIndex]);
          end;
  end;//end case
end;

end.




--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
igorx86
Дата 3.4.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 8.10.2006

Репутация: нет
Всего: нет



Цитата(X-Vlad @ 3.4.2008,  14:10)

чтото я ненашел Key_3, Key_4. Где ты их нарыл? smile
Поставил Ф2, Ф3

При подключении qt.pas все клавиши записаны в виде Key_0 ... Key_9

Спасибо, разобрался

Код

    Key_0 = 48 { $30 };
    Key_1 = 49 { $31 };
    Key_2 = 50 { $32 };
    Key_3 = 51 { $33 };
    Key_4 = 52 { $34 };
    Key_5 = 53 { $35 };
    Key_6 = 54 { $36 };
    Key_7 = 55 { $37 };
    Key_8 = 56 { $38 };
    Key_9 = 57 { $39 };



Это сообщение отредактировал(а) igorx86 - 3.4.2008, 18:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.