![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Постоялец
![]() ![]() Пол:
Регистрация: 19.10.2007
Сообщений: 272
Репутация: 4
|
Здравствуйте!
Хочу написать простое приложение. экзешник проверяет логин и пароль в базе данных - есть потом он из бпл - (загрузчика) вызывает функцию для загрузки другой бпл, которая покажет форму. но все дело в том что ничего не происходит Экзешник PHP код:
PHP код:
PHP код:
|
|
|
|
| Реклама: | AH5U16G60C622MBAA-1 | 24 апреля ледовое шоу | Мебельный магазин: полочки - Переходи на сайт! | Мебельный магазин: стол обеденный раздвижной большой купить - Переходи на сайт! | битрикс интеграция с амо |
|
|
#2
|
|
Неактивный пользователь
Пол:
Регистрация: 31.01.2008
Сообщений: 37
Репутация: 4
|
А зачем такие сложности с bpl?
Я эту идею реализовал примерно так: главной форме присваиваем tag:=0 и пишем: Код:
procedure TMainForm.FormShow(Sender: TObject); //открытие главной формы begin if MainForm.Tag=0 then begin LoginForm:=TLoginForm.Create(self); //создать диалог входа пользователя LoginForm.ShowModal; //вызвать далог входа пользователя end; Код:
SELECT * FROM TableUsers WHERE Login=:Par1 AND Password=:Par2 На форму LoginForm помещаем два едита и кнопку, в событии Click которой пишем: Код:
procedure TPasswordIn.Button1Click(Sender: TObject);
begin
with ADOQuery1.Parameters do //активируем запрос с параметрами:
begin
ParamByName('Par1').Value:=Edit1.Text; //имя пользователя
ParamByName('Par2').Value:=Edit2.Text; //введенный пароль
end;
ADOQuery1.Open; //открывается запрос на существование в БД
if ADOQuery1.RecordCount>0 then // если запись существует
begin
MainForm.Tag:=1; //присваиваем главной форме Tag=1 - открываем ее
ADOQuery1.Close; //закрываем запрос
LoginForm.CLose; //закрываем диалог
exit; //выход из процедуры
end;
//иначе:
ShowMessage('В доступе отказано. Повторите ввод пароля.');
ADOQuery1.Close;
end;
Добавлено через 3 минуты Забыл сказать, что LoginForm надо убрать из автоматически создаваемых (см. Project -> Options). Последний раз редактировалось Terio; 16.03.2008 в 19:57.. Причина: Добавлено сообщение |
|
|
|
|
|
#3
|
|
Постоялец
![]() ![]() Пол:
Регистрация: 19.10.2007
Сообщений: 272
Репутация: 4
|
Забыл сказать, что LoginForm надо убрать из автоматически создаваемых (см. Project -> Options).
За это спасибо. А насчет мороки с BPL - это надо ля того что бы моожно было большой проект не дним экхешником делать и ждать до посидения когда он загрузиться , а разбить на маленькие части и по мере надобности их загружать. |
|
|
|
|
|
#4
|
|
Неактивный пользователь
Пол:
Регистрация: 31.01.2008
Сообщений: 37
Репутация: 4
|
Думаю, дополнение одной маленькой формы к главной не слишком ее отяготит. Килобайт на 40 максимум.
А вообще, это хорошая идея. Нет информации почитать по этому поводу? А то мой проект уже 6 Мб занимает, а это еще только третья часть. Слышал, что формы можно клепать только на основе WinAPI, как в Си-плюсах. Тогда вообще приложение копейки будет весить. |
|
|
|
|
|
#5
|
|
Постоялец
![]() ![]() Пол:
Регистрация: 19.10.2007
Сообщений: 272
Репутация: 4
|
Моно и WinAPI - только стремное это дело немного, а про BPL - надо книги для профессионалов читать, я пока методом тыка делаю что то у друзей спрошу, что сам проверю экспериментально.
вообще делают так 0. File - new - over - вкладка NEW - Package. Заходим в него и стандартно File - new - добавляем все что надо. потом PHP код:
PHP код:
Да кстати каким тегом пльзуешься для форматирования кода в сообщениях? Последний раз редактировалось Wizard2007; 17.03.2008 в 13:54.. Причина: Добавлено сообщение |
|
|
|
| Сказали спасибо: |
|
|
#6
|
|||||||||||||||||||||||
|
Неактивный пользователь
Пол:
Регистрация: 31.01.2008
Сообщений: 37
Репутация: 4
|
Если правильно понял твой вопрос, для вывода сообщений используется простая функция procedure ShowMessage(const Msg: string); Пример: ShowMessage('Пример простого сообщения.'+#10+ 'Данное сообщение выводится всегда в центре экрана.'); Еще есть procedure ShowMessagePos(const Msg: string; X, Y: Integer); Еще function InputBox(const ACaption, APrompt, ADefault: string): string; Больше в VCL не знаю функций для вывода сообщений, а лезть кочерыжить стандартный код не рискую, пользуюсь Canvas-ом: Код:
procedure TForm1.FormPaint(Sender: TObject); var X: Integer; LF: TLogFont; Fnt: HFont; const Text = 'Лучшая в мире система программирования'; begin // Определяем параметры нового шрифта FillChar(LF, SizeOf(LF), 0); with LF do begin lfHeight := 20; lfWeight := fw_Normal; lfUnderline := 1; lfEscapement := 450; StrPCopy(lfFaceName, 'Courier New Cyr'); end; with Form1.Canvas do begin // Создаем шрифт Fnt := CreateFontIndirect(LF); // Присваиваем его дескриптор шрифту канвы Font.Handle := Fnt; // Выводим текст под углом +45 градусов TextOut(0, 300, Text); X := TextWidth(Text); DeleteObject(Fnt); // Удаляем ненужный шрифт // Изменяем параметры шрифта with LF do begin lfHeight := 90; lfEscapement := -900; lfWeight := fw_Heavy; StrPCopy(LF.lfFaceName, 'Arial Cyr'); end; Fnt := CreateFontIndirect(LF); // Создаем новый шрифт Font.Handle := Fnt; Font.Color := clRed; // Выводим с наклоном -90 градусов TextOut(X-10, 10, 'Delphi 5'); DeleteObject(Fnt); // Удаляем ненужный шрифт end; end; |
|||||||||||||||||||||||
|
|
|