delphi里treeview增加checkbox功能
各位大哥.请问大家treview里如何增加checkbox显示,如果在checkbox里能打钩,打上钩后如何实现本节点选中,如果本级节点被选中了,如何实现它下面如果有子节点也能被自动选中,子节点里的checkbox自动打上钩
[解决办法]
- Delphi(Pascal) code
加checkboxSetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or $00000100);
[解决办法]
利用StatueImage
而图片,标准一点的话,看下面的代码
- Delphi(Pascal) code
procedure TfrmMain3.Button8Click(Sender: TObject);const strs:array[1..34] of integer=(OBM_BTNCORNERS,OBM_OLD_RESTORE,OBM_BTSIZE,OBM_OLD_RGARROW, OBM_CHECK,OBM_OLD_UPARROW,OBM_CHECKBOXES,OBM_OLD_ZOOM,OBM_CLOSE,OBM_REDUCE,OBM_COMBO, OBM_REDUCED,OBM_DNARROW,OBM_RESTORE,OBM_DNARROWD,OBM_RESTORED,OBM_DNARROWI,OBM_RGARROW, OBM_LFARROW,OBM_RGARROWD,OBM_LFARROWD,OBM_RGARROWI,OBM_LFARROWI,OBM_SIZE,OBM_MNARROW, OBM_UPARROW,OBM_OLD_CLOSE,OBM_UPARROWD,OBM_OLD_DNARROW,OBM_UPARROWI,OBM_OLD_LFARROW,OBM_ZOOM, OBM_OLD_REDUCE,OBM_ZOOMD);var bb:HBitmap;a:Integer;bmp:TBitmap;begin for a:=100 to 50000 do begin bb:=LoadBitmap(0,MakeIntResource(a)); if bb<>0 then begin bmp:=TBitmap.Create; bmp.Transparent:=true; bmp.Handle:=bb; bmp.SaveToFile('C:\SysImageLarge\'+IntToStr(a)+'.bmp'); bmp.Free; end; end; Prompt('ok'); exit; for a:=1 to 34 do begin bb:=LoadBitmap(0,MakeIntResource(strs[a])); if bb=0 then// Prompt('error') else begin bmp:=TBitmap.Create; bmp.Transparent:=true; bmp.Handle:=bb; bmp.SaveToFile('C:\SysImage\'+IntToStr(strs[a])+'.bmp');// Image1.Picture.Bitmap.Assign(bmp);// Image1.Picture.SaveToFile bmp.Free; end; end; Prompt('ok'); bmp := TBitmap.Create; try bmp.Handle := LoadBitmap(0, PChar(OBM_CHECK)); // 第一个参数0类型为THandle,指向Windows“桌面”窗口。 Image1.Picture.Assign(bmp); Image1.Picture.savetofile('C:\OBM_CHECK.bmp');// Image1.Canvas.Draw(0, 0, bmp); finally FreeAndNil(bmp); end;end;