線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:839
推到 Plurk!
推到 Facebook!

在RichEdit裡面限定要處理的範圍

尚未結案
wena
一般會員


發表:26
回覆:37
積分:12
註冊:2005-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-09 11:58:34 IP:218.162.xxx.xxx 未訂閱
請問一下我在RichEdit裡面做"空白"取消"換行"的工作 但是他的取代是全部做完 但我如果要限定範圍 比如: AAAAA BBB CCCCC DDD 我只限定二、三行讓它變成 AAAAA BBB CCCCC DDD 那我該如何寫這一段 我原先的寫法如下(但沒成功):
for ( i = 3 ;i >= 1 ; i-- )
{
   temp = RichEdit1->Lines->Strings[i];
   if(i>=2)  //只處理二、三行
   {
       StringReplace(temp , "\r\n", " ", TReplaceFlags() << rfReplaceAll );
   } 
   RichEdit2->Lines->Strings[i] = temp;
}
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-09 22:22:00 IP:61.230.xxx.xxx 未訂閱
wena 您好:    您沒有說明是否有其它的條件或是需求?因此我針對您的說明寫了一個範例如下,參考看看吧:
AnsiString NewStr = "";
AnsiString temp;
int joinStart = 1;  // 寫成變數較具彈性,此例設定第二行 (含) 之後的資料予以合併
for (int i = 0 ;i <= 3 ; i  ) {
    temp = RichEdit1->Lines->Strings[i];           if (RichEdit2->Lines->Count < joinStart) {
        RichEdit2->Lines->Add("");  // 確保 RichEdit2 有相對於 RichEdit1 的行數
    }        if (i >= joinStart) {  // 除第一行之外,均合併至 NewStr
        if(NewStr.Length() > 0){  // 第一個字串之後,均加上空白來分隔
            NewStr = NewStr   " ";
        }
       NewStr = NewStr   temp;  // 合併資料行
    }else{
        RichEdit2->Lines->Strings[i] = temp;  // 不在合併範圍的資料行直接設給 RichEdit2
    }
}    RichEdit2->Lines->Strings[joinStart] = NewStr;  // 將合併資料設給 RichEdit2 的第 joinStart 行
7 天天敲鍵盤 v 時時按滑鼠 8
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-10 16:28:28 IP:61.66.xxx.xxx 未訂閱
插個花..  
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int iLine = 1;        //設定前iLine行不轉
 int iLineTmp = iLine;
 AnsiString sTemp;     RichEdit2->Text =  RichEdit1->Text;
 if(RichEdit2->Lines->Count <= iLine)
  return;
 while(iLineTmp > 0 && RichEdit2->Lines->Count) //先把前iLine行去掉
 {
  RichEdit2->Lines->Delete(0);
  iLineTmp -- ;
 }     //然後將剩下的字取出而且替換
 sTemp = RichEdit2->Text;
 sTemp = StringReplace(sTemp , "\r\n", " ", TReplaceFlags() << rfReplaceAll );     RichEdit2->Lines->Clear();
 iLineTmp = iLine;     //把前iLine行加回去
 for(int i=0; iLines->Count>i ; i  ) {
  RichEdit2->Lines->Add(RichEdit1->Lines->Strings[i] ) ;
 }
 //把轉換好的再加到最後
 RichEdit2->Lines->Add(sTemp);    }    
系統時間:2024-05-10 2:04:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!