請大家幫忙看下下圖中“選定”一欄打對號是怎麼實現的(30分)

  • 主题发起人 主题发起人 xcdx
  • 开始时间 开始时间
X

xcdx

Unregistered / Unconfirmed
GUEST, unregistred user!
請大家幫忙看下下圖中“選定”一欄打對號是怎麼實現的,那張表是 用什麼控件實現的
7a6a6355fcc9f856f7731f0eb615c004.jpg
 
自定义控件的。那个对号是可能一个位图。
 
在Ehlib 中DbGridEh中完全可以实现
 
levi 請問要將表中選定的項導出 Excel 中,代碼部分該怎麼 實現?
 
用tms的advstringgrid也可以实现
代码部分的话,弄个buttonclick
var
tof : boolean;
i : integer;
helpapp,helpbook:olevariant;
row,column: Integer;
begin
try
helpapp:=createOleObject('Excel.Application');
helpbook:=createOleObject('Excel.sheet');
except
on exceptiondo
Raise Exception.Create('无法运行EXCEL!请确认是否安装!');
end;
helpapp.visible:=true;
helpbook:=helpapp.workbooks.add;
row:=1;
column:=1;
for i := 1 to tmpAsg.RowCount-1do
begin
tmpAsg.GetCheckBoxState(0,i,tof);
if tof then
begin
helpbook.worksheets[1].Cells[column,row] :=tmpAsg.Cells[xx,xx] //---自己补充----
inc(i);
end;
end;
Close;
end;
 
导出Excel中:
procedure ExportDBGridEh(DBGridEh: TDBGridEh);
var
SaveDialog:TSaveDialog;
ExpClass:TDBGridEhExportClass;
Ext:String;
begin
SaveDialog := TSaveDialog.create(nil);
saveDialog.Filter:='Text files (*.txt)|*.TXT|Comma separated values (*.csv)|*' +
'.CSV|HTML file (*.htm)|*.HTM|Rich Text Format (*.rtf)|*.RTF|Microsoft Excel ' +
'Workbook (*.xls)|*.XLS ';
if SaveDialog.Execute then
begin
case SaveDialog.FilterIndex of
1: begin
ExpClass := TDBGridEhExportAsText;
Ext := 'txt';
end;
2: begin
ExpClass := TDBGridEhExportAsCSV;
Ext := 'csv';
end;
3: begin
ExpClass := TDBGridEhExportAsHTML;
Ext := 'htm';
end;
4: begin
ExpClass := TDBGridEhExportAsRTF;
Ext := 'rtf';
end;
5: begin
ExpClass := TDBGridEhExportAsXLS;
Ext := 'xls';
end;
else
ExpClass := nil;
Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDialog.FileName,Length(SaveDialog.FileName)-2,3)) <>
UpperCase(Ext) then
SaveDialog.FileName := SaveDialog.FileName + '.' + Ext;
SaveDBGridEhToExportFile(ExpClass,DBGridEh,
SaveDialog.FileName,true);
end;
end;
end;
 
300分,用TMS的AdvStringGrid完全可以搞定
 
另外补充下ADVSTRINGGRID的checkbox设置
在ADVSTRINGGRID的onGetEditorType添加
if (ACol = 0) and (ARow>0) then
begin
AEditor := edCheckBox;
end;
 
分也太少了吧!
实现checkbox的方法:
自己重写OnDrawColumnCell事件即可
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState);
const
CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
if Column.Field.DataType = ftBoolean then
begin
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle,Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);
end;
end;

但是要在Unit最后加上:
initialization
DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter := True;
 
呵呵,新手,分少問題多。各位大俠應該不會在乎這點分吧!..[:)]
 
问题已解决,结帖
少少的分就平分了 吧
 
后退
顶部