Форум: "Основная";
Текущий архив: 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