關於DBGrid多筆選取與複製簡化問題 |
尚未結案
|
allenpower
一般會員 發表:13 回覆:13 積分:5 註冊:2007-01-06 發送簡訊給我 |
目前小弟我真對查詢出來的資料 對DBGrid做多筆選取與複製到剪貼簿的功能
但寫完之後發現程式又臭又長 想請教如何修改才能將程式簡化 #include "Clipbrd.hpp" int rec_bof,rec_now; void __fastcall TipselectForm::DBGrid1CellClick(TColumn *Column) { if(DBGrid1->SelectedRows->Count==2)//若選取筆數為第二筆 將rec_now值丟給rec_bof { rec_bof=rec_now; } rec_now=ADOQuery1->RecNo;//移動資料時將該筆編號記錄到rec_now } //--------------------------------------------------------------------------- void __fastcall TipselectForm::shiftF1Click(TObject *Sender)//Shift F1動作 { if(DBGrid1->SelectedRows->Count==2) { if(rec_now>rec_bof)//比較rec_now與rec_bof大小 { for(int i=rec_bof;i ADOQuery1->First();//移動到第一筆 ADOQuery1->MoveBy(i);//移動到該筆資料 DBGrid1->SelectedRows->CurrentRowSelected=true;//將該筆資料選取 } } else { for(int i=rec_now;i ADOQuery1->First(); ADOQuery1->MoveBy(i); DBGrid1->SelectedRows->CurrentRowSelected=true; } } } } //--------------------------------------------------------------------------- void __fastcall TipselectForm::N1Click(TColumn *Column) { int RowCount,rSQL,cSQL; Clipboard()->Clear(); TRichEdit *retTemp=NULL; retTemp=new TRichEdit(this); retTemp->Parent=this; retTemp->Hide(); RowCount=DBGrid1->SelectedRows->Count;//總筆數 //丟值到retTemp for(rSQL=0;rSQL //將該行丟到Bookmark DBGrid1->DataSource->DataSet->GotoBookmark(DBGrid1->SelectedRows->Items[rSQL].c_str()); for(cSQL=0;cSQL<10;cSQL )//丟欄位加跳格 { retTemp->Text=retTemp->Text DBGrid1->DataSource->DataSet->Fields->Fields[cSQL]->Value "\t"; } retTemp->Text=retTemp->Text "\n";//跳行 ADOQuery1->Next(); } retTemp->SelectAll();//選取全部 retTemp->CopyToClipboard();//將retTemp複製到系統剪貼簿 } 問題1 選取1要先選第一筆後2接著按ctrl選第二筆 3再按shift F1 才能選取的第一筆與第二筆中間的紀錄 如何能簡化呢 問題2 複製在其他語言中(c#) 只要將資料選取好 用一行指令就可以將選取好的儲存格丟到剪貼簿中 System.Windows.Forms.DataGridView.GetClipboardContent 我找了很久 不知道是我太笨還是真的沒辦法像其他語言一樣一行就搞定 我爬文後試著用到 richEdit元件將選取的資料丟進來後 再丟到系統剪貼簿 但貼到Excel時我最後面會多一筆空值 請問這些要如何改善呢 ? 謝謝各位大大抽空看完 如能解決 感激不盡!!
------
P |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |