冥界3大法王 发表于 2019-8-5 11:31

delphi 10.3.1中ValueListEditor控件

本帖最后由 冥界3大法王 于 2019-8-5 11:33 编辑

我为什么不能选择第一列的数据项?

我无法得到 第一列的 选中项呢?不知该如何设置

sail2000 发表于 2019-8-5 13:43

本帖最后由 sail2000 于 2019-8-5 13:47 编辑

第一列是字段名,第二列才是属性值,
你要改字段名?那么这个不合适。
你要改属性值,激活所要的属性值即可。
r如果你想要的是整行高亮选择:设置 :
ValueListEditor1.Options :=ValueListEditor1.Options + ;

冥界3大法王 发表于 2019-8-5 13:45

sail2000 发表于 2019-8-5 13:43
第一列是字段名,第二列才是属性值,
你要改字段名?那么这个不合适。
你要改属性值,激活所要的属性值即 ...

上面的做到了,如何得到选中的 表格数值呢?
试了下面的代码 都不满意

unit Unit1;

interface

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

type
TForm1 = class(TForm)
    ValueListEditor2: TValueListEditor;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ValueListEditor2Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ValueListEditor2.RowCount - 1 do
    ShowMessage(ValueListEditor2.Keys);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
txt: string;
begin
txt := 'key1=value1' + #13 + 'key2=value2' + #13 + 'key3=value3';
ValueListEditor2.Strings.Text := txt;
showmessage(ValueListEditor2.Strings.Text);
end;

procedure TForm1.ValueListEditor2Click(Sender: TObject);
var
str: string;
begin
//str := ValueListEditor2.keys;
//ShowMessage(str);

ShowMessage(ValueListEditor2.Keys);
ShowMessage(ValueListEditor2.Cells);
ShowMessage(ValueListEditor2.Strings.Text);
end;

end.

sail2000 发表于 2019-8-5 13:55

var
i: integer;
begin
i := ValueListEditor1.Row;
ShowMessage('这是 Key:' + ValueListEditor1.Keys + #10#13 + '这是 Value:' +
ValueListEditor1.Values]);

冥界3大法王 发表于 2019-8-5 14:05

sail2000 发表于 2019-8-5 13:55
var
i: integer;
begin




@sail2000
好像有点bug哟
我把工程和生成的文件 都传上来了,再帮助我修改下,谢谢。

冥界3大法王 发表于 2019-8-5 14:13

为啥 弹出的结果是 B1 B2 这样的两个?
我需要的效果是 点击B1 弹出B1。。。B2弹B2
还是这个组件都必须是一一对应的一组数据?

xinyuguy 发表于 2019-8-6 10:43

你用 click必然 这样啊,那不是 有 选择 事件吗,当前焦点事件 也是可以啊。

sail2000 发表于 2019-8-6 12:59

procedure TForm1.ValueListEditor2Click(Sender: TObject);
var
I,C: integer;
begin
i := ValueListEditor2.Row;
C := ValueListEditor2.Col;
if C = 0 then
    ShowMessage(ValueListEditor2.Keys)
else
   if C = 1 then
    ShowMessage(ValueListEditor2.Values]);
end;

冥界3大法王 发表于 2019-8-6 16:30

sail2000 发表于 2019-8-6 12:59
procedure TForm1.ValueListEditor2Click(Sender: TObject);
var
I,C: integ ...

procedure TForm1.ValueListEditor2Click(Sender: TObject);
var
i: integer;
clip: TClipboard;
strs: TStrings;
begin
i := ValueListEditor2.Row;

strs := TStringList.Create;
strs.CommaText := ValueListEditor2.Keys;

clip := TClipboard.Create;
clip.AsText := strs + ' ' + strs;

ShowMessage(strs + #13#10#13#10 + strs + ' ' + strs + ' 已经复制到剪贴板!');
////////////////////////////////////////////////////////////////////////////////
clip.AsText := ValueListEditor2.Values];
ShowMessage(ValueListEditor2.Values] + #13#10#13#10 + ' 已经复制到剪贴板!');
end;
这个控件,只能显示2列;所以暂时鼓捣成了这个样子。

感觉注解字符串,用正则来提取更方便些

冥界3大法王 发表于 2019-8-6 16:31

本帖最后由 冥界3大法王 于 2019-8-6 18:09 编辑

本楼,重了,作废。
页: [1]
查看完整版本: delphi 10.3.1中ValueListEditor控件