Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Курсак горит...КУЧА ВОПРОСОВ !!!! / 15 сообщений из 15, страница 1 из 1
18.11.2003, 17:33
    #32327794
Курсак горит...КУЧА ВОПРОСОВ !!!!
Привет, ВСЕМ !!!

Помогите, пожалуйста, у меня курсак горит, но есть некоторые вопросы. Заранее прошу прощения за то, что большинство вопросов скорее всего уже встречались в форуме, но я просто вывалил сюда все, чего не знаю, или плохо понимаю. Еще раз прошу прощения.

1) У меня 2 грида, в каждом из них имеется выделение ( синяя полоска ), которое перемещается с помощью курсора, так вот: Как сделать так, чтобы при нажатии клавиши Tab это выделение пропадало на первом гриде и появлялось на втором и наоборот ( вообщем, как в FAR'е ) ?
2) Кодировки: Есть Memo, в нем текст ( не важно какой ). Мне нужно, во-первых узнать в какой он кодировке, а во-вторых иметь возможность менять эту кодировку на DOS и на KOI8-R и обратно, тот есть из любой из этих трех кодировок в любую другую.
3) Как определить размер папки в байтах? ( естественно в этой папке могут быть и другие папки, а также файлы )
4) Скажите, как определить текстовый файл, то есть моя прога должна открывать только текстовые файлы ( не двоичные ). Как это можно определить ( неужели только по расширению )?
5) Как скопировать папку? ( естественно в этой папке могут быть и другие папки, а также файлы )
6) Как запустить ассоциированное с определенным расширением файла приложение, то есть в программе, при нажатии клавиши Enter должно запускаться определенное приложение, связанное с расширением запускаемого файла.
7) Как проследить файловые операции из других приложений, то есть если в FAR'е и проводнике Windows открыть одну и ту же папку, то при создании новой папки через проводник, эта папка автоматически появится в FAR'е. Так вот, как это реализовать?
8) Как перехватить нажатие клавиши Tab на гриде? Через OnKeyDown не получается, вместо этого приложение просто меняет фокус.

Огромное спасибо за ВАШИ ответы и комментарии !
...
Рейтинг: 0 / 0
18.11.2003, 19:45
    #32327971
Johnson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
На часть вопросов отвечу, несколько задам Артему сам.

Ответы:
1, 8.
У меня 2 грида, в каждом из них имеется выделение ( синяя полоска ), которое перемещается с помощью курсора, так вот: Как сделать так, чтобы при нажатии клавиши Tab это выделение пропадало на первом гриде и появлялось на втором и наоборот ( вообщем, как в FAR'е ) ?
Как перехватить нажатие клавиши Tab на гриде? Через OnKeyDown не получается, вместо этого приложение просто меняет фокус
.

FAR - консольное приложение. Если делаешь Windows-приложение, то интерфейс должен быть несколько иным, вместо OnKeyDown на Tab следут пользоваться OnEnter и OnExit. Соответственно с фокусом ввода работать с синими полосками отрисовывать их в Gride с фокусом ввода в OnDrawCell или другом OnDraw... (в зависимости от типа Grida).

2. Кодировки: Есть Memo, в нем текст ( не важно какой ). Мне нужно, во-первых узнать в какой он кодировке, а во-вторых иметь возможность менять эту кодировку на DOS и на KOI8-R и обратно, тот есть из любой из этих трех кодировок в любую другую.

Узнать кодировку можно только при предположении, что текст не содержит ничего кроме русских букв, иначе почти дрова . Для проверки создай файл из букв а-я, А-Я запиши в каком либо редакторе в файл в различных кодировках и посмотри в том же FARe в шестьнадцатиричном виде, WIN от DOS отличиш с KOI8 сложнее.
Преобразование из WIN в DOS AnsiToOem, CharToOem. Обратно OemToAnsi, OemToChar.

Операции с папками выполняет функция SHFileOperation - посмотри возможности в Helpe.

Артем, ты в камом ВУЗе и на какой специальности, что такие курсовые задают.
...
Рейтинг: 0 / 0
18.11.2003, 23:05
    #32328050
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
ты бы мил человек для начала написал - в какой среде пишешь ?
...
Рейтинг: 0 / 0
19.11.2003, 03:53
    #32328088
Курсак горит...КУЧА ВОПРОСОВ !!!!
Привет! Спасибо за ответы!

Учусь в КГТУ ( Красноярский Государственный Технический Университет ) на факультете ИПУ ( Информатика и процессы управления ). Курсак задали по дисциплине ТРПО ( Технология разработки программного обеспечения ).

Работаю только в C++Builder !
...
Рейтинг: 0 / 0
19.11.2003, 03:56
    #32328089
Курсак горит...КУЧА ВОПРОСОВ !!!!
...забыл совсем...

специальность 2204 - Разработка программного обеспечения в технических системах
...
Рейтинг: 0 / 0
19.11.2003, 07:36
    #32328109
Deff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
1) Если я правильно понял, то у грида должно быть свойство tabs(кажется), которое определяет ему как вести себя при табе, оставтся в себе переходя на другое поле, либо переходить на след. компонент, в соотвествии с taborder.
3) Только рекурсией.
4) Строго никак, т.е. можно с большой долей вероятности определить исходя из того какие там символы. Если нету символов <32, кроме #8, #10, #13. То скорее всего это текст и т.п.
Про кодировки так же, смотришь в каком диапазоне символы находятся, смотришь у какой кодировки диапазон русских символо так же.
5) Опять же без рекурсии никак.
6) есть консольная команад start <filename.ext>
...
Рейтинг: 0 / 0
19.11.2003, 10:01
    #32328219
Tracer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
6) Как запустить ассоциированное с определенным расширением файла приложение, то есть в программе, при нажатии клавиши Enter должно запускаться определенное приложение, связанное с расширением запускаемого файла.

ShellExecute( 0, _T("open"), filename, 0, 0, SW_SHOWNORMAL );

7) Как проследить файловые операции из других приложений, то есть если в FAR'е и проводнике Windows открыть одну и ту же папку, то при создании новой папки через проводник, эта папка автоматически появится в FAR'е. Так вот, как это реализовать?

Скорее всего FAR в доп. потоке перечитывает свои текущие директории.

Успехов
...
Рейтинг: 0 / 0
19.11.2003, 10:26
    #32328243
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
если ты хочешь чобы из одного в другой грид переходить сделай обход один за другим в VC это CTRL+D
...
Рейтинг: 0 / 0
19.11.2003, 11:11
    #32328314
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
на событие

OnKeyDown на форме где лежат Гриды
можно сделать так

Form1->KeyPreview = true

... TForm1::FormKeyDown(...)
{

if (key = VK_TAB)
{
if (Grid1->Focused)
{
Grid2->SetFocus();
Key = NULL;
}
if (Grid2->Focused)
{
Grid1->SetFocus();
Key = NULL;
}
}

}
_____________
__
...
Рейтинг: 0 / 0
19.11.2003, 19:12
    #32329350
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
// получить список всех фолдеров в заданном
//---------------------------------------------------------------------------
void ListSubFolders( set<String> &lst, String name_path )
{
if( !DirectoryExists(name_path.Trim()) )
return;
if( *name_path.AnsiLastChar() != '\\' )
name_path += "\\";
lst.insert(name_path);

TSearchRec sr;
int iAttributes = faDirectory;
vector<String> lst_dir;

if (FindFirst(name_path + "*.", iAttributes, sr) == 0)
{
do
{
if (faDirectory == sr.Attr)
if( !(sr.Name == "." || sr.Name == ".." ) )
lst_dir.push_back( name_path + sr.Name );
} while (FindNext(sr) == 0);
FindClose(sr);
}
for(int i = 0; i < (int)lst_dir.size(); i++)
ListSubFolders( lst, lst_dir );
}

//посчитать размер данной папки
//---------------------------------------------------------------------------
unsigned long getSizeFolder( String name_folder )
{
if( name_folder.IsEmpty() )
return NULL;

TSearchRec sr;
String mask = name_folder + "\\*.*";

unsigned long sz = NULL;
if( FindFirst(mask, faArchive, sr) == 0)
{
do
{
if ((sr.Attr & faArchive) == sr.Attr)
{
sz += (unsigned long)sr.Size;
}
} while (FindNext(sr) == 0);
}
FindClose(sr);
return (unsigned long)sz;
}
...
Рейтинг: 0 / 0
20.11.2003, 14:56
    #32330226
123456789098
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
относительно 7 есть подозрение что при изменении содержимого папки посылается сообщение ... документального подтверждения нет, но и вариант что в отдельном потоке перечитывается содержимое маловерорятный. Если часто читать, то будешь съедать не которое количество ресурсов, а если редко, то изменения увидешь не сразу ...
...
Рейтинг: 0 / 0
22.11.2003, 14:36
    #32332135
Курсак горит...КУЧА ВОПРОСОВ !!!!
Большое спасибо за ответы! Мой список вопросов сократился до одного вопроса: Как перехватить нажатие клавиши Tab на StringGrid, и еще, как вызвать контекстное меню для файла ( имея только его имя ). Только не создать свое собственное, а вызвать уже имеющиеся системное меню. Например, в FAR с такой задачей справляется плагин EMENU !
...
Рейтинг: 0 / 0
22.11.2003, 17:00
    #32332183
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
Ну дык один вариант я ж ужо тобе выложил :)
_____________
__
...
Рейтинг: 0 / 0
22.11.2003, 18:01
    #32332206
Курсак горит...КУЧА ВОПРОСОВ !!!!
Так ведь не форма принимает событие, а гриды !!!
...
Рейтинг: 0 / 0
22.11.2003, 18:20
    #32332212
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсак горит...КУЧА ВОПРОСОВ !!!!
Сомневаюсь... я думаю что таб отлавливает не контрол... Перескакивание с контрола на контрол это системная фича, как по мне прийдется вешать hook, и отлавливать, и обрабатывать таб до того как это сделает система...

Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Курсак горит...КУЧА ВОПРОСОВ !!!! / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]