|
|
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
Привет, ВСЕМ !!! Помогите, пожалуйста, у меня курсак горит, но есть некоторые вопросы. Заранее прошу прощения за то, что большинство вопросов скорее всего уже встречались в форуме, но я просто вывалил сюда все, чего не знаю, или плохо понимаю. Еще раз прошу прощения. 1) У меня 2 грида, в каждом из них имеется выделение ( синяя полоска ), которое перемещается с помощью курсора, так вот: Как сделать так, чтобы при нажатии клавиши Tab это выделение пропадало на первом гриде и появлялось на втором и наоборот ( вообщем, как в FAR'е ) ? 2) Кодировки: Есть Memo, в нем текст ( не важно какой ). Мне нужно, во-первых узнать в какой он кодировке, а во-вторых иметь возможность менять эту кодировку на DOS и на KOI8-R и обратно, тот есть из любой из этих трех кодировок в любую другую. 3) Как определить размер папки в байтах? ( естественно в этой папке могут быть и другие папки, а также файлы ) 4) Скажите, как определить текстовый файл, то есть моя прога должна открывать только текстовые файлы ( не двоичные ). Как это можно определить ( неужели только по расширению )? 5) Как скопировать папку? ( естественно в этой папке могут быть и другие папки, а также файлы ) 6) Как запустить ассоциированное с определенным расширением файла приложение, то есть в программе, при нажатии клавиши Enter должно запускаться определенное приложение, связанное с расширением запускаемого файла. 7) Как проследить файловые операции из других приложений, то есть если в FAR'е и проводнике Windows открыть одну и ту же папку, то при создании новой папки через проводник, эта папка автоматически появится в FAR'е. Так вот, как это реализовать? 8) Как перехватить нажатие клавиши Tab на гриде? Через OnKeyDown не получается, вместо этого приложение просто меняет фокус. Огромное спасибо за ВАШИ ответы и комментарии ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 17:33 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
На часть вопросов отвечу, несколько задам Артему сам. Ответы: 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. Артем, ты в камом ВУЗе и на какой специальности, что такие курсовые задают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 19:45 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
ты бы мил человек для начала написал - в какой среде пишешь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 23:05 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
Привет! Спасибо за ответы! Учусь в КГТУ ( Красноярский Государственный Технический Университет ) на факультете ИПУ ( Информатика и процессы управления ). Курсак задали по дисциплине ТРПО ( Технология разработки программного обеспечения ). Работаю только в C++Builder ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 03:53 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
...забыл совсем... специальность 2204 - Разработка программного обеспечения в технических системах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 03:56 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
1) Если я правильно понял, то у грида должно быть свойство tabs(кажется), которое определяет ему как вести себя при табе, оставтся в себе переходя на другое поле, либо переходить на след. компонент, в соотвествии с taborder. 3) Только рекурсией. 4) Строго никак, т.е. можно с большой долей вероятности определить исходя из того какие там символы. Если нету символов <32, кроме #8, #10, #13. То скорее всего это текст и т.п. Про кодировки так же, смотришь в каком диапазоне символы находятся, смотришь у какой кодировки диапазон русских символо так же. 5) Опять же без рекурсии никак. 6) есть консольная команад start <filename.ext> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 07:36 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
6) Как запустить ассоциированное с определенным расширением файла приложение, то есть в программе, при нажатии клавиши Enter должно запускаться определенное приложение, связанное с расширением запускаемого файла. ShellExecute( 0, _T("open"), filename, 0, 0, SW_SHOWNORMAL ); 7) Как проследить файловые операции из других приложений, то есть если в FAR'е и проводнике Windows открыть одну и ту же папку, то при создании новой папки через проводник, эта папка автоматически появится в FAR'е. Так вот, как это реализовать? Скорее всего FAR в доп. потоке перечитывает свои текущие директории. Успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 10:01 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
если ты хочешь чобы из одного в другой грид переходить сделай обход один за другим в VC это CTRL+D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 10:26 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
на событие OnKeyDown на форме где лежат Гриды можно сделать так Form1->KeyPreview = true ... TForm1::FormKeyDown(...) { if (key = VK_TAB) { if (Grid1->Focused) { Grid2->SetFocus(); Key = NULL; } if (Grid2->Focused) { Grid1->SetFocus(); Key = NULL; } } } _____________ __ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 11:11 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
// получить список всех фолдеров в заданном //--------------------------------------------------------------------------- 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; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 19:12 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
относительно 7 есть подозрение что при изменении содержимого папки посылается сообщение ... документального подтверждения нет, но и вариант что в отдельном потоке перечитывается содержимое маловерорятный. Если часто читать, то будешь съедать не которое количество ресурсов, а если редко, то изменения увидешь не сразу ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 14:56 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ответы! Мой список вопросов сократился до одного вопроса: Как перехватить нажатие клавиши Tab на StringGrid, и еще, как вызвать контекстное меню для файла ( имея только его имя ). Только не создать свое собственное, а вызвать уже имеющиеся системное меню. Например, в FAR с такой задачей справляется плагин EMENU ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:36 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 17:00 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
Так ведь не форма принимает событие, а гриды !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 18:01 |
|
||
|
Курсак горит...КУЧА ВОПРОСОВ !!!!
|
|||
|---|---|---|---|
|
#18+
Сомневаюсь... я думаю что таб отлавливает не контрол... Перескакивание с контрола на контрол это системная фича, как по мне прийдется вешать hook, и отлавливать, и обрабатывать таб до того как это сделает система... Легче написать не правильную программу чем понять правильную (С) Alan Perlis ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 18:20 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32328314&tid=2035748]: |
0ms |
get settings: |
11ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 366ms |

| 0 / 0 |
