⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weboutput.pas

📁 DBDesigner 4 is a database design system that integrates database design, modelling, creation and ma
💻 PAS
📖 第 1 页 / 共 5 页
字号:
begin

  group.Views.Extract(view);

  UnassignedViewsList.Add(view);

end;







//returns a stringlist with associated objects

procedure TWeboutput.GetGroupNames(stringList : TStringList);

var i: Integer;

    group: TGroup;

begin



  for i:=0 to GroupList.Count-1 do

  begin

    group := TGroup(GroupList.Items[i]);

    stringList.AddObject(group.Name, group);

  end;



end;





//paired stringList

procedure TWeboutput.GetViewNamesFromGroup(group: TGroup; stringList :TStringList);

var j : Integer;

    viewList: TObjectList;

begin



  viewList:= group.Views;

  for j:= 0 to viewList.Count-1 do

    stringList.AddObject(TView(viewList[j]).name, viewList[j]);



end;





procedure TWeboutput.GetUnassignedViewNames(stringList : TStringList);

var i: Integer;

begin



  for i:= 0 to self.UnassignedViewsList.Count-1 do

  begin

    stringList.AddObject(TView(UnassignedViewsList[i]).Name, UnassignedViewsList[i]);

  end;



end;





procedure TWeboutput.GetViewNames(stringList: TStringList);

var i,j: Integer;

begin

  GetUnassignedViewNames(stringList);



  for i:=0 to Grouplist.Count-1 do

  begin

    for j:= 0 to TGroup(Grouplist[i]).Views.Count-1 do

    begin

      stringList.AddObject(TView(TGroup(Grouplist[i]).Views[j]).Name, TGroup(Grouplist[i]).Views[j]);

    end;

  end;



end;















function TWeboutput.InputComplete() : Boolean;

var i,j:Integer;

    tmpGroup: TGroup;

    tmpView: TView;

begin



  if (databasename = '') then

  begin

    InputComplete:=false;

    Exit;

  end;

  if (heading = '') then

  begin

    InputComplete:=false;

    Exit;

  end;

  if (hostname = '') then

  begin

    InputComplete:=false;

    Exit;

  end;

  if (layout = '') then

  begin

    InputComplete:=false;

    Exit;

  end;

  if (password = '') then

  begin

    InputComplete:=false;

    Exit;

  end;

  if (saveDir = '') then

  begin

    InputComplete:=false;

    Exit;

  end;

  if (username = '') then

  begin

    InputComplete:=false;

    Exit;

  end;



  InputComplete:= false;

  //at least 1 assigned view has to exist   (so 1 group has to exist too)

  //and moreover this view has to have at least 1 grid-column visible

  //*WARNING: THIS HAS TO BE THE LAST CHECK*

  for i:=0 to Grouplist.Count-1 do

  begin

    tmpGroup:= TGroup(Grouplist[i]);



    for j:= 0 to tmpGroup.Views.Count-1 do

    begin

      tmpView := TView(tmpGroup.Views[j]);

      if (tmpView.OneGridColVisible()) then

      begin

        InputComplete := true;

        Exit;

      end;

    end;

    

  end;



end;







//*************************************************************

//**Implementations for TPhpoutput*****************************

//*************************************************************



procedure TPhpoutput.CreateIncludeFile();

var F: TextFile;

begin

  try

  AssignFile(F,self.SaveDir+'db_open.php');

  Rewrite(F);

  Writeln(F,'<?php');

  Writeln(F,'$host = "'+hostname+'";');

  Writeln(F,'$user = "'+username+'";');

  Writeln(F,'$password = "'+password+'";');

  Writeln(F,'$database = "'+databasename+'";');

  Writeln(F,'/* Connect to the db and select a database*/');

  Writeln(F,'$dbLink  = mysql_connect($host,$user, $password) or die("Couldn''t connect to the database!");');

  Writeln(F,'$success = mysql_select_db($database) or die("Error selecting the database! <br> ".mysql_error());');

  Writeln(F,'?>');

  finally

    Close(F);

  end;

end;





procedure TPhpoutput.Run();

var a:Integer;

    LayoutFilepath,GridTemplateFilename: string;

    NeededFilesString, NeededDirsString : String;

    tmp,IndexTemplateFilename,SQLTemplateFilename, UpdateTemplateFilename: string;

    InsertTemplateFilename,FrameTemplateFilename,SearchTemplateFilename :string;

    layoutSettings : TIniFile;

    neededDirs, neededFiles : TStringList;

begin

  //find out more about the layout we are using



  LayoutFilepath:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + DataDir+layout+PathDelim;

  LayoutSettings:= TIniFile.Create(LayoutFilepath+layout+'.ini');



  IndexTemplateFilename:= layoutSettings.ReadString('General','IndexTemplateFilename','');

  FrameTemplateFilename:= layoutSettings.ReadString('General','FrameTemplateFilename','');

  GridTemplateFilename:= layoutSettings.ReadString('General','GridTemplateFilename','');

  UpdateTemplateFilename:= layoutSettings.ReadString('General', 'UpdateTemplateFilename','');

  InsertTemplateFilename:= layoutSettings.ReadString('General', 'InsertTemplateFilename','');

  SearchTemplateFilename:= layoutSettings.ReadString('General', 'SearchTemplateFilename','');

  SQLTemplateFilename:= layoutSettings.ReadString('General', 'SQLTemplateFilename','');

  NeededFilesString:= layoutSettings.ReadString('General','NeededFiles','');

  NeededDirsString:= layoutSettings.ReadString('General','NeededDirs','');



  LayoutSettings.Free();



  neededFiles := TStringList.Create;

  neededDirs := TStringList.Create;

  Split(NeededFilesString , ',', neededFiles);

  Split(NeededDirsString  , ',', neededDirs);



  //copy all files

  for a:=0 to neededFiles.Count-1 do

  begin

    DMMain.CopyDiskFile(LayoutFilepath+neededFiles[a],saveDir+neededFiles[a],false);

  end;



  //copy all directories including their files

  for a:=0 to neededDirs.Count-1 do

  begin

    tmp:= neededDirs[a];

    //copy directory including all files includefilepathdelim

    //CopyDir(LayoutFilePath+tmp+PathDelim,tmp,saveDir+tmp);

    DMMain.CopyDirRecursive(LayoutFilePath+tmp, saveDir+tmp, false);

  end;



  neededFiles.Free;

  neededDirs.Free;



  //first we create the include file

  CreateIncludeFile();



  //let's create the index.php file now

  CreateIndexFile(LayoutFilePath+IndexTemplateFilename);



  CreateFrameFiles(LayoutFilePath+FrameTemplateFilename);



  CreateSearchFiles(LayoutFilePath+SearchTemplateFilename);



  //create the grid-files (= tableview for each view)

  CreateGridFiles(LayoutFilepath+GridTemplateFilename);



  if (SQLTemplateFilename <> '') THEN

    CreateSQLFiles(LayoutFilepath+SQLTemplateFilename);



  //create the update-files

  if (UpdateTemplateFilename <> '') then

    CreateUpdateFiles(LayoutFilepath+UpdateTemplateFilename);



  if (InsertTemplateFilename <> '') then

    CreateInsertFiles(LayoutFilepath+InsertTemplateFilename);

  

  SaveIcons();

end;



procedure TPHPOutput.SaveIcons();

var i, j: Integer;

    TmpGroup : TGroup;

    TmpView: TView;

    saveFilename : String;

begin

  for i:=0 to GroupList.Count-1 do

  begin

    TmpGroup:=TGroup(GroupList[i]);



    ForceDirectories(IncludeTrailingPathDelimiter(saveDir)+'images'+PathDelim+'icons');

    //for all views of the group do

    for j:=0 to TmpGroup.Views.Count-1 do

    begin

      TmpView:=TView(TmpGroup.Views[j]);



      saveFilename := IncludeTrailingPathDelimiter(saveDir)+'images'+PathDelim+'icons'+PathDelim+TmpView.IconFilename;

      DMMain.SaveBitmap(TmpView.Icon.Bitmap.Handle, saveFilename, ExtractFileExt(saveFilename));



    end;



  end;

end;



procedure TPHPOutput.CreateFrameFiles(FrameTemplateFilename: string);

var i, j, u,fIndex: Integer;

    TmpGroup : TGroup;

    TmpView: TView;

    saveFilename,str,tmp,gridFilename : String;

    FrameTemplate : TStringList;

    TemplateF, frameFile :   TextFile;

begin

  fIndex:= 0;



  //read in the frame-template file

  FrameTemplate := TStringList.Create;



  if (NOT (FileExists(FrameTemplateFilename)) ) then

  begin

    raise ETemplateFileException.Create(FrameTemplateFilename+','+TemplateFileError);

  end;



  try

    AssignFile(TemplateF,FrameTemplateFilename);

    Reset(TemplateF);

    while not eof(TemplateF) do

    begin

        ReadLn(TemplateF, str);



        //add this line to our stringlist

        i := FrameTemplate.Add(str);

        if (AnsiContainsText(str,GRID_FILENAME_TOKEN) ) then fIndex:= i;

    end;

  finally

    Close(TemplateF);

  end;



  for i:=0 to GroupList.Count-1 do

  begin

    TmpGroup:=TGroup(GroupList[i]);



    //for all views of the group do

    for j:=0 to TmpGroup.Views.Count-1 do

    begin

      TmpView:=TView(TmpGroup.Views[j]);



      gridFilename := TmpGroup.Name+'_'+TmpView.Name+'.php';

      saveFilename := IncludeTrailingPathDelimiter(saveDir)+TmpGroup.Name+'_'+TmpView.Name+'_frame.php';



      //create file for grid-view

      AssignFile(frameFile,saveFilename);

      Rewrite(frameFile);



      Writeln(frameFile, GeneratedFileHeader);



      for u:=0 to FrameTemplate.Count-1 do

      begin

        tmp := FrameTemplate[u];



        if (u=fIndex) then

          tmp := DMMain.ReplaceText(tmp,GRID_FILENAME_TOKEN,'"'+gridFilename+'"');



        Writeln(frameFile, tmp);

      end;



      Close(frameFile);

    end;

  end;



  FrameTemplate.Free;

end;





procedure TPHPOutput.CreateSearchFiles(SearchTemplateFilename: string);

var i, j, u: Integer;

    TmpGroup : TGroup;

    TmpView: TView;

    saveFilename,str,tmp,gridFilename,frameFilename : String;

    SearchTemplate : TStringList;

    TemplateF, pFile :   TextFile;

    gridFilenameIndex,frameFilenameIndex,columnCaptionsIndex,columnsOrderIndex : Integer;

    viewNameIndex :Integer;

begin

  gridFilenameIndex := 0; viewnameIndex:=0;

  frameFilenameIndex := 0;

  columnCaptionsIndex := 0;

  columnsOrderIndex := 0;



  //read in the frame-template file

  SearchTemplate := TStringList.Create;



  if (NOT (FileExists(SearchTemplateFilename)) ) then

  begin

    raise ETemplateFileException.Create(SearchTemplateFilename+','+TemplateFileError);

  end;



  try

    AssignFile(TemplateF,SearchTemplateFilename);

    Reset(TemplateF);

    while not eof(TemplateF) do

    begin

        ReadLn(TemplateF, str);



        //add this line to our stringlist

        i := SearchTemplate.Add(str);

        if (AnsiContainsText(str,VIEWNAME_TOKEN) ) then viewnameIndex := i;

        if (AnsiContainsText(str,GRID_FILENAME_TOKEN) ) then gridFilenameIndex:= i;

        if (AnsiContainsText(str,FRAME_FILENAME_TOKEN) ) then frameFilenameIndex:= i;

        if (AnsiContainsText(str,COLUMN_CAPTIONS_TOKEN) ) then columnCaptionsIndex:= i;

        if (AnsiContainsText(str,COLUMNS_ORDER_TOKEN) ) then columnsOrderIndex:= i;



    end;

  finally

    Close(TemplateF);

  end;



  for i:=0 to GroupList.Count-1 do

  begin

    TmpGroup:=TGroup(GroupList[i]);



    //for all views of the group do

    for j:=0 to TmpGroup.Views.Count-1 do

    begin

      TmpView:=TView(TmpGroup.Views[j]);



      gridFilename := TmpGroup.Name+'_'+TmpView.Name+'.php';

      frameFilename := TmpGroup.Name+'_'+TmpView.name+'_frame.php';

      saveFilename := IncludeTrailingPathDelimiter(saveDir)+TmpGroup.Name+'_'+TmpView.Name+'_search.php';



      AssignFile(pFile,saveFilename);

      Rewrite(pFile);



      Writeln(pFile, GeneratedFileHeader);



      for u:=0 to SearchTemplate.Count-1 do

      begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -