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