請問各位大大string grid 控制整列顏色的問題? |
尚未結案
|
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
請問大大如何控制string grid整列顏色的變化:
1 程式執行時由第一列開始,顏色為藍色,判斷cell[3][1]之字串,如為pass
則變綠色;fail則變紅色
2 第一列執行完,跳至第二列,顏色為藍色,判斷cell[3][2]之字串,pass則
變綠色;fail同樣變為紅色
3 第三列開始,依此類推............ 目前我的程式碼如下: TForm1 *Form1;
//-----------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Timer1->Enabled=true;
Timer1->Interval=1000;
Timer2->Enabled=false;
Timer2->Interval=3000;
Timer3->Enabled=false;
Timer3->Interval=6000;
Timer4->Enabled=false;
Timer4->Interval=9000;
Timer5->Enabled=false;
Timer5->Interval=12000;
Timer6->Enabled=false;
Timer6->Interval=15000; }
//----------------------------------------------------- void __fastcall TForm1::endClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int i; Label3->Caption="現在時刻:"+TimeToStr(Time());
sg->ColCount=4;
sg->RowCount=36;
for(i=1;i
------
Auston Huang |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
ohsula您好:
板上已經有相當多類似的討論囉
href="http://delphi.ktop.com.tw/topic.php?topic_id=40704">http://delphi.ktop.com.tw/topic.php?topic_id=40704
http://delphi.ktop.com.tw/topic.php?topic_id=41990
http://delphi.ktop.com.tw/topic.php?topic_id=42502 天使站長修改過的[搜尋]功能相當快,資料也相當多歡迎多加利用< > 順心< > ~我也是在學習的階段,回答的不好請您多多見諒與指教~
|
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
版上雖然有很多討論了,但因我是新手,接觸BCB才一個月,所以對許多程式碼好像似懂非懂,不知如何應用?
不知大大可否解說一下以下之程式碼:
void __fastcall TForm1::StringGrid2DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if(ACol>0 && ARow>0)
{
if(StringGrid2->Cells[ACol][ARow]=="0")
{
StringGrid2->Canvas->Brush->Color=clRed;
}
else if(StringGrid2->Cells[ACol][ARow]=="1")
{
StringGrid2->Canvas->Brush->Color=clGreen;
}
else
{
StringGrid2->Canvas->Brush->Color=clBlue;
}
StringGrid2->Canvas->FillRect(Rect);
StringGrid2->Canvas->TextOut(Rect.Left+2, Rect.Top+2,
StringGrid2->Cells[ACol][ARow]);
}
}
void __fastcall TForm1::Button13Click(TObject *Sender)
{
for(int i=1; i
------
Auston Huang |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
void __fastcall TForm1::StringGrid2DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if(ACol>0 && ARow>0) { if(StringGrid2->Cells[ACol][ARow]=="0") { StringGrid2->Canvas->Brush->Color=clRed; //若StringGrid其Cell[ACol][ARow]內容為0則塗上紅色 } else if(StringGrid2->Cells[ACol][ARow]=="1") { StringGrid2->Canvas->Brush->Color=clGreen; //同理若StringGrid其Cell[ACol][ARow]內容為1則塗上綠色 } else { StringGrid2->Canvas->Brush->Color=clBlue; //否則一開始全部Cell會是藍色 } StringGrid2->Canvas->FillRect(Rect); StringGrid2->Canvas->TextOut(Rect.Left 2, Rect.Top 2, StringGrid2->Cells[ACol][ARow]); //寫入文字到StringGrid1的Cell中 } } void __fastcall TForm1::Button13Click(TObject *Sender) { for(int i=1; i順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 - |
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
請問如果我把上述程式碼編改如下: if(ACol>0 && ARow>0)
{
if(sg->Cells[3][ARow]=="")
{
sg->Canvas->Brush->Color=clYellow;
}
if(sg->Cells[3][ARow]=="pass")
{
sg->Canvas->Brush->Color=clGreen;
}
else if(sg->Cells[3][ARow]=="fail")
{
sg->Canvas->Brush->Color=clRed;
}
/*
{
sg->Canvas->Brush->Color=clWhite;
}*/
sg->Canvas->FillRect(Rect);
sg->Canvas->TextOut(Rect.Left 10, Rect.Top 2,sg->Cells[ACol][ARow]);
}
那麼當程式一執行時,應該只有第一列呈現黃色不是嗎?但為什麼整個畫面都變成黃色呢? Auston Huang
------
Auston Huang |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
ohsula您好:
您要的是像下面這樣嗎?
void __fastcall TForm1::sgDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { if(ACol>0 && ARow>0) { if(sg->Cells[3][ARow]=="") { sg->Canvas->Brush->Color=clYellow; } if(sg->Cells[3][ARow]=="pass") { sg->Canvas->Brush->Color=clGreen; } else if(sg->Cells[3][ARow]=="fail") { sg->Canvas->Brush->Color=clRed; } sg->Canvas->FillRect(sg->CellRect(3,ARow)); sg->Canvas->TextOut(Rect.Left 10, Rect.Top 2,sg->Cells[3][ARow]); } }順心 發表人 - |
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
ohsula您好:
因為我是看您的程式推敲您要表達的意思,那現在試試
if(ACol>0 && ARow>0) { if(sg->Cells[ACol][1]=="") { sg->Canvas->Brush->Color=clYellow; } if(sg->Cells[ACol][1]=="pass") { sg->Canvas->Brush->Color=clGreen; } else if(sg->Cells[ACol][1]=="fail") { sg->Canvas->Brush->Color=clRed; } sg->Canvas->FillRect(sg->CellRect(ACol,1)); sg->Canvas->TextOut(Rect.Left 10, Rect.Top 2,sg->Cells[ACol][1]); }順心 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |