СИСАДМИНЫ!!! Не по голове не бейте за этот роман - действительно много вопросов!
Есть у меня множество в вопросов по VB 6.0, на форумах отвечают через раз, если не через 10, на многие вопросы вообще не отвечают, да и нет у меня дома выхода в Инет, в Инет-салон доби-раюсь раз в год. Вопросы иной раз мелочевочные, в учебниках таких мелочей часто нет. Огово-рюсь сразу – кому-то вопросы покажутся детсадовскими, но этот кто-то тоже ведь когда-то начи-нал?
Итак, по порядку (при работе с БД крайне желательно не использовать объект Data):
1. Имеется одна для всего мира База Данных, содержащая более 4000 записей (Международ-ная классификация болезней - МКБ). Как программно переносить некоторые записи из нее в свою БД, не занося все ее записи в таблицу в своей БД? Если так сделать, сами понимаете, какой монстр получится из моей БД. Конкретно: для каждой болезни существует ее уникальный во всем мир код МКБ. В мою БД (данные о конкретном пациенте) нужно заносить только код (он 5-6-значный), но не заносить в нее название заболевания (диагноз), название его нужно только выводить в форму для просмотра. В общем, на диске через одно приложение (в разные моменты времени) будет осуществляться доступ к обеим БД, т.е., нужно связать не таблицы в одной БД, а поля таблиц в двух разных.
2. Как программно проверить, открыта ли какая-либо БД в данный момент времени, если да, то какая? Суть: в сервисе проги делаю телефонный справочник. Пользователю нужно разрешить модифицировать его записи без зависимости от других открытых БД и таблиц. Таблица телефон-ного справочника находится в общей БД. Я представляю это так: при входе в справочник нужно где-то запомнить все открытые области, БД, таблица и поля, открыть нужные, при выходе - за-крыть отработанные и открыть изначальные. Не знаю только, как это реализовать программно.
3. Супервопрос (зато не срочный) - при переходе на новое приложение пользователю, воз-можно, понадобится перенести в него данные из других форматов БД (FoxPro, Paradox и т.п.). Как это сделать программно, не набивая их тупо вручную. При этом желательно учесть, что некоторые данные в них не совпадают (могут отсутствовать одни, или, наоборот, присутствовать другие по-ля).
4. Как проверить, какие формы открыты (загружены) в данных момент времени, если тако-вые есть, то как узнать их имена? Конкретно: имеется изначальная родительская MDI-форма, из нее открывается дочерняя, а из дочерней формы открываются еще несколько (для разных таблиц в БД), назовем их «субдочерними». При закрытии дочерней формы нужно проверить, нет ли откры-тых (не обязательно активных) субдочерних форм, если таковые есть, то закрыть (выгрузить) их.
5. Как при работе с MSFlexGrid сделать так, что бы при помещении курсора на заголовок столбца он менялся на направленную вниз стрелку, при помещении его на левый фиксированный столбец (типа «заголовок» строки

6. Дополнение – позже я кое-как дошел до сортировки столбца при щелчке на его заголовке, но не понял, как он сортирует данные именно в этом столбце без явного указания его номера. Код у меня такой:
Private Sub flTelSpr_Click() ‘flTelSpr - это MSFlexGrid
With flTelSpr
If .Row = .FixedRows Then
'сортируем данные в столбце
.Sort = 1
'cнимаем выделение столбца
.Col = 0 ‘<------
.ColSel = 0
End If
End With
End Sub
Здесь есть глюк: при щелчке на пустой таблице вызывается ошибка 30009 - Invalid Row Value. Можно, конечно, ее обработать, но хотелось бы знать, чем она вызвана. При остановке про-граммы выделение желтым цветом происходит строки, указанной стрелкой <-----.
Еще глюк (самый глючный): при помещении курсора и щелчке на первой нефиксированной строке происходит то же, что и при щелчке на фиксированной (т.е., на заголовке). MSFlexGrid реа-гирует одинаково на заголовок, и на первую строку, содержащую отображаемую запись БД. Соот-ветственно, при использовании MSFlexGrid.RemoveItem последняя строка (по номеру сетки - пер-вая) не удаляется – нельзя, грит, фиксированную строку удалить. Далее. При щелчке в левом верхнем углу сетки происходит выделение всей сетки, что, в общем-то, неплохо, но и при щелчке в 1-м нефиксированном столбце 1-й нефиксированной строки (т.е., это не заголовке, а уже записи) происходит так же выделение всей таблицы. М.б., для кого-то это непринципиально, но меня ис-комое унижает

7. Как сделать в MSFlexGrid сортировку по двум столбцам сразу (на примере телефонного справочника – имеется несколько учреждений, в каждом из них будут одинаковые отделы, но в одном учреждении одинаковых отделов, соответственно, нет). Нужно, чтобы в первом столбце выводились отсортированные по алфавиту учреждения, и отделения этих учреждений были бы расположены по алфавиту во втором столбце.
8. Как встать на нужную запись в MSFlexGrid? Суть: для редактирования записи при щелчке на кнопке формы «Редактировать» выводится InputBox, который просит ввести номер записи.
9. Еще - не могу справиться с MS Access 2000. При удалении записей из таблицы не про-граммно, а через Access, счетчик таблицы не обнуляется, и, при добавлении в нее последующих записей, он начинает счет от последней существовавшей. Допустим, в таблице изначально было 15 записей (значение счетчика, соответственно, тоже 15). При их полном удалении, и последующем вводе других записей, поля счетчика начинают заполняться с №16. Как справиться с этим?
11. Как реализовать контекстное меню при щелчке правой кнопкой мыши, причем так, чтобы меню соответствовало тому объекту, на котором был произведен щелчок? Я сделал такое меню по тем рекомендациям, что нашел в различных источниках в Инете (к слову, рекомендации одинаковы) – т.е., кидаешь на форму меню, делаешь первый пункт его visible = false, и далее по обычному пути. Затем через Mouse_Up и Mouse_Down его вызываешь и прячешь. Но вот незадача: при загрузке той формы, в которой я сделал подобное меню (а это дочерняя форма) исчезает меню в родительской MDI-форме, т.е., главное меню программы. Его нет до тех пор, пока дочернее окно с меню активно. Как только я из контекстного меню вызываю другую форму (неважно какую, лишь бы форма была активной), тут же появляется главное меню в родительской форме. При вы-ходе из вызванной формы и возврате в ту дочернюю, где имеется контекстное меню, главное сно-ва исчезает. Надо что-то делать здесь! Так работать опять же унизительно!

12. Как на форме сделать фреймы по типу как при просмотре Help’а в MS Office? Т.е., что-бы при помещении курсора на границу между фреймами он бы менялся на двунаправленную стрелку влево-вправо при вертикальном фрейме или вверх-вниз при горизонтальном и перетаски-вал бы потом границы фреймов. Соответственно, поместить туда два Textbox’а или два MSFlex-Grid’а (для моей задачи MSFlexGrid’ы нужнее), причем так, чтобы при изменении размеров фрей-мов их содержимое отражалось бы как положено, т.е. начало было бы всегда слева-сверху. Это реализовано в проге на VB 5, о которой я упоминал, но там во фреймах DBGrid’ы, а с ними мой VB 6 не дружит. И потом, на форумах часто упоминают о том, что MSFlexGrid лучше (или про-ще?) DBGrid’а.
Я, конечно, понимаю, что ответы на эти вопросы займут много времени (особенно на третий – ответ на него уже само по себе маленькое приложение), но уж больно хочется. А приложение хочется сделать не хуже общепринятых стандар-тов, так, чтобы Билл Гейтц заплакал от зависти, напился от горя, продал бы свой Microsoft за бес-ценок и запросился ко мне в ученики

С уважением – Dummiel.
Mailto: dummiel@list.ru