Listview中通过自画方式能够嵌入panel或ComboBox之类的组件吗? Listview中通过自画方式能够嵌入panel或ComboBox之类的组件吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public { Public declarations } Pos:TPoint; FComboBox: TComboBox; procedure GetModID(i :Integer); procedure CreateCombobox(var aComboBox:TCombobox;aLeft, aTop,Width: integer;txt: String); procedure MyComboBoxChange(Sender: TObject); procedure MyComboBoxExit(Sender: TObject); procedure DestroyCom;procedure TFrmUser.CreateCombobox(var aComboBox: TCombobox; aLeft, aTop, Width: integer; txt: String);begin aComboBox := TComboBox.Create(Self); aComboBox.Parent := Self; aComboBox.OnChange := MyComboBoxChange; aComboBox.OnExit := MyComboBoxExit; aComboBox.DropDownCount := 5; aComboBox.Style := csDropDown; aComboBox.Items.Add('0'); aComboBox.Items.Add('1'); aComboBox.Items.Add('2'); aComboBox.Items.Add('3'); aComboBox.Items.Add('4'); aComboBox.Left := aLeft + ListView2.Left + 1; aComboBox.Top := aTop + ListView2.Top + 1; aComboBox.Width := Width; aComboBox.BringToFront; aComboBox.SetFocus; aComboBox.Text := txt;end;procedure TFrmUser.DestroyCom;var lp: integer;begin for lp := ComponentCount - 1 downto 0 do begin if Components[lp] is TCombobox then begin TCombobox(Components[lp]).Free; end; end; FComboBox := nil;end;procedure TFrmUser.GetModID(i: Integer);begin RoleID := I;end;procedure TFrmUser.MyComboBoxChange(Sender: TObject);begin if ListView2.Selected.Checked then ListView2.Selected.SubItems[0] := TCombobox(Sender).Text;end;procedure TFrmUser.MyComboBoxExit(Sender: TObject);begin try FComboBox.Free; except end; FComboBox := nil;end;var i,j: Integer; End_Y,End_X,Begin_X,Begin_Y,DO_X,DO_Y: Integer;begin End_X := 0; Begin_X := 0; DestroyCom; for i:= 0 to ListView2.Columns.Count -1 do begin if I > 0 then Begin_X := Begin_X + ListView2.Columns[i-1].Width else Begin_X := Begin_X ; End_X := End_X + ListView2.Columns[i].Width; if (Pos.X >Begin_X) and (Pos.x <End_X) then begin DO_X := Begin_X; for j := 0 to ListView2.Items.Count -1 do begin Begin_Y := ListView2.Items[j].Top; if J <ListView2.Items.Count -1 then End_Y := ListView2.Items[j+1].Top else End_y := ListView2.Items[j].Top + ImageList1.Height; if (Pos.Y >Begin_Y) and (Pos.Y <End_Y) then begin Do_Y := Begin_Y; if i> 0 then CreateCombobox(FComboBox, Do_X, DO_Y,ListView2.Columns[i].Width-2,ListView2.Items[j].SubItems[i-1]); ListView2.Selected := ListView2.Items[j]; end; end; end; end;end;procedure TFrmUser.ListView2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin Pos.X := x; Pos.Y := y;end;代码片断实现我指定的列里画COMBOBOX但是当我拉动旁边滚动条时,我就没有办法了 谢linkyou(chenhong) 也谢 langziwujia007(※刑警队长※)同志的参与 *********COM+更新组件后,客户端如何能自动找到更新后的接口************* 请教报表自定义问题 菜鸟问题 大家帮忙看看 !! 代码改错 有什么组建或程序能将将htm编译成chm 各位前辈,能给介绍几本学习delphi的好书吗?? 请问如何快速的赚到一个手提电脑的钱! 这样的问题,三天没人知道? 请教PChar函数的用法 那里可以下载delphi5.0?谢谢 过几天加50分 问一个关于DFM窗体文件的问题? 不知道你们遇到过没有?? 高高手请进!!!!站等!!!!!
{ Public declarations }
Pos:TPoint;
FComboBox: TComboBox;
procedure GetModID(i :Integer);
procedure CreateCombobox(var aComboBox:TCombobox;aLeft, aTop,Width: integer;txt: String);
procedure MyComboBoxChange(Sender: TObject);
procedure MyComboBoxExit(Sender: TObject);
procedure DestroyCom;
procedure TFrmUser.CreateCombobox(var aComboBox: TCombobox; aLeft, aTop,
Width: integer; txt: String);
begin
aComboBox := TComboBox.Create(Self);
aComboBox.Parent := Self;
aComboBox.OnChange := MyComboBoxChange;
aComboBox.OnExit := MyComboBoxExit;
aComboBox.DropDownCount := 5;
aComboBox.Style := csDropDown; aComboBox.Items.Add('0');
aComboBox.Items.Add('1');
aComboBox.Items.Add('2');
aComboBox.Items.Add('3');
aComboBox.Items.Add('4');
aComboBox.Left := aLeft + ListView2.Left + 1;
aComboBox.Top := aTop + ListView2.Top + 1;
aComboBox.Width := Width;
aComboBox.BringToFront;
aComboBox.SetFocus;
aComboBox.Text := txt;
end;procedure TFrmUser.DestroyCom;
var
lp: integer;
begin
for lp := ComponentCount - 1 downto 0 do
begin
if Components[lp] is TCombobox then
begin
TCombobox(Components[lp]).Free;
end;
end;
FComboBox := nil;
end;
procedure TFrmUser.GetModID(i: Integer);
begin
RoleID := I;
end;procedure TFrmUser.MyComboBoxChange(Sender: TObject);
begin
if ListView2.Selected.Checked then
ListView2.Selected.SubItems[0] := TCombobox(Sender).Text;
end;procedure TFrmUser.MyComboBoxExit(Sender: TObject);
begin
try
FComboBox.Free;
except
end;
FComboBox := nil;
end;
var
i,j: Integer;
End_Y,End_X,Begin_X,Begin_Y,DO_X,DO_Y: Integer;
begin
End_X := 0;
Begin_X := 0;
DestroyCom;
for i:= 0 to ListView2.Columns.Count -1 do
begin
if I > 0 then
Begin_X := Begin_X + ListView2.Columns[i-1].Width
else
Begin_X := Begin_X ;
End_X := End_X + ListView2.Columns[i].Width;
if (Pos.X >Begin_X) and (Pos.x <End_X) then
begin
DO_X := Begin_X;
for j := 0 to ListView2.Items.Count -1 do
begin
Begin_Y := ListView2.Items[j].Top;
if J <ListView2.Items.Count -1 then
End_Y := ListView2.Items[j+1].Top
else
End_y := ListView2.Items[j].Top + ImageList1.Height;
if (Pos.Y >Begin_Y) and (Pos.Y <End_Y) then
begin
Do_Y := Begin_Y; if i> 0 then
CreateCombobox(FComboBox, Do_X, DO_Y,ListView2.Columns[i].Width-2,ListView2.Items[j].SubItems[i-1]);
ListView2.Selected := ListView2.Items[j];
end;
end;
end;
end;
end;procedure TFrmUser.ListView2MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Pos.X := x;
Pos.Y := y;
end;
代码片断实现我指定的列里画COMBOBOX但是当我拉动旁边滚动条时,我就没有办法了
也谢 langziwujia007(※刑警队长※)同志的参与