![]() |
|
![]() ![]() ![]() |
|
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Недавно начал писать на C++. Использую Borland C++ Builder v 6.0.
Для реализации моей программы необходимо вызвать вторую форму. При попытке функции Showmodal(). ![]() Если не сложно пропишите код для нажатия кнопки - запуск формы. + Хотелось бы услышать алгоритм для следующей программы - В списке ListBox есть несколько элементов. Можно открыть для каждого элемента своё меню, в котором лежит своя информация, это меню можно редактировать. Но создается только одна шаблонная форма. И под каждый элемент в этом шаблоне должна лежать своя информация. Пример в программах - список контактов в ICQ и инфо о контакте. То есть для всех контактов своя инфа, но одинаковый шаблон заполнения. Помогите начинающему программеру. ![]() |
|||
|
||||
witex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 1 Всего: 4 |
Скорее всего, ты зыбыл в главной форме забыл сделать инклуд .h файла, втрой формы.
Потом надо создать указатель на класс, и только потом SHowModal();
а насчёт шаблоно, сделай опыять же форму, заполняемую из файла к примро по id. А при клик на отдельный элемент берёшь его id, загружаешь инфу из файла по id и потом показываешь форму! --------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Спасибо. Можно поподробнее про ID?
|
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Приведенный пример может не работать - указатель непроинициализирован. В Билдере 2 варианта создания форм (настраивается в своствах проекта) - автоматически, это форма создается на этапе инициализации приложения и вручную - тогда форму необходимо создать самому, используя new. В приведенном выше примере подразумевается, что указатель на форму содержит действительно указатель на форму (т.е. форма создана при инициализации приложения) Если брать примером аську - там используется обычное PopUp меню. По реализации могу предложить следующий вариант: В комбобоксе - список неких значений. К комбобоксу цепляему PopUp меню, которое содержит набор (шаблон) действий. При вызове этого меню - берем текущий индекс Комбобокса (или другим способом узнаем текущее его значение) - и уже действуем. Все дело происходит в обработчике PopUp меню. |
||||
|
|||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Да. Для ввода согласен. А для просмотра информации? То есть когда мы уже открываем готовый контакт. Может быть стоит создать txt, в котором на каждой строке будет лежать информация по контакту?
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Список контактов в файле. загружаем файл. В Листбокс выводим ключевые поля. При нажатии кнопки в листбоксе выводим дополнительную форму с информацией.
|
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Ключевые поля? В данном случае имя контакта, так? Если вторая форма содержит несколько полей? Как лучше разбить строку в файле чтобы можно было легко считывать для каждого поля свою информацию?
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Я не люблю текстовые файлы. Я бы делал в собственном формате. Текстовые файлы - стандартно разбиваем, табуляцией. Преимущества такого подхода - этот файл легко формируется в экселе. |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Собственный формат? база данных?
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Там что, будет 10000 записей? Тогда надо использовать нормальную СУБД А если на 20 - 100 записей, то можно и в файл сохранить |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Все правильно прописал. При запуске программы, при нажатии кнопки, которая отвечает за вызов второй формы выкидывается сообщение об ошибке ехе-файла. Код ошибки или имеет вид 0000000., или не умещается в окне. Что это? Все таки решил использовать базу данных. Хочется чтобы пользователь работал с окном, где видны все поля ввода, а не талбица. Можно ли работать с базой, не создавая таблицу непосредственно в форме? Если да то какие компоненты?
|
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Все смещалось в доме Обломских.... В первую очередь вас интересует вызов форму или БД? Если ваша программа выдает некую ошибку - код в студию. Если интересуют вопросы подключения и использования БД - опишите задачу. |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
2Anikmar
Ну уж извини. 1)О форме. Есть две формы. Первая - Main. Вторая - доступна ( В окне мэнэджера). При нажатии на кнопку "Добавить" должна открыться Form2 в модальном режиме.
Компилятор ошибок не выявляет и программа запускается. Всплывает форма1, жмем "Добавить" и вылезает ошибка : "Access violation at adress 00401CFF in module "mxat.exe". Read of 00000000." С единственной кнопкой - ОК. 2) Формулирую смысл программы. В главной форме есть компонент ListBox, в котором перечислены имена контактов, и кнопки компоненты для управления списком. При нажатии Добавить или Редактировать\Смотреть всплывает форма2, в которой и вводится информация. Хочется реализовать это с помощью базы данных. И можно ли это сделать таким образом, чтобы не чертить саму таблицу. Как бы работать с базой которая нигде не видна пользователю. Нужно ли её создавть и скрывать, или можно создать как бы "абстрактную" базу. Которая висит в памяти и работает с программой. |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Form2 - инициализирован?
Эта форма точно создана или в проекте значится как свободная? |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Что значит инициализирована? И что значит ссвободная?
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
В проекте есть настройки создания форм. Если AutoCreate - значит форма автоматически создается при запуске приложения. Если она в окошке "Available" - значит ее нужно в приложении создавать с помощью оператора new Надо открыть меню Projects->Options и посмотреть как создается Form2 |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Спасибо, мэн. У меня Form2 была Available. Все теперь рабоатет. А вообще как полезно использовать Available. Ведь с виду без разницы как форму запускать?
+ Не напишешь алгоритм для проги? И ответь плз про базы. Это сообщение отредактировал(а) Anark1 - 18.12.2006, 20:09 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Тут двояко можно смотреть на этот момент. Созданные автоматически формы всегда находятся в памяти и если их много, то получается расстояительно. Лично я обычно создаю их самостоятельно, но если их немного, то можно и автоматом. Теперь по поводу БД. В стандарте билдера есть некий движок BDE (чисто борландовская тема). Работает неплохо, но имеются некоторые трудности с установкой на другую машину. Лично я использую компоненты ADO. По поводу самой СУБД - тут дело вкуса. Я использую MS SQL 2000. Для более простых задач достаточно использовать PARADOX, но надо сразу определиться - будит ли программа многопользовательская или нет. PARADOX весьма криво поддерживает многопользовательский режим и вероятность слетания базы в нем выше. По поводу алгоритма - я пока честно говоря не понял задачи. Что должна вцелом реализовывать программа. |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Я уже создал базу данных. Подредактировал кодировку PARADOX. С этим проблем нет.
Программа - лист контактов в главной форме + кнопки управления и вторая всплывающая форма, которая содержит информацию по текущему контакту. Можно ли это реализовать при помощи базы данных? |
|||
|
||||
Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: 1 Всего: 1 |
Легко Лучше использовать не PARADOX, а ACCESS |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
В чем разница между PARADOX и ACCESS?
Можно увидеть алгоритм? Мне не очень понятно как сделать так, чтобы для каждого контаккта отображалась своя инофрмация. То есть, команды для работы с ячейками, строками. столюцами. полями базы данных. ![]() |
|||
|
||||
Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: 1 Всего: 1 |
Сейчас сам ищу разницу.
1. Удобнее работать с датами 2. Легче настраивать 3. В Access нет геммороя с BDE Форму лучше создавать самому (Available), а не хранить х в памяти.
Вот только не знаю, надо ли потом делать delete Form2? Это сообщение отредактировал(а) Syrex - 20.12.2006, 10:32 |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Что означает ключевое слово THIS в скобках?
З.Ы. Можно увидеть алгоритм? Мне не очень понятно как сделать так, чтобы для каждого контаккта отображалась своя инофрмация. То есть, команды для работы с ячейками, строками. столюцами. полями базы данных. ![]() ![]() ![]() |
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Лучше создавать форму, передавая ей в качестве параметра не this, а Application Использовать delete надо, если в событии формы OnClose параметр CloseAction не устанавливается в значение caFree. По поводу алгоритма: Там нет никакого алгоритма! Есть список записей - отображается стандартным контролом, допустим DBGrid. Обрабаотываем двойной щелчок. Считываем текущую запись, на основе ее формируем запрос на выборку необходимой информации из БД и уже отображаем ее во второй форме. |
||||
|
|||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Не
![]() |
|||
|
||||
Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: 1 Всего: 1 |
В адо используются стандартные команды SQL
|
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Для меня это ничего не меняет. Че, так сложно?
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Пример чего?
Например так: MyQuery->SQL->Text = "SELECT * FROM MyTable"; MyQuery->Open(); ... MyQuery->Close(); Компоненты ADO располагаются на форме (или модуле данных), в них настраивается подключение к БД, там же можно задать операторы SQL, на форме размещаются компоненты доступа к данным и DatabaseControls - и вперед! |
|||
|
||||
HappyLife |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Кхм.... Может быть лучше с Hello world начать?
![]() |
|||
|
||||
Syrex |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: 1 Всего: 1 |
я бы сделал так:
|
||||
|
|||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Все эти консольные приложения это элементарно. Хорошо зная Турбо Паскаль это не сложно перенести свои знания. В Си. Остальным спасибо. будут вопросы - напишу. |
|||
|
||||
Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: 1 Всего: 1 |
Если что - у мня есть программа работы с БД с помощью ADO
|
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
А обязательно использовать Query?
Например, у меня заполнена форма 2 с данными для первого поля таблицы. Почему нельзя использовать методы при клик кнопки ОК на форме: Form1->Table1->Append(); Form1->Table1->Pos(); и т.д. Только как каждмоу полю строки придать свою информацию. А если использовать Query то поясните пожалста как правильно настроить свойство SQL? |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
2Anikmar
Я так понимаю, что связь между моим ЛистБоксом и БД осуществляется через Name. То есть первое поле БД и элементы списка. Так вот каким методом мне прописать каждому полю свою информацию? Через Table. |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Надо использовать компоненты с вкладки DataControls
Там есть компоненты, работающие с БД - DBGrid, DBEdit и т.п. В них есть свойство DataSource и FieldName (в DBGrid - Columns) Устанавливаешь при помощи этих свойств связь с БД и вперед. Там же выше предлагали готовый проектик для изучения... И вообще - все-таки надо бы чего-нибудь прочитать. Например Архангельского. |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Архангельского скачал. Насколько я знаю DBGrid рисует таблицу. Мне это не нужно. Возможно установить связь с БД, не создавая её в форме?
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Кого не создавая? БД? А зачем ее создавать в форме? DBGrid - ОТОБРАЖАЕТ ТАБЛИЦУ БД Он ее на создает. Если есть готовая таблица - ее можно увидеть, используя DBGrid - он предоставляет возможность передвигаться по записям и редактировать поля таблицы. Если интересует только 1 запись - можно сделать SELECT только на одну конкретную запись и менять значения полей при помощи одиночных контролов работы с БД - таких как DBEdit. |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
То есть пользователь не будет видеть эту таблицу?
![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Я говорю таблица в понимании Таблица базы данных. А как ее отобразить на форме - это уже личное дело программиста. Не нравится DBGrid используй DBControlGrid либо вообще вручную поля показывает в том, что душа пожелает - хоть с TStatusBar ![]() |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Оке. Попробую.
|
|||
|
||||
OutlawZ |
|
|||
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 269 Регистрация: 19.10.2007 Репутация: нет Всего: нет |
Зачем что то инициализировать? если нужно что бы просто по нажатию на кнопку вылетала вторая форма то делаем так, есть первый проект, создаем вторую форму как показано ниже:
И все работает!!!! -------------------- ![]() ![]() |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
OutlawZ, имхо я думаю что спустя два года проблему уже решили
![]() |
|||
|
||||
OutlawZ |
|
|||
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 269 Регистрация: 19.10.2007 Репутация: нет Всего: нет |
Сорри не посмотрел на дату
![]() -------------------- ![]() ![]() |
|||
|
||||
Goodilla |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 10.10.2007 Репутация: нет Всего: 1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |