老师给我的接口规范中关于 台标 是这样定义的
HRESULT CGModule_Logo_Start
HRESULT CGModule_Logo_Stop我想问您的是:这个Form(下面有个pas和ddp文件)能不能写成一个dll
以供其他程序调用如果可以的话 我应该从哪方面做呢 或者怎么写 我是第一次接触的delphi 有很多地方还不是很明白下面的是代码, 各位学长 能帮帮忙吗??
unit UnitTaibiaoPeriodDlg;interfaceuses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, ComCtrls, UnitComponentModel;type
TDlgTaibiaoDisplayPeriod = class(TForm)
CheckBoxEnableTaibiaoPeriodDisplay: TCheckBox;
GroupBoxTaibiaoDisplayTime: TGroupBox;
DateTimePickerTaibiaoDisplayStartTime: TDateTimePicker;
DateTimePickerTaibiaoDisplayStopTime: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Label3: TLabel;
procedure CheckBoxEnableTaibiaoPeriodDisplayClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
m_StartTime: TDateTime;
m_StopTime: TDateTime;
m_UseStationLogoPeriodDisplay: Boolean; FStationLogo: TIconComponentModel;
m_IsLogoDisplaying: Boolean; function GetStartTimeFromIniFile(): TDateTime;
function GetStopTimeFromInifile(): TDateTime;
function WriteStartTimeToIniFile(in_TaibiaoStartTime: TDateTime): HResult;
function WriteStopTimeFromInifile(in_TaibiaoStopTime: TDateTime): HResult;
function WriteIfUseStartStopTimeForTaibiao(in_IfUserPreriodDisplay: Boolean): HResult;
public
{ Public declarations }
function GetShouldPlayTaibiaoNow(): Boolean;
function SetToDisplayStationLogo(in_StationLogo: TIconComponentModel): HResult;
function GetIfUseStartStopTimeForTaibiao: Boolean;
end;var
DlgTaibiaoDisplayPeriod: TDlgTaibiaoDisplayPeriod;implementation
uses inifiles;
{$R *.dfm}procedure TDlgTaibiaoDisplayPeriod.CheckBoxEnableTaibiaoPeriodDisplayClick(
Sender: TObject);
begin
if Self.CheckBoxEnableTaibiaoPeriodDisplay.Checked then
begin
Self.GroupBoxTaibiaoDisplayTime.Enabled:= True;
end
else
begin
Self.GroupBoxTaibiaoDisplayTime.Enabled:= False;
end;
end;function TDlgTaibiaoDisplayPeriod.GetIfUseStartStopTimeForTaibiao: Boolean;
var
TmpIniFile: TIniFile;
begin
//函数功能:得到是否检查AV同步. //Result:= True;
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
Result:= TmpIniFile.ReadBool('台标播出时段','在规定时段内播出:1 全天播出:0',False);
if not TmpIniFile.ValueExists('台标播出时段','在规定时段内播出:1 全天播出:0') then
begin
TmpIniFile.WriteBool('台标播出时段','在规定时段内播出:1 全天播出:0',Result);
end;
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.GetShouldPlayTaibiaoNow: Boolean;
var
TmpNow: TDateTime;
begin
if Self.m_UseStationLogoPeriodDisplay then
begin
TmpNow := Frac(Now);
if Self.m_StartTime < Self.m_StopTime then
begin
if (TmpNow >= Self.m_StartTime) and (TmpNow <= Self.m_StopTime) then
begin
Result:= True;
end
else
begin
Result:= False;
end;
end
else
begin
if (TmpNow > Self.m_StopTime) and (TmpNow < Self.m_StartTime) then
begin
Result:= False;
end
else
begin
Result:= True;
end;
end;
end
else
begin
Result:= True;
end;
end;function TDlgTaibiaoDisplayPeriod.GetStartTimeFromIniFile: TDateTime;
var
TmpIniFile: TIniFile;
begin
//函数功能:得到是否检查AV同步. //Result:= EncodeTime(7, 0, 0,0);
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
Result:= TmpIniFile.ReadTime('台标播出时段','台标开始显示时间',EncodeTime(7, 0, 0,0));
if not TmpIniFile.ValueExists('台标播出时段','台标开始显示时间') then
begin
TmpIniFile.WriteTime('台标播出时段','台标开始显示时间',Result);
end;
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.GetStopTimeFromInifile: TDateTime;
var
TmpIniFile: TIniFile;
begin
//函数功能:得到是否检查AV同步. //Result:= EncodeTime(6, 30, 0,0);
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
Result:= TmpIniFile.ReadTime('台标播出时段','台标停止显示时间',EncodeTime(6, 30, 0,0));
if not TmpIniFile.ValueExists('台标播出时段','台标停止显示时间') then
begin
TmpIniFile.WriteTime('台标播出时段','台标停止显示时间',Result);
end;
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.WriteIfUseStartStopTimeForTaibiao(
in_IfUserPreriodDisplay: Boolean): HResult;
var
TmpIniFile: TIniFile;
begin
Result:= 0;
//函数功能:得到是否检查AV同步.
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
TmpIniFile.WriteBool('台标播出时段','在规定时段内播出:1 全天播出:0',in_IfUserPreriodDisplay);
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.WriteStartTimeToIniFile(
in_TaibiaoStartTime: TDateTime): HResult;
var
TmpIniFile: TIniFile;
begin
Result:= 0;
//函数功能:得到是否检查AV同步.
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
TmpIniFile.WriteTime('台标播出时段','台标开始显示时间',Frac(in_TaibiaoStartTime));
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.WriteStopTimeFromInifile(
in_TaibiaoStopTime: TDateTime): HResult;
var
TmpIniFile: TIniFile;
begin
Result:= 0;
//函数功能:得到是否检查AV同步.
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
TmpIniFile.WriteTime('台标播出时段','台标停止显示时间',Frac(in_TaibiaoStopTime));
finally
TmpIniFile.Destroy;
end;
end;procedure TDlgTaibiaoDisplayPeriod.Button1Click(Sender: TObject);
begin
Self.WriteStartTimeToIniFile(Self.DateTimePickerTaibiaoDisplayStartTime.DateTime);
Self.WriteStopTimeFromInifile(Self.DateTimePickerTaibiaoDisplayStopTime.DateTime);
Self.WriteIfUseStartStopTimeForTaibiao(Self.CheckBoxEnableTaibiaoPeriodDisplay.Checked);
Self.m_StartTime := Self.GetStartTimeFromIniFile;
Self.m_StopTime:= Self.GetStopTimeFromInifile;
Self.m_UseStationLogoPeriodDisplay:= Self.GetIfUseStartStopTimeForTaibiao;
Self.ModalResult:= mrOk;
end;procedure TDlgTaibiaoDisplayPeriod.Button2Click(Sender: TObject);
begin
Self.ModalResult := mrCancel;
end;procedure TDlgTaibiaoDisplayPeriod.FormActivate(Sender: TObject);
begin
Self.DateTimePickerTaibiaoDisplayStartTime.DateTime:= Self.GetStartTimeFromIniFile;
Self.DateTimePickerTaibiaoDisplayStopTime.DateTime:= Self.GetStopTimeFromInifile;
Self.CheckBoxEnableTaibiaoPeriodDisplay.Checked:= Self.GetIfUseStartStopTimeForTaibiao;
end;function TDlgTaibiaoDisplayPeriod.SetToDisplayStationLogo(
in_StationLogo: TIconComponentModel): HResult;
begin
Result:= 0;
if in_StationLogo <> nil then
begin
if Self.FStationLogo <> nil then
begin
if Self.FStationLogo <> in_StationLogo then
begin
if Self.FStationLogo.DisplayThread <> nil then
begin
Self.FStationLogo.StopDisplay;
end;
end;
end;
Self.FStationLogo:= in_StationLogo;
Self.Timer1.Enabled:= True;
end
else
begin
if Self.FStationLogo <> nil then
begin
if Self.FStationLogo.DisplayThread <> nil then
begin
Self.FStationLogo.StopDisplay;
end;
end;
Self.FStationLogo:= nil;
end;
end;procedure TDlgTaibiaoDisplayPeriod.Timer1Timer(Sender: TObject);
begin
if Self.FStationLogo = nil then
begin
exit;
end;
if Self.FStationLogo.DisplayThread <> nil then
begin
if not Self.GetShouldPlayTaibiaoNow then
begin
//Application.MessageBox('STOP','',MB_OK);
Self.FStationLogo.StopDisplay;
end;
end
else
begin
if Self.GetShouldPlayTaibiaoNow then
begin
//Application.MessageBox('sTART','',MB_OK);
Self.FStationLogo.StartDisplay(0);
Self.m_IsLogoDisplaying:= True;
end;
end;
end;procedure TDlgTaibiaoDisplayPeriod.FormCreate(Sender: TObject);
begin
FStationLogo := nil; Self.m_StartTime := Self.GetStartTimeFromIniFile;
Self.m_StopTime:= Self.GetStopTimeFromInifile;
Self.m_UseStationLogoPeriodDisplay:= Self.GetIfUseStartStopTimeForTaibiao;end;end.
HRESULT CGModule_Logo_Start
HRESULT CGModule_Logo_Stop我想问您的是:这个Form(下面有个pas和ddp文件)能不能写成一个dll
以供其他程序调用如果可以的话 我应该从哪方面做呢 或者怎么写 我是第一次接触的delphi 有很多地方还不是很明白下面的是代码, 各位学长 能帮帮忙吗??
unit UnitTaibiaoPeriodDlg;interfaceuses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, ComCtrls, UnitComponentModel;type
TDlgTaibiaoDisplayPeriod = class(TForm)
CheckBoxEnableTaibiaoPeriodDisplay: TCheckBox;
GroupBoxTaibiaoDisplayTime: TGroupBox;
DateTimePickerTaibiaoDisplayStartTime: TDateTimePicker;
DateTimePickerTaibiaoDisplayStopTime: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Label3: TLabel;
procedure CheckBoxEnableTaibiaoPeriodDisplayClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
m_StartTime: TDateTime;
m_StopTime: TDateTime;
m_UseStationLogoPeriodDisplay: Boolean; FStationLogo: TIconComponentModel;
m_IsLogoDisplaying: Boolean; function GetStartTimeFromIniFile(): TDateTime;
function GetStopTimeFromInifile(): TDateTime;
function WriteStartTimeToIniFile(in_TaibiaoStartTime: TDateTime): HResult;
function WriteStopTimeFromInifile(in_TaibiaoStopTime: TDateTime): HResult;
function WriteIfUseStartStopTimeForTaibiao(in_IfUserPreriodDisplay: Boolean): HResult;
public
{ Public declarations }
function GetShouldPlayTaibiaoNow(): Boolean;
function SetToDisplayStationLogo(in_StationLogo: TIconComponentModel): HResult;
function GetIfUseStartStopTimeForTaibiao: Boolean;
end;var
DlgTaibiaoDisplayPeriod: TDlgTaibiaoDisplayPeriod;implementation
uses inifiles;
{$R *.dfm}procedure TDlgTaibiaoDisplayPeriod.CheckBoxEnableTaibiaoPeriodDisplayClick(
Sender: TObject);
begin
if Self.CheckBoxEnableTaibiaoPeriodDisplay.Checked then
begin
Self.GroupBoxTaibiaoDisplayTime.Enabled:= True;
end
else
begin
Self.GroupBoxTaibiaoDisplayTime.Enabled:= False;
end;
end;function TDlgTaibiaoDisplayPeriod.GetIfUseStartStopTimeForTaibiao: Boolean;
var
TmpIniFile: TIniFile;
begin
//函数功能:得到是否检查AV同步. //Result:= True;
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
Result:= TmpIniFile.ReadBool('台标播出时段','在规定时段内播出:1 全天播出:0',False);
if not TmpIniFile.ValueExists('台标播出时段','在规定时段内播出:1 全天播出:0') then
begin
TmpIniFile.WriteBool('台标播出时段','在规定时段内播出:1 全天播出:0',Result);
end;
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.GetShouldPlayTaibiaoNow: Boolean;
var
TmpNow: TDateTime;
begin
if Self.m_UseStationLogoPeriodDisplay then
begin
TmpNow := Frac(Now);
if Self.m_StartTime < Self.m_StopTime then
begin
if (TmpNow >= Self.m_StartTime) and (TmpNow <= Self.m_StopTime) then
begin
Result:= True;
end
else
begin
Result:= False;
end;
end
else
begin
if (TmpNow > Self.m_StopTime) and (TmpNow < Self.m_StartTime) then
begin
Result:= False;
end
else
begin
Result:= True;
end;
end;
end
else
begin
Result:= True;
end;
end;function TDlgTaibiaoDisplayPeriod.GetStartTimeFromIniFile: TDateTime;
var
TmpIniFile: TIniFile;
begin
//函数功能:得到是否检查AV同步. //Result:= EncodeTime(7, 0, 0,0);
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
Result:= TmpIniFile.ReadTime('台标播出时段','台标开始显示时间',EncodeTime(7, 0, 0,0));
if not TmpIniFile.ValueExists('台标播出时段','台标开始显示时间') then
begin
TmpIniFile.WriteTime('台标播出时段','台标开始显示时间',Result);
end;
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.GetStopTimeFromInifile: TDateTime;
var
TmpIniFile: TIniFile;
begin
//函数功能:得到是否检查AV同步. //Result:= EncodeTime(6, 30, 0,0);
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
Result:= TmpIniFile.ReadTime('台标播出时段','台标停止显示时间',EncodeTime(6, 30, 0,0));
if not TmpIniFile.ValueExists('台标播出时段','台标停止显示时间') then
begin
TmpIniFile.WriteTime('台标播出时段','台标停止显示时间',Result);
end;
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.WriteIfUseStartStopTimeForTaibiao(
in_IfUserPreriodDisplay: Boolean): HResult;
var
TmpIniFile: TIniFile;
begin
Result:= 0;
//函数功能:得到是否检查AV同步.
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
TmpIniFile.WriteBool('台标播出时段','在规定时段内播出:1 全天播出:0',in_IfUserPreriodDisplay);
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.WriteStartTimeToIniFile(
in_TaibiaoStartTime: TDateTime): HResult;
var
TmpIniFile: TIniFile;
begin
Result:= 0;
//函数功能:得到是否检查AV同步.
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
TmpIniFile.WriteTime('台标播出时段','台标开始显示时间',Frac(in_TaibiaoStartTime));
finally
TmpIniFile.Destroy;
end;
end;function TDlgTaibiaoDisplayPeriod.WriteStopTimeFromInifile(
in_TaibiaoStopTime: TDateTime): HResult;
var
TmpIniFile: TIniFile;
begin
Result:= 0;
//函数功能:得到是否检查AV同步.
TmpIniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName) + '播出工作站设置.ini');
try
TmpIniFile.WriteTime('台标播出时段','台标停止显示时间',Frac(in_TaibiaoStopTime));
finally
TmpIniFile.Destroy;
end;
end;procedure TDlgTaibiaoDisplayPeriod.Button1Click(Sender: TObject);
begin
Self.WriteStartTimeToIniFile(Self.DateTimePickerTaibiaoDisplayStartTime.DateTime);
Self.WriteStopTimeFromInifile(Self.DateTimePickerTaibiaoDisplayStopTime.DateTime);
Self.WriteIfUseStartStopTimeForTaibiao(Self.CheckBoxEnableTaibiaoPeriodDisplay.Checked);
Self.m_StartTime := Self.GetStartTimeFromIniFile;
Self.m_StopTime:= Self.GetStopTimeFromInifile;
Self.m_UseStationLogoPeriodDisplay:= Self.GetIfUseStartStopTimeForTaibiao;
Self.ModalResult:= mrOk;
end;procedure TDlgTaibiaoDisplayPeriod.Button2Click(Sender: TObject);
begin
Self.ModalResult := mrCancel;
end;procedure TDlgTaibiaoDisplayPeriod.FormActivate(Sender: TObject);
begin
Self.DateTimePickerTaibiaoDisplayStartTime.DateTime:= Self.GetStartTimeFromIniFile;
Self.DateTimePickerTaibiaoDisplayStopTime.DateTime:= Self.GetStopTimeFromInifile;
Self.CheckBoxEnableTaibiaoPeriodDisplay.Checked:= Self.GetIfUseStartStopTimeForTaibiao;
end;function TDlgTaibiaoDisplayPeriod.SetToDisplayStationLogo(
in_StationLogo: TIconComponentModel): HResult;
begin
Result:= 0;
if in_StationLogo <> nil then
begin
if Self.FStationLogo <> nil then
begin
if Self.FStationLogo <> in_StationLogo then
begin
if Self.FStationLogo.DisplayThread <> nil then
begin
Self.FStationLogo.StopDisplay;
end;
end;
end;
Self.FStationLogo:= in_StationLogo;
Self.Timer1.Enabled:= True;
end
else
begin
if Self.FStationLogo <> nil then
begin
if Self.FStationLogo.DisplayThread <> nil then
begin
Self.FStationLogo.StopDisplay;
end;
end;
Self.FStationLogo:= nil;
end;
end;procedure TDlgTaibiaoDisplayPeriod.Timer1Timer(Sender: TObject);
begin
if Self.FStationLogo = nil then
begin
exit;
end;
if Self.FStationLogo.DisplayThread <> nil then
begin
if not Self.GetShouldPlayTaibiaoNow then
begin
//Application.MessageBox('STOP','',MB_OK);
Self.FStationLogo.StopDisplay;
end;
end
else
begin
if Self.GetShouldPlayTaibiaoNow then
begin
//Application.MessageBox('sTART','',MB_OK);
Self.FStationLogo.StartDisplay(0);
Self.m_IsLogoDisplaying:= True;
end;
end;
end;procedure TDlgTaibiaoDisplayPeriod.FormCreate(Sender: TObject);
begin
FStationLogo := nil; Self.m_StartTime := Self.GetStartTimeFromIniFile;
Self.m_StopTime:= Self.GetStopTimeFromInifile;
Self.m_UseStationLogoPeriodDisplay:= Self.GetIfUseStartStopTimeForTaibiao;end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货