小编stu*_*lly的帖子

Delphi - 使用TApplicationEvents OnShortCut事件来检测Alt + C键按下

我正在使用TApplicationEvents OnShortCut事件来获取Delphi程序中的应用程序键盘快捷方式.

使用以下代码:

procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean) ;
begin
   if (Msg.CharCode = VK_F9) then
   begin
     ShowMessage('F9 pressed!') ;
     Handled := True;
   end;
end;
Run Code Online (Sandbox Code Playgroud)

题:

如何检测何时按下"ALT C"?

delphi vcl

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

如何将TBytes转换为RawByteString?

在Delphi 2009中将声明为TBytes的字节数组转换为RawByteString的最佳方法是什么?这段代码实际上有效,也许有更快的方式(没有循环):

   function Convert(Bytes: TBytes): RawByteString; 
   var
     I: Integer;
   begin
     SetLength(Result, Length(Bytes));
     for I := 0 to ABytes - 1 do
       Result[I + 1] := AnsiChar(Bytes[I]);
   end;
Run Code Online (Sandbox Code Playgroud)

delphi string delphi-2009

5
推荐指数
4
解决办法
8259
查看次数

如何使RibbonApplicationMenuBar处于非活动/活动状态?

我尝试了许多与RibbonApplicationMenuBar相关联的方法,以防止用户使用鼠标选择RibbonApplicationMenuBar,直到从inifile加载项目设置并关闭splashform.但除非另有说明,否则似乎没有任何工作可以使RibbonApplicationMenuBar InActive.

帮助文件没有显示RibbonApplicationMenuBar的许多属性和帮助Wiki相同,所以我无法解决这个问题.

procedure TMainForm.FormCreate( Sender: TObject );
begin
  // make theRibbonApplicationMenuBar1 inactive
  RibbonApplicationMenuBar1.Enabled := False;
  RibbonApplicationMenuBar1.Inactive := True;
  RibbonApplicationMenuBar1.Hide;
  RibbonApplicationMenuBar1.AutoFocus := False;
  // read application settings
  ReadIni( AIniFileFilename );
  // show a splash form
  FormSplash := TFormSplash.Create( MainForm );
  // FormSplash.Parent := MainForm;
  FormSplash.Position := poOwnerFormCenter;
  FormSplash.Show;
  FormSplash.Update;
end;


procedure TMainForm.FormShow( Sender: TObject );
begin
  // close the splash form
  FormSplash.RequestClose;
  // Activate the RibbonApplicationMenuBar
  RibbonApplicationMenuBar1.Enabled := True;
  RibbonApplicationMenuBar1.Inactive := False;
  if RibbonApplicationMenuBar1.CanFocus then
    RibbonApplicationMenuBar1.SetFocus;
  RibbonApplicationMenuBar1.AutoFocus := True;
  RibbonApplicationMenuBar1.SelectApplicationButton; …
Run Code Online (Sandbox Code Playgroud)

delphi ribbon

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

Delphi XE2 Firemonkey示例应用程序无法在MAC上工作,停靠图标弹跳但没有显示

我看到了与此相关的另一个帖子,但我有一个不同的问题.我根据手册和其他线程的建议设置了所有内容,我没有收到任何错误.该应用程序实际上出现在码头,但这是事情停止的地方.首先它反弹了很长时间(分钟),在它最终停止反弹之后,没有窗口会显示出来.我在任何地方都没有错误.有什么建议?

delphi delphi-xe2 firemonkey

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

在构造函数中的神秘堆栈溢出

这是我的程序使用的类层次结构:

在此输入图像描述

TForm_Upgrade_Database的构造函数如下所示:

__fastcall TForm_Upgrade_Database :: TForm_Upgrade_Database(TComponent*Owner,int newest_version):TForm(Owner){}

在尝试创建公式的实例之后

TForm_Upgrade_Database *dlg = new TForm_Upgrade_Database(this, newest_version);
Run Code Online (Sandbox Code Playgroud)

我的程序抛出EStackOverflow异常

在此输入图像描述

我停止了程序并在TForm_Upgrade_Database构造函数中使用断点再次运行它.几步之后callstack看起来像这样:

在此输入图像描述

如何TCustomForm构造函数继续尝试调用其后代的构造函数???

最小的测试用例:

so_project.cpp:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "f_form.h"
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   TForm_Upgrade_Database *form = new TForm_Upgrade_Database(NULL, 10);
   delete form;
   form = NULL; 

   return 0;
}
//---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

f_form.cpp:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "f_form.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm_Upgrade_Database *Form1;
//---------------------------------------------------------------------------
__fastcall TForm_Upgrade_Database::TForm_Upgrade_Database(TComponent* Owner, int x)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

f_form.h:

//---------------------------------------------------------------------------

#ifndef f_formH
#define …
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow constructor c++builder c++builder-6

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

Delphi和XP嵌入式

有没有人知道Delphi(Win32)是否适用于嵌入式XP

windows delphi embedded

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

PageControl的左对齐选项卡上的水平文本方向

是否有可能将左对齐的标签标题水平定向?

delphi vcl

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

如何仅在某些列中使用CheckBoxes设置TListView?

我正在使用Delphi 2010,我试图允许用户在TListView中每行选择2个选项.使用TListView,我可以将样式设置为vsReport并启用Checkboxes,但每行只能获得1个复选框.我需要的是每行2个复选框...具体为1表示第1列,1表示第2列.

我想要完成的是非常类似于标准的Windows文件安全对话框: 在此输入图像描述

有没有人有任何建议使用TListView甚至MustangPeak的TEasyListView来实现这样的东西?

delphi listview

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

其中A = 1 AND A = 2返回0行问题 - (Short Mysql question)

我有下表中(id, Tag)包含以下值

(1, 17)
(1, 31)
(2, 17)
(3, 31)
Run Code Online (Sandbox Code Playgroud)

当我查询以下内容时

"SELECT id FROM table WHERE 1 AND Tag=17 AND Tag=31"
Run Code Online (Sandbox Code Playgroud)

我期望它返回(id)

(1)
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.(返回0行)

这有什么不对?

mysql sql

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

Indy FTP无法上传

使用简单的代码,例如:

  procedure TForm1.cxButton1Click(Sender: TObject);
  begin
  ftp.Host := 'domain';
  ftp.Username := 'user';
  ftp.Password := 'password';
  ftp.Connect;
  ftp.Put('C:\_Projects\testpicture.JPG');
  ftp.Quit;
  ftp.Disconnect;
  end;
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

  • 应用程序在上传时冻结(ergo无法查看进度条位置).
  • 上传的文件已损坏(破坏任何超过几个字节的内容).

我究竟做错了什么?

谢谢.

delphi ftp indy

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