Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Вниз

Как динамически добавить фрейм на форму?   Найти похожие ветки 

 
ttt   (2002-08-08 15:10) [0]

Пишу
frame:=TFrame1.Create(Form1);
Form1.InsertControl(frame);
На первой строке получаю ошибку: "Control "Frame1" has no parent window". Как тут быть?


 
Nikolai_S   (2002-08-08 15:18) [1]

Frame1.Parent := Form1;

Одной этой строки достаточно.


 
Nikolai_S   (2002-08-08 15:19) [2]

Ну естественно это фрейм нужно сначала создать:

var
Frame1: TFrame1;
begin
Frame1 := TFrame1.Create(Form1);
Frame1.Parent := Form1;
end;


 
ttt   (2002-08-08 15:25) [3]

В том-то и дело, что до второй строки вообще программа не доходит, а ошибка после первой строки(Create). Хоть так, хоть сяк пиши - ничего не меняется.


 
AL2002   (2002-08-08 15:35) [4]

Frame1:=TFrame1.Create(nil);


 
ttt   (2002-08-08 15:42) [5]

Тот же результат


 
Skier   (2002-08-08 15:48) [6]

>ttt
Где ты всё это пишешь ? В каком месте ??
Код ПОЛНОСТЬЮ в студию...


 
AL2002   (2002-08-08 15:53) [7]

Напиши, какая ошибка.


 
ttt   (2002-08-08 16:15) [8]

Есть dll.

library Reports;

uses
SysUtils,
Classes,
Dialogs,
Forms,
Controls,
DB,
DBTables,
Excel2000,
DateUtils,
Math,
Variants,
...
PeriodDefFrame in "PeriodDefFrame.pas" {Frame1: TFrame},
ProgressForm in "ProgressForm.pas" {ProgressFrm};

function GetReport(FormType,Form,Data,Pattern:shortstring;year,month,day,smena,numsmen,year1,month1,day1,smena1:variant):boolean;
var frame1:TFrame1;
begin
...
ProgressFrm:=TProgressFrm.Create(Application);
frame1:=TFrame1.Create(Application);// ОШИБКА ЗДЕСЬ
frame1.Parent:=ProgressFrm;
...
end;

exports
...
GetReport;

begin
...
end.


Frame:

unit PeriodDefFrame;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DB, DBTables, ComCtrls, ExtCtrls, StdCtrls, Excel2000, OleServer, Spin,
Variants, DateUtils, Math, ActiveX, Buttons;

type
TFrame1 = class(TFrame)
BeginGroupBox: TGroupBox;
YearLabel: TLabel;
MonthLabel: TLabel;
DayLabel: TLabel;
SmenaLabel: TLabel;
YearSpinEdit: TSpinEdit;
MonthComboBox: TComboBox;
DayComboBox: TComboBox;
SmenaRadioGroup: TRadioGroup;
NumSmenComboBox: TComboBox;
EndGroupBox: TGroupBox;
Year1Label: TLabel;
Month1Label: TLabel;
Day1Label: TLabel;
Smena1Label: TLabel;
Year1SpinEdit: TSpinEdit;
Month1ComboBox: TComboBox;
Day1ComboBox: TComboBox;
Smena1RadioGroup: TRadioGroup;
PatternWorkbook: TExcelWorkbook;
ExcelApplication1: TExcelApplication;
DataWorkbook: TExcelWorkbook;
QueryPeriod: TQuery;
QuerySmen: TQuery;
QueryMonth: TQuery;
pbReport: TProgressBar;
plReport: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
QueryPeriod0: TQuery;
QuerySmen0: TQuery;
QueryMonth0: TQuery;
procedure ShowButtonClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FRepSrcID: integer;
FRepSrcName: string;
FPatternName: string;
FPatternID: integer;
{ Private declarations }
procedure CalcDataSheet;
procedure SetRepSrcID(const Value: integer);
procedure SetRepSrcName(const Value: string);
procedure SetPatternID(const Value: integer);
procedure SetPatternName(const Value: string);
procedure DataPrepare(pathSrc:string; var DataWorkbook:_WorkBook);
procedure PatternPrepare(pathPattern:string);
procedure xlReport1AfterBuild(Report: TxlReport);
procedure xlReport1Progress(Report: TxlReport; const Position,
Max: Integer);
procedure xlReport1BeforeBuild(Report: TxlReport);
public
{ Public declarations }
ProgressLabel:TLabel;
ProgressBar:TProgressbar;
xlReport1:TxlReport;
property RepSrcID:integer read FRepSrcID write SetRepSrcID;
property RepSrcName:string read FRepSrcName write SetRepSrcName;
property PatternID:integer read FPatternID write SetPatternID;
property PatternName:string read FPatternName write SetPatternName;
procedure CheckAvailableControls;
procedure DoBeforeCreate;
procedure DoBeforeDestroy(Sender: TObject);
end;

implementation
...
end;


Затем вызывается функция из dll:

unit Unit3;
...
TFunc= function(FormType,Form,Data,Pattern:shortstring;year,month,day,smena,numsmen,year1,month1,day1,smena1:variant):boolean;

...

procedure TForm3.Button2Click(Sender: TObject);
var f:TFunc;
Handle:integer;
begin
try
handle:=LoadLibrary("Reports.dll");
if Handle<>0 then
begin
f:=GetProcAddress(handle,"GetReport");
f(DBEdit1.Text,DBEdit2.Text,DBEdit3.Text,DBEdit4.Text,2000,8,8,1,null,null,null,null,null);
end;
finally
FreeLibrary(handle);
end;
end;

...


 
Ura   (2002-08-08 16:19) [9]

1. Проверь Aplication проги и в DLL Равный?
2. Может надо для репорта еще и TScree передать?


 
Skier   (2002-08-08 16:21) [10]

>ttt

function GetReport( AAppHandle : THandle; FormType,Form,Data,Pattern: PChar;year,month,day,smena,numsmen,year1,month1,day1,smena1: variant !!!)


Вообще удивительно как у тебя всё это работает !
Тебе бы книжки почитать про DLL...


 
ttt   (2002-08-08 16:42) [11]

Похоже, заковырка в самом фрейме. С другим фреймом всё работает.


 
Набережных С.   (2002-08-08 20:37) [12]

Вероятно, в конструкторе фрейма сидит SetFocus.
Если так, то замени его на ActiveControl.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.005 c
1-60689
Брат
2002-08-06 09:57
2002.08.19
Компонента


1-60743
billybons
2002-08-07 14:29
2002.08.19
как программно назначить/освободить процедуру обработки event-a


4-60920
Izyum
2002-06-13 22:47
2002.08.19
Как программно закрыть окно


1-60714
Olivka
2002-08-06 23:35
2002.08.19
Чем писать на диски?


1-60654
Толик
2002-08-08 13:49
2002.08.19
resourcestring и LoadResource





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский