为什么这段代码没有问题:
drop table t1
select * into t1 from master..spt_values
drop table t1
select * into t1 from master..spt_values
Run Code Online (Sandbox Code Playgroud)
产量
Msg 3701, Level 11, State 5, Line 1
Cannot drop the table 't1', because it does not exist or you do not have permission.
(2508 row(s) affected)
(2508 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
但是这段代码没有:
drop table #t1
select * into #t1 from master..spt_values
drop table #t1
select * into #t1 from master..spt_values
Run Code Online (Sandbox Code Playgroud)
产量
Msg 2714, Level 16, State 1, Line 4
There is …
Run Code Online (Sandbox Code Playgroud) 看看下面的代码:
uses
TypInfo, Dialogs, Classes, Generics.Collections, ADODB, DB, SysUtils;
type
TTable_1 = (ID, FName, LName, FatherName);
type
TBaseTable<TableType> = class(TADOQuery)
public
constructor Create(AOwner: TComponent); Override;
procedure Select(DS: TDataSource);
end;
implementation
{ TBaseTable<TableType> }
constructor TBaseTable<TableType>.Create(AOwner: TComponent);
begin
inherited;
Self.Connection := DataModule3.ADOConnection1;
Self.Connection.Connected := True;
end;
procedure TBaseTable<TableType>.Select(DS: TDataSource);
var
Query: string;
EnumIndex: Byte;
begin
EnumIndex := 0;
Query := 'SELECT ';
while (GetEnumName(TypeInfo(TableType), EnumIndex) <> UnitName) do
begin
Query := Query + GetEnumName(TypeInfo(TableType), EnumIndex) + ',';
Inc(EnumIndex);
end;
Query := …
Run Code Online (Sandbox Code Playgroud) 我在下面写了一个样本组件:
unit Test;
interface
uses
System.SysUtils, System.Classes, System.Variants, VCL.Dialogs;
type
TTest = class(TComponent)
private
fName: TStringList;
{ Private declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); Override;
destructor Destroy; override;
published
{ Published declarations }
property Names: TStringList read fName;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TTest]);
end;
{TTest }
constructor TTest.Create(AOwner: TComponent);
begin
inherited;
fName := TStringList.Create;
for i:= 1 to 100 do
fName.Add(IntToStr(i));
end;
destructor TTest.Destroy;
begin
fName.Free;
inherited;
end;
end.
Run Code Online (Sandbox Code Playgroud)
现在当我在Delphi上安装它时,在Object Inspector中我有一个名为"Names"的属性,我应该双击它,然后一个对话框显示存储在Name上的TStringList项.
我想在其他组件(如TEdit等)中使这个属性像Font.Name,当点击Name属性,列表显示,用户可以从中选择一个项目,然后将项目分配给属性并显示为Object …