如何把不同的几个delphi程序合并为一个工具集?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把不同的几个delphi程序合并为一个工具集?相关的知识,希望对你有一定的参考价值。

如何把不同的几个delphi小程序合并为一个工具集?

比如说 我有个写好的记事本,计算器,时钟,我怎么才能把他们集成在一个新创建的Mainform里面,可以点新创建的 主界面上的 不同按钮 就可以进入相应的小程序?
谢谢~ 请尽量说的详细一些~

我才刚刚入门,记事本之类的小程序是我下载的。

若哪位大侠帮我解决了,再追加50分,以示诚意~
再次谢过!!!!!!!!
太谢谢了~ 我的邮箱是 xly603@163.com~

如果仅仅是实现你所说的功能而没其他要求的话,还是比较简单的,只需要你在每个按钮下写几行几乎相同的代码就行了。如果定义一个过程,那么就更简单了。每个按钮下只需要一行代码。
关键是调用一个执行外部应用程序的函数:这样的函数比较多,你在搜索引擎里搜“Delphi 如何调用外部程序”会给你很多参考的。我这里用
WinExec()函数来实现。你也可以用其他的。
先定义一个过程:
procedure MyTools(ToolPathAndName: string;WindowState: string);
begin
WinExec(ToolPathAndName,WindowState);
end;
然后在每个按钮下输入这行代码就可以了:
MyTool('(1)','(2)');
注:(1)处为该按钮要打开的你工具的路径和名称,可以用绝对和相对路径,如绝对路径:C:\我的记事本.exe,相对路径:mytools\我的记事本.exe(建议你用相对路径这样,你的整个程序放到别人的电脑上,只要相对路径不变几不会出问题)
(2)处为你想打开的程序的窗口状态你可以默认设置为:"SW_SHOWNORMAL"(普通大小),也可以最大化,最小化,界于你是在程序里调用,我觉得就"SW_SHOWNORMAL"就行了。
如果还有什么问题的话,可以给我发消息。我第一时间回答你。
你甚至可以把你那些工具的名字给我,我给你做一演示程序都行。
【补充】:演示程序我已经做好了,如果你愿意的话,你把你的邮箱给我,我给你发过来。
参考技术A Function File_ShellOpen(Const aFile: String): Boolean;
Var
Tmp: Array[0..100] Of char;
Begin
Result := ShellExecute(Application.Handle,
'open', StrPCopy(Tmp, aFile), Nil, Nil, SW_NORMAL) > 32;
End;

你可以放按钮,通过调用上面函数实现你需要的功能
函数的参数是你存放的工具的路径.

如何创建一个脚本来合并另一个表中的几个表?

对不起我的英语,这不是我的力量!

我正在为一个负责培训课程的非政府组织工作。

我们有一个google工作表,在不同的电子表格中逐个编译每个培训日参与者的数据。

所以我的年度文档由30个电子表格组成。我想再创建一个电子表格,它将合并来自其他标签的所有数据,以便: - 能够快速查看谁还没有支付他的账单 - 计算总金额

我知道我可以通过使用过滤器功能来实现它,但是对于这么多的电子表格来说它真的非常耗时,如果我添加一个训练课程,我将不得不改变公式。而且,我每年都会被迫这样做。

所以我想创建一个按钮来导入新电子表格中的所有数据。

您将在此处找到仅包含2个电子表格的工作表示例:https://docs.google.com/spreadsheets/d/1-RxzUGJFXnU3_mJ3Qj0MCTpwPTlnmgIT439AchyrRrE/edit?usp=sharing

我希望你能帮助我!

谢谢,新年快乐:D

答案

Merging Sheets in another sheet in same spreadsheet.

您将需要名为“CopiDdeFCCE”的电子表格的ID,其他参数将默认为“CopieDdeFCCE”。

function mergeSpreadsheet(ssid,shname){
  var shname=shname || 'CopieDdeFCCE';
  var ss=SpreadsheetApp.openById(ssid);//id of spreadsheet named 'CopieDdeFCCE' in your case
  var sh=ss.getSheetByName(shname);//sheetname of sheet where other sheets are merged into again in your case its named 'CopieDdeFCCE'
  if(!sht){ss.insertSheet(shname);}
  var allshts=ss.getSheets();
  for(var i=0;i<allshts.length;i++){
    if(allshts[i].getName()!=shname){//do this for all sheets except shname
      var shi=allshts[i];
      var rg=shi.getDataRange();
      var vA=rg.getValues();
      shi.getRange(sh.getLastRow() + 1, 1,shi.getLastRow(),shi.getLastColumn()).setValues(vA);
    }
  }
}

只是为了清楚。

  • Google称之为电子表格的文件是包含所有标签(即表格)的文件。
  • 在您的第一个评论中,您说了以下内容:我想将名为“CopieDdeFCCE”的所有28张文件合并到同一文件的新工作表中。
  • 但现在在你的问题中你说:我想创建一个按钮来导入新电子表格中的所有数据。
  • 您在上次评论中声明您的命令如下所示:mergeSpreadsheet(“1KC6kHcgtLZ93S4-r4wOwHFOG6Rq3mesGRKv26Ttnm9E”,“CopieDdeFFCE”)
  • 但很明显,这不是示例的ID,并且该示例没有具有该名称的工作表。

所以我的问题是:你究竟想要什么?

另一答案

很抱歉,我没有收到任何回复通知,因为这是一个编辑,当我来看看你是否写了一些东西时,我看了一下网站的底部。 :/

首先,新年快乐,再次感谢您的帮助!

以下是您提出的精确度:

1°实际上,我想将名为“CopieDdeFCCE”的所有28张文件合并到同一文件的新工作表中。为了更准确,我给你链接文件的确切位置和一些表格的例子:link

2°其次,我将创建一个按钮,轻松更新所有数据。但我想我知道该怎么做,所以暂时忘记这个问题;)

3°在我附上的文件中,我们是否同意“id”是:1KC6kHcgtLZ93S4-r4wOwHFOG6Rq3mesGRKv26Ttnm9E ??

再次感谢您的所有时间!

以上是关于如何把不同的几个delphi程序合并为一个工具集?的主要内容,如果未能解决你的问题,请参考以下文章

表头一样的几个excel表怎么合并在一起?

delphi中如何实现多线程对Canvas的同时访问

如何创建一个脚本来合并另一个表中的几个表?

怎样用spss将一个数据文件中的几个变量合并成一个变量?

Delphi的几个难题?

DELPHI下多线程编程的几个思维误区(QDAC)