CHEAKLISTBOX求解啊。(100分)

  • 主题发起人 主题发起人 topdelphi
  • 开始时间 开始时间
T

topdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我的窗体有两个CHEAKLISTBOX控件,请问我这条语句里,
我在选择CEAKLIST1的时候,CHEACLIST2就增加项目,但是
在我取消已经选择了的CHEAKLIST1的项目时候,CHEAKLIST2的项
目不能取消,而且在增加的时候,顺序也错,但问如何修改啊。

procedure TForm1.List1Click(Sender: TObject);
var
i:integer;
begin

list2.Clear;
for i:=0 to list1.Itemindex -1 do
begin
case i of
0:
begin
if list1.Selected[0] then

list2.Items.Add('a');
list2.Items.Add('b');
list2.Items.Add('c');
end;

1:
begin
if list1.Selected[1] then

list2.Items.Add('ad');
list2.Items.Add('dsfk')
end;

2:
begin
if list1.Selected[2] then
list2.Items.Add('545');
list2.Items.Add('6876');

end;
end;
end;
end;
end.
 
虽然我实在不清楚你这样写有什么意义,但我想稍改一下就好些了。


procedure TForm1.BitBtn2Click(Sender: TObject);
var
i: integer;
begin

list2.Clear;
for i := List1.Items.Count-1 downto 0 do
begin
case i of
0:
begin
if list1.Selected[0] then

list2.Items.Add('a');
list2.Items.Add('b');
list2.Items.Add('c');
end;

1:
begin
if list1.Selected[1] then

list2.Items.Add('ad');
list2.Items.Add('dsfk')
end;

2:
begin
if list1.Selected[2] then
list2.Items.Add('545');
list2.Items.Add('6876');

end;
end;
end;


end;
 
不知道你要干什么
 
我这条程序作用是将三个CHECKLIST实现层次关系来查询,数据出来,例如CHECKLIST1有人
事部,选择后就CHEAKLIST2显示小组,CHEAKLIST3来显示员工,但是你这个功能不行啊,
和我做法好大出入啊,我在VB里是这样可以实现的,但是在DELPHI里就实现不了,请问
如何修改啊。

List2.Clear
For i = 0 To List1.ListCount - 1
Select Case i
Case 0
If List1.Selected(0) Then
List2.AddItem "00"
List2.AddItem "01"
List2.AddItem "02"
End If
Case 1
If List1.Selected(1) Then
List2.AddItem "10"
List2.AddItem "11"
List2.AddItem "12"
End If
Case 2
If List1.Selected(2) Then
List2.AddItem "20"
List2.AddItem "21"
List2.AddItem "22"
End If
Case 3
If List1.Selected(3) Then
List2.AddItem "30"
List2.AddItem "31"
List2.AddItem "32"
End If
End Select
Next i
End Sub
 
试一下是不是要这种效果

var
i:integer;
j:integer;
begin
CheckListBox2.Clear;
for i := 0 to CheckListBox1.Items.Count - 1 do
begin
if CheckListBox1.Checked then
begin
for j:=0 to 2 do
CheckListBox2.Items.Add(IntToStr(i) + IntToStr(j));
end;
end;
end;
 
那如果我的窗体有两个CHEAKLISTBOX,如何将数据库的字段读入到CHEAKLISTBOX1里
,当选择CHEAKLISTBOX1里面的某个或多个字段之后,将数据库的记录读入到CHEAKLISTBOX2
里,如果用户在CHEAKLISTBOX1选择多个字段,或在CHEAKLISTBOX2选择多个记录的时候,
都能查询出来将数据显示在DBGRID里,请问如何实现啊这个功能啊,请给一个详细的例子,
真的谢谢各位了.好急啊,快失业了.
 
没说清楚!又是字段(是字段名还是对应一个字段的内容?),又是记录的(checklistbox
2都把记录存放好了,还要怎么查询?)
 
对不起,我把大家搞乱了。我的代码如下,但是总不能实现,例如在CHEAKLIST1里多选择
了代号和姓名,而且又在CHEAKLIST里多选择了代号和姓名所对应的记录,之后显示在DBGRID
里,中间我还加了个COMBOBOX来做查询关系表达式,请问下面的语句如何实现这个功能啊。

procedure TForm1.CHEAKList1BOXClick(Sender: TObject);
var //这是CHEAKLIST1将数据导入到CHEAKLISTBOX2里面
i,J:integer;
begin
list2.Clear;
for i:=0 to list1.Items.Count -1 do
BEGIN
case i of
0: begin
if list1.Checked then
begin
combobox1.Clear;
combobox1.Items.Add('=');
combobox1.Items.Add('>');
combobox1.Items.Add('<');
combobox1.Items.Add('<>');
combobox1.Items.Add('>=');
combobox1.Items.Add('<=');
combobox1.Text :=('>');
QUERY1.First;
while not query1.Eof do begin
list2.Items.Add(QUERY1.FieldS[0].ASSTRING);
QUERY1.Next;
end;
END;
1: begin
if list1.Checked then
begin

QUERY1.First;
while not query1.Eof do begin
list2.Items.Add(query1.Fields[1].asstring);
query1.Next;

end;
end;
end;
2: begin
if list1.Checked then
begin
QUERY1.First;
WHILE NOT QUERY1.Eof DO BEGIN
list2.Items.Add(QUERY1.Fields[2].ASSTRING);
QUERY1.Next;
END;
end;
end;
end;
end;
end;

procedure TForm1.BUTTONClick(Sender: TObject);
VAR //这里是当多选择了CHEAKLISTBOX1和CHEAKLISTBOX2进行的查询
I,J:INTEGER;
begin
FOR J:=0 TO LIST2.Items.Count -1 DO
BEGIN
CASE J OF
0:BEGIN
IF LIST2.Checked[J] THEN
BEGIN
QUERY1.Close;
QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT 代号 FROM ITEM WHERE 代号='+LIST2.Items.Strings[J] );
QUERY1.Open;
end;
end;

1:BEGIN
IF LIST2.Checked[J] THEN
BEGIN
QUERY1.Close;
QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT 代号 FROM ITEM WHERE '+CHEAKLIST1.ITEM.STRING
+COMBOBOX1.TEXT+CHEAKLIST2.Items.Strings[J]);
QUERY1.Open;
END
END;
END;
END;
END;
 
看了你的代码我劝你一句:别再写程序了!都写了什么垃圾?你为什么一定要把case搬进来用》
用一个for完全可以啦!

你的查询sql没有对字段值加引号,应该是不行的。

对于你所要的功能,我觉得应该每个字段名对应一个checklistbox(存放值),如:
checklistbox1存放字段名,checklistbox2存放字段1的值,checklistbox3存放字段2的值,
单在checklistbox1中选中对应的字段时,在对应的checklistbox中显示对应字段的记录值,
查询时就可以根据选中的条件进行组合sql了。

 
先生小弟是刚刚写程序的,写得不好不要见怪,因为我的功底不够,那我想请你说的SQL分组
语句对我上面的语句来讲,应该怎样写呢,可以比个详细例子嘛.
 

Similar threads

S
回复
0
查看
886
SUNSTONE的Delphi笔记
S
S
回复
0
查看
863
SUNSTONE的Delphi笔记
S
I
回复
0
查看
890
import
I
I
回复
0
查看
532
import
I
后退
顶部