大家来看:如何实现数据库读出的文件显示问题(我的分全给)(100分)

  • 主题发起人 主题发起人 CIS6000
  • 开始时间 开始时间
C

CIS6000

Unregistered / Unconfirmed
GUEST, unregistred user!
从数据库中取出一个字段的值如下:(----字段的类型是Vchar(256)-----)
@昨天;今天;明天@@早晨;上午;晚上@@我;你;他@要去@上班;逛街;聚会@.
说明: 字段中@和@之间的文字是用分号隔开;
要求:用户自己可以任意组合选择,最后形成一句话如"今天上午我要去聚会"
 
//首先用StringReplace函数将字符串格式化成以回车分隔的字符串,
//然后将其放在TStringList里,
//再对TStringList每一行分别处理,就可以了
procedure TForm1.Button1Click(Sender: TObject);
var
l_Str : string;
l_lst_Str: TStringList;
begin
l_Str := '@昨天;今天;明天@早晨;上午;晚上@我;你;他@要去@上班;逛街;聚会@';
l_Str := StringReplace(l_Str, '@', #13#10, [rfReplaceAll]);
l_lst_Str := TStringList.Create;
try
l_lst_Str.Text := Trim(l_Str);
ComboBox1.Items.Text := StringReplace(l_lst_Str[0], ';', #13#10, [rfReplaceAll]);
ComboBox2.Items.Text := StringReplace(l_lst_Str[1], ';', #13#10, [rfReplaceAll]);
ComboBox3.Items.Text := StringReplace(l_lst_Str[2], ';', #13#10, [rfReplaceAll]);
ComboBox4.Items.Text := StringReplace(l_lst_Str[3], ';', #13#10, [rfReplaceAll]);
ComboBox5.Items.Text := StringReplace(l_lst_Str[4], ';', #13#10, [rfReplaceAll]);
finally
l_lst_Str.Free;
end;
end;
 
好方法。
 
to svw0506:
谢谢你!但我是从数据库中取出的字段,每个字段的形式不一样!!所以按你的方法
我不只要动态创建多小Combobox控件。放在一个MeMo控件或Listbox控件中,用户自己选择
又怎样做呢?
 
只要修改一下上面的代码就可以了
以下双击ListBox就可以在Label1控件显示生成的语句,你可以完善一下

procedure TForm1.Button1Click(Sender: TObject);
var
l_Str : string;
l_lst_Str: TStringList;
I : Integer;
begin
l_Str := '@昨天;今天;明天@早晨;上午;晚上@我;你;他@要去@上班;逛街;聚会@';
l_Str := StringReplace(l_Str, '@', #13#10, [rfReplaceAll]);
l_lst_Str := TStringList.Create;
try
l_lst_Str.Text := Trim(l_Str);

ListBox1.Items.Clear;
for I := 0 to l_lst_Str.Count - 1 do
ListBox1.Items.Text := ListBox1.Items.Text + StringReplace(l_lst_Str, ';', #13#10, [rfReplaceAll]);
finally
l_lst_Str.Free;
end;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
Label1.Caption :=Label1.Caption + ListBox1.Items[ListBox1.ItemIndex];
end;
 
to svw0506:
非常谢谢你!
另外我想问你,能否做成网上的超连接的形式呢!
假如在桌面上显示是“今天上午我要去聚会”,“今天”、“上午”、“我”、“聚会”
这些字是用兰色的字体表示,而“要去”是用黑体字表示。当我鼠标移到“今天”兰色字体
时,会出现象Tcombobox控件的选项,直接修改“今天”成“明天”。
如能这样做,就完全满足我的要求了!
 
要实现这样的功能比较麻烦,如果用一个Label不现实,如果用Label控件又会出现你说的
那种动态创建控件的麻烦,用RichEdit应该能满足你的这种要求,不过怎样使鼠标移到蓝色
字的时候产生你要求的变化就比较难了,以前有过类似的贴子,不过没有答案,
这下可难住我了,哈哈
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部