Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.05.2017, 17:55
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию несколько форм

Подскажите пожалуйста новичку!!!
Есть форма с кнопкой, по нажатию вызывается другая форма (как библиотека), но нужно в библиотеке добавить еще форму (она добавляется, но при попытке к ней обратится при выполнение программы выскакивает ошибка). Можно ли как-то ее победить)???
Ответить с цитированием
  #2  
Старый 09.05.2017, 17:57
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код в студию.
Что значит "библиотека"? Как вызывается первая форма из нее? Как сделана вторая форма - так же, как первая или есть различия?
Ответить с цитированием
  #3  
Старый 09.05.2017, 18:03
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию

первая форма
Код:
procedure TFMain.Button1Click(Sender: TObject);
var
hDll : THandle;
begin
hDll := LoadLibrary(PChar(extractFileDir(ParamSTR(0)) + '\' + 'passport.drs'));
@OpenPassport1 := GetProcAddress(hDll,'OpenPassport');
OpenPassport1(Handle);
FreeLibrary(hDll);
end;
вторая форма (точнее библиотека с формой)
Код:
library passport;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas' {FPass};
{$E drs.res}
{$R *.res}
 exports
  OpenPassport;
begin
end.
***************
код из самой формы
procedure OpenPassport(aHandle: THandle); Export; StdCall;
implementation
{$R *.dfm}
procedure OpenPassport(aHandle: THandle);
var
 OldHandle  : THandle;
 begin
   CoInitialize(Nil);
   OldHandle := Application.Handle;
   Application.Handle := aHandle;
   FPass:= TFPass.Create(Application);
  try
     FPass.ShowModal;
  finally
    Application.Handle := OldHandle;
    FPass.Free;
  end;
end;
нужно в библиотеке с формой добавить еще форму, которую можно вызывать по нажатию кнопки например (условно форма в которой содержится информация "about")

Последний раз редактировалось crazyman, 09.05.2017 в 18:28.
Ответить с цитированием
  #4  
Старый 10.05.2017, 01:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну дык, ёкарный бабай!!!
У тебя же тут спец. процедура для открытия формы. Соответственно, для второй формы надо написать такую же. Или эту поменять так, что бы она могла по параметру открывать любую из форм.
Ответить с цитированием
  #5  
Старый 12.05.2017, 20:10
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
ну дык, ёкарный бабай!!!
У тебя же тут спец. процедура для открытия формы. Соответственно, для второй формы надо написать такую же. Или эту поменять так, что бы она могла по параметру открывать любую из форм.
Вот если бы помогли новичку поменять так, что бы она могла по параметру открывать любую из форм.
Ответить с цитированием
  #6  
Старый 12.05.2017, 22:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от crazyman
Вот если бы помогли новичку...
Так вроде уже помогли в прошлой ветке может запамятовал, но вот тогда ещё один пример вызова из библиотеки модальной (About form) и обычной (Splash form), сначала скомпилите dll и затем переместите её в папку с проверочной сборкой
Вложения
Тип файла: zip crazyman.zip (49.4 Кбайт, 1 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
crazyman (12.05.2017)
  #7  
Старый 12.05.2017, 22:31
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию

СПАСИБО!!!
Ответить с цитированием
  #8  
Старый 12.05.2017, 22:39
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А за что, спасибки-то? Наверное всёж будут непонятки, пжлст, лучше прикрепите в теме образцы ваших форм и что с ними должно происходить и набор "спец. процедур" вам будет обеспечен
Ответить с цитированием
  #9  
Старый 12.05.2017, 22:41
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Так вроде уже помогли в прошлой ветке может запамятовал, но вот тогда ещё один пример вызова из библиотеки модальной (About form) и обычной (Splash form), сначала скомпилите dll и затем переместите её в папку с проверочной сборкой
Спасибо это я понял, но наверное я не верно немного объяснил...
есть "главная" форма из нее вызывается модальная форма, нужно из модальной формы вызвать еще одну форму ну типа форма модальная модальной.
В пример из прошлой ветки как раз таки хотелось добавить еще одну форму вызываемую вызванной формой)

Последний раз редактировалось crazyman, 12.05.2017 в 22:45.
Ответить с цитированием
  #10  
Старый 12.05.2017, 23:20
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от crazyman
...есть "главная" форма из нее вызывается модальная форма, нужно из модальной формы вызвать еще одну форму ну типа форма модальная модальной...
Тогда вот ещё вариант, немного по-другому действовать нужно для такой задачи
Вложения
Тип файла: zip MiMod.zip (5.2 Кбайт, 1 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
crazyman (12.05.2017)
  #11  
Старый 12.05.2017, 23:25
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Тогда вот ещё вариант, немного по-другому действовать нужно для такой задачи
Во спасибо то что нужно!!! Оказывается так просто. Я балбес...

Последний раз редактировалось crazyman, 12.05.2017 в 23:28.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter