Delphi未显示对象/组件“;“提示”;当我编码的时候

Delphi未显示对象/组件“;“提示”;当我编码的时候,delphi,delphi-7,Delphi,Delphi 7,如果我没有弄错的话,在插入一个组件名称后,在更多参数前面加上“.”(点),delphi就能够显示一个选项列表 我的delphi 7在“.”之后没有显示此列表 我进去的时候 form1.edit1. 它应该显示“TEdit”组件的选项列表。没有发生,怎么了 代码: unitbanri; 接口 使用 窗口、消息、系统工具、变体、类、图形、控件、窗体、, 对话框、stdctrl、Clipbrd; 类型 TForm1=类(TForm) EditTexto:TEdit; 按钮:t按钮; 程序按钮点击(发

如果我没有弄错的话,在插入一个组件名称后,在更多参数前面加上“.”(点),delphi就能够显示一个选项列表

我的delphi 7在“.”之后没有显示此列表

我进去的时候

form1.edit1.
它应该显示“TEdit”组件的选项列表。没有发生,怎么了

代码:

unitbanri;
接口
使用
窗口、消息、系统工具、变体、类、图形、控件、窗体、,
对话框、stdctrl、Clipbrd;
类型
TForm1=类(TForm)
EditTexto:TEdit;
按钮:t按钮;
程序按钮点击(发送方:对象);
私有的
{私有声明}
公众的
{公开声明}
结束;
变量
表1:TForm1;
SL:TStringList;
计数:整数;
Appwin:hWnd;
实施
{$R*.dfm}
变量
TextoCompleto:字符串;
开始
TextoCompleto:=EditTexto.Text;
Appwin:=FindWindow(PChar(0),'Banrisul');
如果Appwin为0,则
开始
StringReplace(TextoCompleto,“.”,“[rfReplaceAll,rfIgnoreCase]);
SL:=TStringList.Create;
尝试
提取字符串([''],],PChar(TextoCompleto),SL);
WriteLn(SL.Text);
ReadLn;
最后
SL.免费;
结束;
计数:=0;
而Count SL.Count-1 do
开始
Clipboard.AsText:=SL[Count]//将文本放入剪贴板
//如果剪贴板.HasFormat(CF_文本),则
//用文字做点什么
ShowMessage(Clipboard.AsText);
Clipboard.AsText:=SL[Count+1]//将下一行文本放入剪贴板
//如果剪贴板.HasFormat(CF_文本),则
//用文字做点什么
公司(计数);
结束//而Count SL.Count-1 do
SL.免费;
结束//如果Appwin为0,则
结束。

这称为代码完成。您可能无意中在选项中将其关闭。在“工具/选项/编辑器选项/代码透视”下查看,确保检查了代码完成情况。

我在这里猜测了一下,假设上面粘贴的代码未经编辑

我想您需要做的是添加
过程TForm1.ButtonGOClick(发送方:TObject)在代码中的第一个
开始之前

unit Banri;

interface

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

type
  TForm1 = class(TForm)
    EditTexto: TEdit;
    ButtonGO: TButton;
    procedure ButtonGOClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonGOClick(Sender: TObject); // <--- added line
var
  SL: TStringList;                               // <-- moved variables from global to local scope. Form1 needs to remain global
  Count: Integer;
  Appwin : hWnd;
  TextoCompleto: String;
begin
  TextoCompleto:= EditTexto.Text;
  Appwin:= FindWindow(PChar(0),'Banrisul');
  if Appwin <> 0 then
  begin
      StringReplace(TextoCompleto, '.', '', [rfReplaceAll, rfIgnoreCase]);

      SL:= TStringList.Create;
      try
        ExtractStrings([' '], [], PChar(TextoCompleto), SL);
        WriteLn(SL.Text);
        ReadLn;
      finally
        SL.Free;
  end;
      Count:= 0;
      while Count <> SL.Count - 1 do
        begin
          Clipboard.AsText:= SL[Count];; //place text in clipboard
          //if Clipboard.HasFormat(CF_TEXT) then
          //do something with text
          ShowMessage(Clipboard.AsText);
          Clipboard.AsText:= SL[Count + 1];; //place next line text in clipboard
          //if Clipboard.HasFormat(CF_TEXT) then
          //do something with text
          inc(Count);
        end; //while Count <> SL.Count - 1 do
      SL.Free;
  end; //if Appwin <> 0 then


end.
unitbanri;
接口
使用
窗口、消息、系统工具、变体、类、图形、控件、窗体、,
对话框、stdctrl、Clipbrd;
类型
TForm1=类(TForm)
EditTexto:TEdit;
按钮:t按钮;
程序按钮点击(发送方:对象);
私有的
{私有声明}
公众的
{公开声明}
结束;
变量
表1:TForm1;
实施
{$R*.dfm}

步骤t用于m1.按钮单击(发件人:ToObject);// 您将两种不同的Delphi单元样式混合在一起。您使用的单位是表单后面的单位(
.pas
)文件。但是,项目主文件(
.dpr
)具有不同的样式

项目的主文件是唯一应该包含
begin..end.
部分的文件。另一方面,其余单元必须有一个
实现
部分,其中实际代码用于多个功能/过程/方法等

因此,在您的情况下,您需要保持默认表单的单元在默认情况下是如何创建的

新的Delphi主项目文件如下所示:

program Project1;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
unit Unit2;

interface

implementation

end.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
新的Delphi标准单位文件如下所示:

program Project1;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
unit Unit2;

interface

implementation

end.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
新的Delphi vcl表单单元文件如下所示:

program Project1;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
unit Unit2;

interface

implementation

end.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
如果你实现了任何代码

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure DoSomething;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.DoSomething;
end;

procedure TForm1.DoSomething;
begin
  //Do Something...

end;

end.

您可能犯的一个错误是,添加到表单单元的原始代码是以示例控制台应用程序的形式出现的,这与VCL表单应用程序不同。控制台应用程序主要基于命令提示符,这在演示示例代码时似乎非常常见。但是,您不应该将该代码样式与任何其他标准单元样式混淆。

因此,其他人已经发现问题出在我的编码结构中,这是难以置信的错误

unit Banri;

interface

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

type
  TForm1 = class(TForm)
    EditTexto: TEdit;
    ButtonGO: TButton;
    procedure ButtonGOClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SL: TStringList;
  Count: Integer;
  Appwin : hWnd;

**implementation

{$R *.dfm}

  var
  TextoCompleto: String;



begin
  TextoCompleto:= EditTexto.Text;
  Appwin:= FindWindow(PChar(0),'Banrisul');
  if Appwin <> 0 then**
unitbanri;
接口
使用
窗口、消息、系统工具、变体、类、图形、控件、窗体、,
对话框、stdctrl、Clipbrd;
类型
TForm1=类(TForm)
EditTexto:TEdit;
按钮:t按钮;
程序按钮点击(发送方:对象);
私有的
{私有声明}
公众的
{公开声明}
结束;
变量
表1:TForm1;
SL:TStringList;
计数:整数;
Appwin:hWnd;
**实施
{$R*.dfm}
变量
TextoCompleto:字符串;
开始
TextoCompleto:=EditTexto.Text;
Appwin:=FindWindow(PChar(0),'Banrisul');
如果Appwin为0,则**

很容易看出,我已经开始编码,没有函数或过程。这就是为什么“提示”(实际上称为“代码洞察”,我在别人的帮助下也发现了这一点)不起作用。Delphi没有将代码识别为任何内容的一部分,因此无法提供代码细节。

组件名称下面是否有一条红色的斜线?用这个名字怎么样?如果是这样,当您将鼠标悬停在它上面时,工具提示会告诉您什么?您可以包含表单的源代码吗?或者至少只包含
uses
子句。。。表单单位使用的所有单位。行
TextoCompleto:=EditTexto.Text将不会编译。您是否缺少一行,如
过程TForm1.buttongClick(发送方:TObject)就在它之前?如果不是,请注意EditTexto是类型为
TForm1
的组件。它只能从TForm1类的方法中引用。e、 g.
按钮单击
,或使用实例变量或字段,例如默认的Form1变量(
Form1.EditTexto.Text
)。如果没有缺少行,您将在单位代码中添加相当于初始化部分的内容。还要注意,
SL、Count和AppWin可能应该是局部变量。它可能没有显示的原因还有很多,例如,
使用中没有声明单位