Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Irokez
1

Помогите найти ошибку маски в FileListBox

30.08.2009, 18:34. Просмотров 865. Ответов 4
Метки нет (Все метки)

Проблема такая:
есть массив масок (aa??.txt,bb?.txt,...,novkan??.txt,...)
прога в цикле перебирает все маски и соответственно обновляет
контрол FileListBox.
Дойдя до novkan??.txt в списке появляются 2 файла
novkan12.txt и novkan12_u.txt
Та же ситуация еще в нескольких аналогичных случаях, но
закономерности нет.

Кто-то знает в чем может быть проблема?
Или, если нет идей, подскажите как выбрать файлы
по маске без использования FileListBox.

P.S. проблемы нет в коде программы
потому что я сделал новую с одним окном
без кода (ну минимум) - проблема осталась.
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2009, 18:34
Ответы с готовыми решениями:

Помогите найти ошибку в коде.
Option Compare Text Option Explicit Private Declare Function EbExecuteLine Lib 'vba6.dll' ...

Помогите найти ошибку в синтаксисе.
Компайлер говорит, что в районе = в sql-команде ошибка в синтаксе. Я уже заискался... Свежие...

Программа пишет ошибку!! Помогите найти ошибку
Program Summa; var i, N, M: integer; begin Writeln ('Введите значение N:'); Read (N); ...

Помогите найти ошибку: По двум сторонам и углу найти все остальное
Доброго времени суток. В универе дали задание написать программу "По двум сторонам и углу между...

Найти коэффициент при 10 степени в разложении бинома Ньютона (помогите найти ошибку).
"После умножения скобок и приведения подобных в полиноме будет слагаемое с x**10. Перед ним стоит...

4
Comanche
31.08.2009, 11:39 2
А зачем перебирать В ЦИКЛЕ файловые маски? У FileListBox-а ведь есть свойство Pattern, которое поддерживает более одной маски запросто. Например, FileListBox1.Pattern = '*.doc; *.dot; *.rtf'. Изменение этого свойства даже отдельное событие генерирует - PatternChange!

Если это не поможет, и FileListBox всё равно будет глючить, то используй Dir + ListBox/ComboBox вкупе с циклом. Хотя энто не очень красиво (

Можно ещё поискать контролы 'на замену' стандартному FileListBox. Наверняка есть. Есть даже такой пакет - CCRP (Common Controls Replacement Project), но я не помню, есть ли в нём нужный тебе контрол.
Irokez
31.08.2009, 12:03 3
Comanche! спасибо за ответ!

1 шаблонов около 150 и вместе компонент не выдерживает
а они еще и длинные (до 10 символов)

2 DIR для меня был бы более предпочтительным но как-то я с ним
не подружился изначально и не представляю как он работает. ((

3 нашел функцию проверки соответствия строки шаблону.
наверное буду ее использовать. неплохо сделана но в
качестве шаблона понимает только * и ?. для проверки
файлов подойдет но больше никуда, мне бы различать
большие, маленькие, цифры, знаки препинания. но это уже
для других целей. если не найду ничего толкового придется
изобретать велосипед. не знаешь ли такой функции в API?

появилась еще одна проблема:
я использую ListBox.Style=флажки. и нужно сделать 3 состояния
тоесть закрасить флажок сереньким - стандартно не получается
а API тоже ничего не нашел. И второе как запретить юзерам
снимать и ставить флажки руками - оставить только програмное
изменение? подозреваю что придется искать альтернативный контрол,
но очень хочется обойтись стандартными. я бы их даже субкласировал
если бы знал что с ними дальше делать ((

еще раз спасибо за ответ!
Comanche
31.08.2009, 13:14 4
Кстати, вот ещё примерчик в тему:
http://www.vbnet.ru/sample/sampledownload.asp?id=217
Довольно интересный (правда, интерфейс убогий, но это всего лишь пример).
Как откроешь проект, сразу иди в Sub Form_Load() и задай желаемые параметры вызова Sub ScanForFiles, чтобы проверить, работает ли оно так, как тебе надо.

По поводу флажков и листбокса. Если тебе не обязательно нужен dropdown-список, то используй ListView из MS Windows Common Controls. У него легко запрещать установку флажков руками, разрешая её только из кода. Вот пример (на форму добавь кнопку и листвью):
Код
Private Sub Command1_Click()
    ListView1.ListItems(2).Checked = True
End Sub
'
Private Sub Form_Load()
    Command1.Caption = 'Check second item'
    With ListView1
        .Checkboxes = True
        .View = lvwReport
        .LabelEdit = lvwManual
        .GridLines = True
        .ColumnHeaders.Add , , 'First'
        .ColumnHeaders(1).Width = .Width - 50
        .ListItems.Add , , 'First item in list'
        .ListItems.Add , , 'Second item in list'
    End With
End Sub
'
Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
    Item.Checked = False
End Sub
Как сделать ТРИ состояния флажка - не знаю. Наверное, только используя дебри API...
Irokez
31.08.2009, 13:58 5
Спасибо за пример, проверить пока не могу
завтра сообщу результат но модуль оттуда мне нравится.

по поводу ListView1: если его использовать то придется нести
OCX на машину пользователя но если ничего другого не придумаю
то придется так и поступить.

Спасибо!
31.08.2009, 13:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2009, 13:58

Помогите найти ошибку в коде. Найти сумму ряда
Добрый день, помогите найти ошибку. Задача: Найти сумму ряда, вычисление ввести до тех пор пока...

Помогите найти ошибку)
Помогите пож-та найти ошибку. Конкурс красоты. Каждая участница набрала определенное кол-во...

помогите найти ошибку
<?php Error_Reporting(E_ALL & ~E_NOTICE); // Устнавливаем соединение с базой данных ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.