标签: delphi-7

delphi如何创建MDI窗体

如何解决“无法创建表单。当前没有活动的 MDI 表单”这个问题。我想制作一个简单的程序,需要一个登录表单才能访问主表单。我得到了三个表单:主表单(MDI 表单)、Form2(MDIChild)和登录表单(普通)。登录表单将首先出现,然后是主表单,然后当我尝试从主表单调用表单 2 时,会显示错误“无法创建表单。当前没有活动的 MDI 表单”。我在 Windows XP 上使用 Delphi 7。我是初学者。先生非常感谢您。

delphi delphi-7

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

小数部分到 Int

我想将数字的小数部分作为整数值返回。

我该怎么做?

例如,我有 12.98,我想在整数变量中返回 98。

delphi delphi-7

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

不满意的前向或外部声明?图片容器.pas

我在 Delphi 7 中有一个特定问题,我正在尝试运行由外部创建的自定义应用程序,因此从某种意义上说,我是尝试修复错误等的自由职业者。

问题:不满意的前向或外部声明

这与 TMS Component Pack v5 有关,我遇到的问题是PictureContainer.pas.

这是我得到的错误:

[错误] PictureContainer.pas(135): 不满意的前向或外部声明:'THTMLPicture.GetStretched'

[错误] PictureContainer.pas(136): 不满意的前向或外部声明:'THTMLPicture.SetStretched'

[错误] PictureContainer.pas(188): 不满意的前向或外部声明:'THTMLPictureCache.Destroy'

[致命错误] HTMLStatusBar.pas(29): 无法编译使用的单元“PictureContainer.pas”

我一直在尝试为此找到解决方案,并且有很多解决方案,但在这一点上我有点迷失了,因为我对这种类型的错误知之甚少。

请,任何帮助将不胜感激

谢谢

这是 PictureContainer.pas 源代码的相关摘录:

unit PictureContainer;

{$I TMSDEFS.INC}

interface

//CUT

type
   //NOTE: THTMLPicture is not defined in this unit, but we do have includes...
   {$I WIIF.PAS}

//CUT   

implementation

//CUT

{$I WIIMPL.PAS}

//CUT

{ TPictureCollection } Error line 135 <-------------
                       Error line 136 <-------------
function TPictureCollection.Add: TPictureItem;

//CUT    

constructor TPictureContainer.Create(AOwner: TComponent); Error line …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

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

SetEnvironmentVariable 不起作用

我需要为包含的 3rd 方库设置两个环境变量(当我的应用程序运行时)。

问题是“那样”它不起作用,但是当我运行控制台应用程序时,设置这两个变量然后运行应用程序,一切正常......

如何正确配置这两个变量?

我使用的程序:

function SetEnvVarValue(const VarName,
  VarValue: string): Integer;
begin
  // Simply call API function
  if SetEnvironmentVariable(PChar(VarName),
    PChar(VarValue)) then
    Result := 0
  else
    Result := GetLastError;
end;
Run Code Online (Sandbox Code Playgroud)

它返回 0

也许问题是,我在应用程序启动时加载了库。当我的应用程序启动时,我设置了变量,但我这样做太晚了......?


更多信息

我在 dpr 中包含了两个单元:

'C:\Program Files (x86)\Borland\Delphi7\Lib\Magick\magick\ImageMagick.pas' 中的 ImageMagick,'C:\Program Files (x86)\Borland\Delphi7\Lib\Magick\wand\magick_wand 中的 magick_wand .pas';

和单位:

unit DoItFirst;

interface

uses
  Windows, Sysutils;

var
  s: string;
  error: Integer;

function _putenv_s(const lpName, lpValue: PChar): BOOL; cdecl; external 'msvcrt.dll';

implementation

function GetEnvVarValue(const VarName: string): string;
var
  BufSize: Integer;  // buffer size …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

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

需要在 Delphi 中将大写字符更改为小字符

我有这个字符串,我需要将一些字符设为大写,所以我使用该UpCase命令......但是如果我需要从大写字母中生成小字符怎么办?在这种情况下我用什么?

delphi delphi-7

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

如何在 Delphi 7 中为某些代码添加书签?

与在 MS Visual Studio 中一样,我想为 Delphi 程序中的某些代码添加书签,但在 IDE 中找不到它。有了它,我将能够找回一段代码并在不同的文件之间切换,而不会丢失我正在工作的确切行。

在 Delphi 7 中可以吗?

ide delphi delphi-7

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

Delphi 7 和 .dfm 文件获取表单显示?

我是初学者。我收到了一个.rar包含一堆文件的文件。我认为它们用于生成表单。

下面是一个例子:

  • 备份管理器.dfm

  • 备份管理器文件

  • 波形控制.dfm

  • WaveControl.pas

那么,任何人都可以帮助我准确了解如何使用它们吗?

delphi delphi-7 windows-7-x64

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

线程是冻结的主要形式

我想运行多个线程。每个线程都应该将 JPEG 转换为位图。转换有效,但我的整个应用程序始终使用 12%-13% 的 CPU。我有一个 8 核 CPU,所以整个应用程序似乎只使用一个核。此外,当线程正在工作时,主窗体被冻结并且没有响应。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Jpeg, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Str: TMemoryStream;
    procedure OnTerminate(Sender: TObject);
  end;

  TMakeThumbThread= class(TThread)
  private
    FStream: TStream;
  public
    FBmp: TBitmap;    
    constructor Create(Str: TStream);
    procedure Execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TMakeThumbThread.Create(Str: TStream);
begin
  inherited Create(True);
  FStream := Str;
  FreeOnTerminate …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading delphi-7

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

防止在 TDBMemo 中使用 CTRL-V

TDBMemo在 Delphi 7 中使用一个控件。我想防止用户将CTRL+V.

此解决方案不起作用:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (Key=#22) or (Key=#3) then Key:=#0;   // 22 = [Ctrl+V] / 3 = [Ctrl+C]
end;
Run Code Online (Sandbox Code Playgroud)

所以,我尝试了别的东西:

if (Key=#86) then Key := #0; // this is ok, doesnt allow letter v.
Run Code Online (Sandbox Code Playgroud)

但是当我尝试:

if (Key=#17) AND (Key=#86) then Key := #0; // #17 is supposed to be CTRL value...
Run Code Online (Sandbox Code Playgroud)

它不起作用。

delphi paste delphi-7 intercept

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

在运行时创建表单和 WebBrowser

我正在使用 Delphi 7 并尝试在运行时创建一个WebBrowserinside a Form,但无法使其工作。这是代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  Form: TForm;
  Brws: TWebBrowser;
begin
  Form := TForm.Create(nil);
  try
    Form.Width := 500;
    Form.Height := 500;
    Form.BorderStyle := bsDialog;
    Form.Position := poScreenCenter;
    Form.Caption := 'Select the Option';
    Brws := TWebBrowser.Create(Form);
    Brws.ParentWindow := Form.Handle;
    TWinControl(Brws).Parent := Form;
    Brws.Align := alClient;
    Brws.AddressBar := False;
    Brws.MenuBar := False;
    Brws.StatusBar := False;
    Application.ProcessMessages;
    if Form.ShowModal = mrOk then
      Brws.Navigate('https://www.google.com');
  finally
    Form.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

结果就像 WebBrowser 没有响应。我有一个白屏,没有错误消息。

在此处输入图片说明

请问,我错过了什么?谢谢!

delphi delphi-7 twebbrowser

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