Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
1

Форма авторизации + fsMDIForm + fsMDIChild

20.09.2013, 13:55. Показов 2236. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток форумчане! Помогите довести до ума тестовую прогу с использованием формы авторизации, главной формы и дочерней формы. Проблема в том, что при открытии дочерней формы вылазит ошибка No MDI Forms are active. Вот проект....
Вложения
Тип файла: rar TEST.rar (81.2 Кб, 20 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2013, 13:55
Ответы с готовыми решениями:

Форма авторизации
Помогите настроить форму авторизации. Сам код проверки нажатия на кнопку, вписываешь пароль и если...

Форма авторизации и регистрации открывается до главной формы
Здравствуйте, делал форму авторизации по данному уроку Ссылка. Все работает отлично, но мне нужно,...

Не работает OnKeyDown на форме fsMDIForm
На форме fsMDIForm не работает событие OnKeyDown (даже если установить KeyPreview). Если установить...

Форма авторизации +ini
Ребят,подскажите как реализовать такой момент. Есть много Sql серверов .подключение происходит с...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
20.09.2013, 14:17 2
У тебя вообще в проекте никаких дочерних форм нет... Только одна, главная форма приложения...
0
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
20.09.2013, 14:25  [ТС] 3
Сорри забыл сохранить.
Вложения
Тип файла: rar TEST.rar (83.5 Кб, 17 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
20.09.2013, 14:48 4
А я тысячу раз говорил, что форму авторизации надо показывать ДО инициализации приложения. Говорил? Говорил. На меня все тогда накинулись? Накинулись. Так вот возьми проект из архива, и посмотри, что происходит при правильной организации авторизационной формы. Что происходит, если делать неправильно - ты уже видел...
Вложения
Тип файла: zip TEST.zip (78.1 Кб, 40 просмотров)
1
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
20.09.2013, 16:12  [ТС] 5
Спасибо все ОК. Возьмем на заметку.

Добавлено через 1 час 2 минуты
Не могу разобраться почему при развертывании на весь экран открытой дочерней формы попадают ее кнопки закрыть, свернуть и на весь экран? Как быть?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
20.09.2013, 16:30 6
Добавить или MainMenu на главную форму, или TActionMainMenuBar (это не самый хороший вариант, глючный компонент). Тогда в строке меню будут отображаться кнопки дочерней формы. А сейчас им просто негде отображаться.
1
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
20.09.2013, 16:36  [ТС] 7
Спс.
0
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
27.09.2013, 16:17  [ТС] 8
Сложилась такая ситуация, что при авторизации введенный логин и пароль нужно использовать в другой форме для вставки в процедуру которая в свою очередь отправляет это все sql запросом на сервер. К примеру заношу значение поля Edit в переменную типа String предварительно объявив ее в .h. После этого пытаюсь с дугой формы ее вызвать и БОЛТ ОШИБКА. Я так понял что форма регистрации тупо удаляется вместе со всеми переменными. Вопрос как быть???
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
27.09.2013, 17:06 9
Кто мешает описать 2 строковые переменные там, где они будут использоваться, а к форме авторизации приинклудить вот такой простой заголовочный файлик:

C++
1
2
3
4
5
6
7
#ifndef AuthH
#define AuthH
 
extern String sUser; // это только declaration
extern String sPass;
 
#endif
, и теперь:

C++
1
2
3
4
5
6
7
8
void __fastcall TLoginForm::Button1Click(TObject *Sender)
{
    // Авторизация успешна? Запоминаем:
    sUser = editUser->Text;
    sPass = editPass->Text;
 
    ModalResult = mrOk; // и закрываем форму авторизации
}
, а, скажем, в MDIChild форме (ну, или где там надо), работать с этим значениями:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// ---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Auth.h"
#include "Unit3.h"
#include "Unit1.h"
 
String sUser; // Вот definition этих переменных
String sPass;
 
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
 
// ---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner) : TForm(Owner)
{
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)
{
    Action = caFree;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm3::btnShowCredentialsClick(TObject *Sender)
{
    ShowMessage(String().sprintf(L"Юзер: %s\nПароль: %s\n", sUser, sPass));
}
// ---------------------------------------------------------------------------
1
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
27.09.2013, 17:56  [ТС] 10
Спасибо Вам за ответ. Не получается приинклудить хэдер.
C
1
2
[ilink32 Error] Error: Unresolved external '_init_user' referenced from C:\USERS\KICHAK\DOCUMENTS\RAD STUDIO\PROJECTS\MOBSTER 2.0\WIN32\DEBUG\REGFORM.OBJ
[ilink32 Error] Error: Unresolved external '_init_pass' referenced from C:\USERS\KICHAK\DOCUMENTS\RAD STUDIO\PROJECTS\MOBSTER 2.0\WIN32\DEBUG\REGFORM.OBJ
Это logindata.h
C++
1
2
3
4
5
#ifndef logindataH
#define logindataH
extern String init_user;
extern String init_pass;
#endif
Это regform.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "regform.h"
#include "IniFiles.hpp"
#pragma package(smart_init)
#pragma resource "*.dfm"
#include "logindata.h"
TForm2 *Form2;
TIniFile *Ini1 = new TIniFile(ExtractFilePath(Application->ExeName ) + "config.ini");
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
 if (Edit1->Text!=""&&Edit2->Text!="") {
init_user = Edit1->Text;
init_pass = Edit2->Text;
//ADOQuery1->Блаблабла;
if (ADOQuery1->RecordCount>0) {
 
 
    ModalResult = mrOk;
 
}
else
{
 
MessageBox(0,L"Невірний логін або пароль!",L"Увага!", MB_OK + MB_ICONWARNING);
}
}
else
{
MessageBox(0,L"Невірний логін або пароль!",L"Увага!", MB_OK + MB_ICONWARNING);
}
}
 
bool __fastcall TForm2::Execute()
{
    bool Result;
    TForm2 *LoginForm = new TForm2(NULL);
    try
    {
        Result = (LoginForm->ShowModal() == mrOk);
    }
    __finally
    {
        delete LoginForm;
    }
    return Result;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::Button3Click(TObject *Sender)
{
 ModalResult = mrClose;
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
27.09.2013, 18:10 11
10 и 11 строки в моем последнем фрагменте видел? У тебя определения переменных как раз-таки нет, причем ни в одном модуле. То есть, хидер ты нормально подключил, а вот линкер - в панике, не может найти что такое _init_user и _init_pass...
1
12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
27.09.2013, 18:15  [ТС] 12
Цитата Сообщение от UI Посмотреть сообщение
10 и 11 строки в моем последнем фрагменте видел? У тебя определения переменных как раз-таки нет. То есть, хидер ты нормально подключил, а вот линкер - в панике, не может найти что такое _init_user и _init_pass...
Точно. Не внимательный.... Спс

Добавлено через 4 минуты
Кстати вот этот стиль окон в приложении в сочетании с формой авторизации как по мне так самый удобный и практичный.
0
27.09.2013, 18:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2013, 18:15
Помогаю со студенческими работами здесь

Форма авторизации с исп. БД
hallo всем. Помогите, или подскажите пожалуйста, как реализовать следующую вещь. Необходимо...

Форма авторизации в C++ Builder
Здравствуйте. Пытаюсь сделать авторизацию в C++ Builder, но почему-то встречаю ошибку: missplaced...

Не могу рисовать в canvas формы если она fsMDIForm или fsMDIChild
В DELPHI XE!!! - возникла проблема: Простейший проект одна форма, одна кнопка. При нажатии кнопки...

Ошибка при создании программы с формами fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop
Я создал програмку, в которой при нажатии на первую кнопку открывается форма fsNormal, на вторую -...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru