目前我有这个代码来添加一些节点 VST
function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; AObject: TDATArecord): PVirtualNode;
var
Data: PUserData;
begin
Result := AVST.AddChild(ANode);
Data := AVST.GetNodeData(Result);
AVST.ValidateNode(Result, false);
Data^.FObject := AObject;
end;
//adding node
VDT1.BeginUpdate;
try
DATArecord.name := 'nodename';
DATArecord.Visible:= False;
AddVSTStructure(VDT1, nil, DATArecord);
finally
VDT1.EndUpdate;
end;
Run Code Online (Sandbox Code Playgroud)
我想在非可见状态下添加节点,我的意思是完全不可见.
我知道我可以在添加它之后设置节点的可见性VDT1.IsVisible[Node] := boolean;但我想在树中显示之前将其设置为不可见,考虑到我添加的记录设置为DATArecord.Visible:= False;
因此,如果Datarecord.visible等于true,则添加具有可见状态的节点.如果是false,添加具有不可见状态的节点我该怎么做?
我们最近在工作中找到了一个搜索表单.它的功能是标准搜索表单的功能:在顶部的某些框中输入一些条件,点击"搜索"按钮,然后在下面的网格中显示结果.但它的功能很丑陋而且非常有限,所以我的一位同事在重新开始工作之前就重建了它.现在我想完成最后几个细节.
其中一个变化是用TListBox更强大的功能取代旧网格TVirtualStringTree.但是在这个过程中,它似乎已经破坏了一些东西:之前,如果你点击网格中的一行(给予焦点的网格)并点击Enter,相应的事件处理程序将触发并处理你的输入,打开详细视图对于所选项目.但是,在此网格中,按下Enter会导致TButton具有Default = true属性的窗体上的触发OnClick.
如何TVirtualStringTree在具有输入焦点时使优先级成为优先级,以便它在响应之前(并且最好是代替)将其发送到表单时响应用户按Enter键?
这是重现问题的非常小的项目(VirtualStringTree版本6.5):
type
TForm1 = class(TForm)
vstTest: TVirtualStringTree;
Images: TImageList;
procedure FormCreate(Sender: TObject);
procedure vstTestGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType; var CellText: string);
procedure vstTestGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
private
{ Private declarations }
public
{ Public declarations }
end;
PTestRec = ^TTestRec;
TTestRec = record
Col1: string;
Col2: string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
Node: PVirtualNode;
Data: PTestRec;
begin
vstTest.Header.Columns.Add;
vstTest.Header.Columns.Add;
vstTest.Header.Options := …Run Code Online (Sandbox Code Playgroud) delphi virtualtreeview tvirtualstringtree delphi-10.1-berlin
我正在尝试OPENROWSET在 SQL Server 2008 SP1 中使用:
SELECT *
FROM OPENROWSET(
'SQLOLEDB',
'Data Source=hydrogen;User ID=scratch;Password=scratch;',
'select * from users')
Run Code Online (Sandbox Code Playgroud)
SQLOLEDBData Source=hydrogen;User ID=scratch;Password=scratch;select * from users查询失败:
链接服务器“(空)”的 OLE DB 访问接口“SQLNCLI10”返回消息“授权规范无效”。
链接服务器“(空)”的 OLE DB 访问接口“SQLNCLI10”返回消息“连接字符串属性无效”。
消息 7399,级别 16,状态 1,第 1 行
链接服务器“(null)”的 OLE DB 提供程序“SQLNCLI10”报告了错误。身份验证失败。消息 7303,级别 16,状态 1,第 1 行无法初始化链接服务器“(空)”的 OLE DB 访问接口“SQLNCLI10”的数据源对象。
注意:服务器和凭据当然是正确的。
令人困惑的是错误表明有人正在使用 OLE DB 提供程序SQLNCLI11 (SQL Server Native Client 11.0)
链接服务器“(空)”的 OLE …
Windows 的最后三个版本在 Windows 资源管理器列表视图中都具有半透明突出显示和悬停效果:
使用主题浏览器,我看到 ListItem 没有与我在 Windows 中看到的状态相匹配的状态:
有没有:
代表Windows中的ListView?
我有两个 UInt64(即 64 位四字)整数。
sizeof(UInt64)) 边界(如果这对任何有用,我也可以将它们对齐到 16 字节)我如何将它们加载到 xmm 寄存器中,例如xmm0:
我发现:
movq xmm0, v[0]
Run Code Online (Sandbox Code Playgroud)
但这只会移动v[0],并将高 64 位xmm0设置为零:
xmm0
0000000000000000 24FC18D93B2C9D8F
正如 W. Chang 指出的那样,字节序化很小,我认为它是相反的:
我的难题是如何让他们进来,又如何让他们出去。
使用下一代加密 API(又名 CryptoAPI Next Generation,又名 CryptoNG,又名 Cng,又名 BestCrypt,又名 bcrypt),我试图导出一个新生成的 RSA 私钥对:
编辑:较短的代码版本:
BCRYPT_ALG_HANDLE alg;
BCryptOpenAlgorithmProvider(out alg, BCRYPT_RSA_ALGORITHM, null, 0);
BCRYPT_KEY_HANDLE key;
BCryptGenerateKeyPair(alg, out key, 4096, 0);
DWORD cbResult;
BCryptExportKey(key, 0, BCRYPT_RSAFULLPRIVATE_BLOB, null, 0, out cbResult, 0);
Run Code Online (Sandbox Code Playgroud)
更长的代码版本:
NTSTATUS nt;
// Open the RSA algorithm provider
BCRYPT_ALG_HANDLE alg;
nt = BCryptOpenAlgorithmProvider(out alg, BCRYPT_RSA_ALGORITHM, null, 0);
NTStatusCheck(nt);
// Successfully opened the RSA algorithm provider
// Generate a 4096 bit RSA public-private key pair
BCRYPT_KEY_HANDLE key;
nt = BCryptGenerateKeyPair(alg, out key, …Run Code Online (Sandbox Code Playgroud) 我正在尝试调用NtOpenFile,但失败并显示错误:
STATUS_OBJECT_PATH_SYNTAX_BAD = NTSTATUS($C000003B);对象路径组件不是目录对象。
基本要点是:
//The file we'll test with
filename: UnicodeString := 'C:\Windows\Explorer.exe'; //23 characters
//Convert the filename to counted UNICODE_STRING
cs: UNICODE_STRING;
cs.Length := Length(filename) * sizeof(WideChar); //46 bytes
cs.MaximumLength := cs.Length + 2; //48 bytes
cs.Buffer := PWideChar(Filename); //"C:\Windows\Explorer.exe"
//Define the OBJECT_ATTRIBUTES
oa: OBJECT_ATTRIBUTES := Default(OBJECT_ATTRIBUTES);
oa.Length := sizeof(OBJECT_ATTRIBUTES); //24 bytes
oa.Attributes := OBJ_CASE_INSENSITIVE;
oa.ObjectName := @cs; //UNICODE_STRING
//Open the file (by Object Attributes) and get a file handle
hFile: THandle;
iosb: IO_STATUS_BLOCK;
status: …Run Code Online (Sandbox Code Playgroud) delphi ×4
winapi ×3
sql-server ×2
assembly ×1
cng ×1
cryptography ×1
delphi-xe8 ×1
gdi ×1
openrowset ×1
sql ×1
sqloledb ×1
sse2 ×1
themes ×1
vcl ×1
windows ×1
x86 ×1