DELPHI从INI里取文件路径

(1)DELPHI从INI文件里取共享文件夹的路径值。

并打开共享文件。不足之处是,当文件类型没有指定打开方式,无法打开,而程式没有任何提示。

(2)在DELPHI代码中,设定DBGRID的栏位的名称与宽度。

[@more@]unit Wip_Bom_Unit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Mask, DBCtrlsEh, StdCtrls, ExtCtrls, Grids, DBGrids, ComCtrls,
DB,shellApi ,IniFiles;

type
TFrm_Wip_Bom = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Panel2: TPanel;
Type_No_Edt: TEdit;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
BOM_DBGR: TDBGrid;
DS_BOM: TDataSource;
Model_edt: TEdit;
MAKE_NO_edt: TEdit;
BomBtn: TButton;
TypeBtn: TButton;
PhotoBtn: TButton;
Label2: TLabel;
Edit1: TEdit;
OpenDialog1: TOpenDialog;
Button1: TButton;
Eng_no_Edt: TEdit;

procedure BomBtnClick(Sender: TObject);
procedure TypeBtnClick(Sender: TObject);
procedure MAKE_NO_edtExit(Sender: TObject);
procedure PhotoBtnClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Frm_Wip_Bom: TFrm_Wip_Bom;

implementation
USES Udata, report, Umain, mylib, DMQC , DMOra , makeinf, makep,
DMEng, makeptoexcel;
{$R *.dfm}



procedure TFrm_Wip_Bom.BomBtnClick(Sender: TObject);
begin //獲取 BOM數據
Screen.Cursor:=crSQLWait; //鼠標變成漏鬥。
dmqc_c.CD_TMP.Close;
dmqc_c.CD_TMP.CommandText:='select b.prod_no, a.model_nob, a.bom_no, a.per_num, a.ver, a.bzdw '
+ ', b.ma_no, b.ma_type, b.ma_unit, b.bzyl, b.upuse ,b.jbyl, b.remark from t_bomA a , t_bomb b '
+ ' where a. prod_no= b. prod_no and a. prod_no = '+ quotedStr(TYPE_NO_EDT.Text) ;//'''100SDC001I39''' ;
DmQc_c.CD_TMP.Open;
Screen.Cursor:=crDefault;

with bom_DbGr do
begin
columns[0].title.caption:= '產品料號';
Columns.Items[0].Width :=90 ;
columns[1].title.caption:= '型號';
Columns.Items[1].Width :=90 ;
columns[2].title.caption:= '編號';
Columns.Items[2].Width := 40 ;
columns[3].title.caption:= '模組';
Columns.Items[3].Width :=30 ;
columns[4].title.caption:= '版本';
Columns.Items[4].Width := 20 ;
columns[5].title.caption:= '標準單位';
Columns.Items[5].Width := 40 ;

columns[6].title.caption:= '料號';
Columns.Items[6].Width := 60 ;
columns[7].title.caption:= '料名規格';
Columns.Items[7].Width := 120 ;
columns[8].title.caption:= '單位';
Columns.Items[8].Width := 40 ;
columns[9].title.caption:= '標準用量';
Columns.Items[9].Width :=60 ;
columns[10].title.caption:= '允許率';
Columns.Items[10].Width :=40 ;
columns[11].title.caption:= '基本用量';
Columns.Items[11].Width := 40 ;
columns[12].title.caption:= '備註';
Columns.Items[12].Width := 40 ;
end;
end;

procedure TFrm_Wip_Bom.TypeBtnClick(Sender: TObject);
begin
//打開 規格單 窗體 同時顯示目標 值 。
if not Assigned(frm_makep) then
begin
Application.CreateForm(Tfrm_makep,frm_makep);
frm_makep.Show;
end else
begin
frm_makep:=nil;
Application.CreateForm(Tfrm_makep,frm_makep);
frm_makep.Show;
end;
DMEng_c.CD_makep.Close;
DMEng_c.CD_makep.CommandText:= 'select * from t_makep where eng_no ='+ QuotedStr( copy(Eng_No_edt.Text,1,length(trim(Eng_No_edt.Text))-1) ) ; //'select * from t_makep where model='+ QuotedStr(MOdel_edt.Text) ; ;//'5C7500-01''' ;
if not DMEng_c.CD_makep.Active then DMEng_c.CD_makep.Active :=true;

end;

procedure TFrm_Wip_Bom.MAKE_NO_edtExit(Sender: TObject);
var
make_no:string;
begin
// 取工單號
make_no:= QuotedStr(TRIM(MAKE_NO_EDT.Text));

if DMOra_c.CD_tmp.Active then
DMOra_c.CD_tmp.Close;
DMOra_c.CD_tmp.CommandText:= 'select WE.WIP_ENTITY_NAME MAKE_NO '
+ ' , MSI.SEGMENT1 PROD_NO ,MSI.DESCRIPTION AS MODEL_no '
+ ' ,DECODE(SUBSTR(WE.WIP_ENTITY_NAME,4,1) ,2 ,BBOM.ATTRIBUTE1,3,BBOM.ATTRIBUTE2) as Eng_No ' //規格單
+ ' from WIP.WIP_ENTITIES WE ,APPS.MTL_SYSTEM_ITEMS_B MSI,BOM.BOM_BILL_OF_MATERIALS BBOM '
+ ' where WE.ORGANIZATION_ID IN (426,427) '
+ ' AND WE.PRIMARY_ITEM_ID=MSI.INVENTORY_ITEM_ID '
+ ' AND WE.ORGANIZATION_ID=MSI.ORGANIZATION_ID'
+ ' AND BBOM.ASSEMBLY_ITEM_ID=WE.PRIMARY_ITEM_ID '
+ ' AND BBOM.ALTERNATE_BOM_DESIGNATOR='+ '''WIP'''
+ ' AND WE.wip_entity_name =' + make_no ; //'''D0821E490''' ;
DmOra_c.CD_tmp.Open;

TYPE_NO_EDT.Text:= DmOra_c.CD_tmp.fieldByname('prod_no').AsString;
MOdel_edt.Text:= DmOra_c.CD_tmp.fieldByname('model_no').AsString;
Eng_No_edt.text:=DmOra_c.CD_tmp.fieldByname('Eng_no').AsString;

end;

procedure TFrm_Wip_Bom.PhotoBtnClick(Sender: TObject);
var
uInifile:Tinifile;
FileName,inifilename,path:string;
begin
//LCM: 工程圖文件名,命名: 料號 + '.DWG'
//LCD: 工程圖文件名,命名: 是規格單資料中的 "工程圖號"+ '.DWG'
if COPY(TRIM(MAKE_NO_EDT.Text),1,1)='M' then
begin
fileNAME:= TYPE_NO_edt.TEXT +'.DWG';
end
else //LCD:
if COPY(TRIM(MAKE_NO_EDT.Text),1,1)='D' then
begin
DMEng_c.CD_makep.Close;
DMEng_c.CD_makep.CommandText:='select top 1 * from t_makep where eng_no ='+ QuotedStr( copy(Eng_No_edt.Text,1,length(trim(Eng_No_edt.Text))-1) ) ;
if not DMEng_c.CD_makep.Active then
DMEng_c.CD_makep.Active :=true;
FileName:=DMEng_c.CD_makep.FieldByName('schno').AsString + '.dwg';
end;



// 從 INI文件中取CAD文件路徑。
IniFilename:=extractfilepath(application.ExeName)+'LOGININFO.INI';
if fileexists(inifileName) then
begin
uinifile:=Tinifile.create(Inifilename);
Path :=uInifile.readString('CADFile','path','');
end;
// FileName:='d123.dwg';
edit1.Text:= path+ ''+ Filename;
if FileExists(edit1.Text) then
ShellExecute(handle, nil, pchar(FileName), nil, pchar(path),SW_SHOW)
else
showMessage('文件不存在或文件無效!');

// 打開文件
//ShellExecute(Application.Handle, nil, 'D:d123.dwg' +#0, nil, nil, SW_SHOWNORMAL);
{ if opendialog1.Execute then
begin
Filename := extractfilename(opendialog1.FileName);
path := extractfiledir(opendialog1.FileName);
edit1.Text:= path+ ''+ Filename;
ShellExecute(handle, nil, pchar(FileName), nil, pchar(path),SW_SHOW) ;
end;
}
end;

procedure TFrm_Wip_Bom.Button1Click(Sender: TObject);
var
name,path : string;
begin //打開文件路徑
OpenDialog1.Filter := 'CAD文件(*.DWG)|*.dwg'; //打開指定文件類型
if opendialog1.Execute then
begin
name := extractfilename(opendialog1.FileName);
path := extractfilePath(opendialog1.FileName);
edit1.Text:= path+name;
ShellExecute(handle, nil, pchar(Name), nil, pchar(path),SW_SHOW);
end;
end;

end.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/729024/viewspace-1040204/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/729024/viewspace-1040204/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值