小编ple*_*103的帖子

最小化/优化重复代码

这是我的代码,用于"动画" TPanel鼠标光标悬停在它上面的时间.我还有一个代码块来使它无法动画.

procedure Tmain.pStarting1MouseEnter(Sender: TObject);
begin
  if sender = pStarting1 then pStarting1.BevelInner := bvLowered;
  if sender = pStarting2 then pStarting2.BevelInner := bvLowered;
  if sender = pStarting3 then pStarting3.BevelInner := bvLowered;
  if sender = pStarting4 then pStarting4.BevelInner := bvLowered;
  if sender = pStarting5 then pStarting5.BevelInner := bvLowered;
  if sender = pStarting6 then pStarting6.BevelInner := bvLowered;
  if sender = pStarting7 then pStarting7.BevelInner := bvLowered;
  if sender = pStarting8 then pStarting8.BevelInner := bvLowered;
  if sender = pStarting9 then pStarting9.BevelInner := bvLowered;
end; …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

4
推荐指数
1
解决办法
222
查看次数

加载动态.ini标识符

我正在创建一个我的学生计划器的虚拟版本,它基本上可以让你记录你有什么主题的家庭作业.

这是界面: 在此输入图像描述

用户从组合框中选择主题并在相邻备忘录中键入一些注释.完成后,他们将点击"保存"按钮,将其保存到.ini文件中.选定的日期将成为部分名称,主题将成为标识符,备忘录中的文本将成为每个标识符的值.

注意:有7个可能的科目.

我的问题是在选择日期时加载组合框和备忘录,因为每个日期的标识符总是不同的.

例如:

2月16日用户输入(界面):

英语 - 阅读小说第127页.
数学 - 完成第6章.

对于2月16日,它将在.ini文件中看起来像这样:

[16/02/12]
英语=阅读小说第127页.
数学=完成第6章.

2月20日用户输入(界面):

SOSE - 阅读课本.
法律研究 - 填写在线调查.

对于2月20日,它将在.ini文件中看起来像这样:

[20/02/12]
SOSE =阅读课本.
法律研究=填写在线调查.

现在您看到用户是否选择了2月16日来查看他们的任务是什么,因为每个标识符都不同,所以无法加载.

是否有更好的替代.ini文件?我怎样才能实现这一目标?

delphi delphi-2010

3
推荐指数
2
解决办法
866
查看次数

启用TStringGrid编辑

我按照这个视频制作一个简单的数据库应用程序.当我使用a TStringGrid而不是TGrid声明的视频时,我的问题就出现了,因为我没有它.我有一个导航器,我的所有数据都加载到了TStringGrid,但我根本无法编辑它.到目前为止,我已经尝试双击一个条目,按F2并单击导航器上的编辑按钮,但没有任何工作.

有什么我需要在TStringGrid允许编辑的属性中改变,或者它的目的只是为了显示数据?

先谢谢你!

delphi delphi-xe3

3
推荐指数
1
解决办法
9273
查看次数

TSQLQuery没有返回正确数量的记录

我有一个表Artist,当前包含四个记录,TSQLQuery其中包含以下语句:

SELECT name
FROM Artist
Run Code Online (Sandbox Code Playgroud)

表格Artist还包含以下记录:

id          name
1           Artist 1
2           Artist 2
3           Artist 3
4           Artist 4
Run Code Online (Sandbox Code Playgroud)

目前的记录检索方法:

Query1.Open;
for i := 0 to qArtist.FieldCount -1 do
    with cbArtist.ListBox.ListItems[i] do
        Text := qArtist.Fields[i].AsString;
Run Code Online (Sandbox Code Playgroud)

以前的记录检索方法:

数据绑定Query1ComboBox1.


使用"previous"方法,ComboBox1将显示Artist表中的所有预期记录.但是,当我尝试使用"当前"方法时Query1,只选择Artist表中的第一条记录,尽管还有其他三个现有值.我已尝试跨越其他查询的"当前"方法,他们也只返回表的第一个值.

我之所以采用这种新方法,是因为我觉得如果我继续使用"上一个"/数据绑定方法,我的工作非常有限,但除此之外.

那么我该如何解决这个问题呢?即查询问题只选择表中的第一条记录.

delphi sqlite delphi-xe3 firemonkey-fm2

3
推荐指数
1
解决办法
1259
查看次数

.ini文件没有创建

我已经开始使用.ini文件了,因为我发现它与.txt文件相比有很多优点.无论如何,我用谷歌搜索"delphi inifiles",我现在正在关注Delphi的指南.然而,即使所有语法都正确,我试过的第一行也给了我麻烦.

德尔福关于代码:

IniFile := TIniFile.Create('myapp.ini') ;
Run Code Online (Sandbox Code Playgroud)

我的代码:

IniFile := TIniFile.Create('SWEDISH_HOUSE_MAFIA.ini');
Run Code Online (Sandbox Code Playgroud)

唯一的区别是.ini文件本身的名称.还有,我有:

  • 在'uses'子句中声明'IniFiles'
  • (本地)宣布IniFile

我已将该代码放在FormCreate下,但问题是在运行程序时不会创建.ini文件.谁知道问题可能是什么?我问了一个朋友,他说这是一个许可问题.

额外细节:

  • 操作系统 - Windows 7旗舰版64位(管理权限)
  • 程序存储在 - 我的文档中
  • 我用 - Delphi 2010

delphi delphi-2010

2
推荐指数
1
解决办法
9224
查看次数

控制文件下载

我正在使用TWebBrowser为我的程序构建更新程序.OnCreate TWebBrowser导航到给定的URL.要下载更新,用户需要单击链接.单击链接时,将显示以下弹出窗口:

在此输入图像描述

所以我想知道是否有可能:

  1. 绕过该弹出窗口并允许自动下载.
  2. 设置文件将下载到的固定路径.

delphi delphi-2010

2
推荐指数
1
解决办法
2970
查看次数

不兼容的类型 - TArray <System.Byte>&Byte

我已宣布outputBuffer为a Byte并相应地使用它:

TFile.WriteAllBytes(outputPath,outputBuffer);

当我编译我的程序时,Delphi输出:

[DCC错误] StormLib.pas(56):E2010不兼容的类型:'System.TArray [System.Byte]和'Byte'

我的变量使用了错误/过时的数据类型吗?我该怎么做才能让我的程序编译?

先谢谢你!

delphi delphi-xe

2
推荐指数
1
解决办法
6870
查看次数

VCL表单应用程序和控制面板小程序之间有什么区别

首先,维基百科将控制面板小程序定义为:

图形用户界面,允许用户通过applet查看和操作基本系统设置和控件

它是否正确?

其次,在功能方面,VCL应用程序和控制面板小程序之间有什么区别.与VCL应用程序相比,使用CP Applet更改基本系统设置更容易吗?

delphi delphi-2010

1
推荐指数
1
解决办法
1768
查看次数

如何使用DLL中包含的标志?

我正在使用的函数包含三个参数,其中一个参数需要一个标志(fCreationDisposition):

function MpqOpenArchiveForUpdate(lpFileName: LPCSTR; fCreationDisposition, dwHashTableSize: DWord): THandle; stdcall; external 'lmpqapi.dll';

文件指出,有五个可用的标志.但是,当我使用任何标志时Delphi告诉我它是一个"未声明的标识符".

为了能够访问标志而没有Delphi告诉我它是一个"未声明的标识符",还有什么额外的东西我必须添加吗?

注意:在uses我要求的功能部分:

function MpqOpenArchiveForUpdate(lpFileName: LPCSTR; fCreationDisposition, dwHashTableSize: DWord): THandle; stdcall; external 'lmpqapi.dll';

delphi delphi-xe

1
推荐指数
1
解决办法
161
查看次数

运行查询并将结果显示在TEdit中

我有一个TComboBox从我的数据库收集的名称列表.旁边是TEdit我打算用于显示与每个人相关联的ID号的目的.

由于firstName和lastName是表中的单独字段,但在TCombobox中一起显示,我编写了一小段将firstName和lastName拆分为两个单独的变量:

 pos := AnsiPos(' ', cbStudents.Text); 
 firstName := Copy(cbStudents.Text, 0, pos-1);
 lastName := Copy(cbStudents.Text, pos+1, Length(cbStudents.Text));
Run Code Online (Sandbox Code Playgroud)

然后我执行SQL代码:

  try
    query.Open;
    query.SQL.Add('Select studentID');
    query.SQL.Add('From student');
    query.SQL.Add('Where firstName = ' + StrToQuote(firstName));
    query.SQL.Add('And lastName = ' + StrToQuote(lastName));
    editID.Text := query
  finally
    query.Free;
  end;
Run Code Online (Sandbox Code Playgroud)

注意:StrToQuote使用双引号("")封装变量firstName和lastName

我收到的错误是:

争论超出范围

我究竟做错了什么?谢谢你先进的帮助.

sql delphi delphi-xe3

1
推荐指数
1
解决办法
1265
查看次数

标签 统计

delphi ×10

delphi-2010 ×5

delphi-xe3 ×3

delphi-xe ×2

firemonkey-fm2 ×1

sql ×1

sqlite ×1