有關StringGrid的問題 |
答題得分者是:taishyang
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
lin11112您好:
請注意您跨版發言!
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41677
而且您多次在Delphi板上問BCB的問題,這樣會造成管理上的不便
麻煩請您配合
下面的 class="code">
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i=0;i
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
|
lo
初階會員 發表:8 回覆:69 積分:25 註冊:2003-01-12 發送簡訊給我 |
lin11112您好: int i,j, end_x, end_y;//全域變數 void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("star_x=" IntToStr(i) " star_y=" IntToStr(j) " end_x=" IntToStr(end_x) " end_y=" IntToStr( end_y));
} void __fastcall TForm1::sgrSelectCell(TObject *Sender, int ACol, int ARow,
bool &CanSelect)
{
i=ACol;
j=ARow;
} void __fastcall TForm1::sgrMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
int rowheight=sgr->DefaultRowHeight;
int colwidth=sgr->DefaultColWidth;
end_x=X/colwidth;
end_y=Y/rowheight;
} 範圍選擇設定
Properties/Option/goRangeSelect==true 應有更好的方式,也請先進指教.
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
lo
初階會員 發表:8 回覆:69 積分:25 註冊:2003-01-12 發送簡訊給我 |
|
lo
初階會員 發表:8 回覆:69 積分:25 註冊:2003-01-12 發送簡訊給我 |
lin11112您好: 這方式有缺點就是欄位大小要一致,規則性欄位可以靠程式達成. 剛剛仔細研究taishyang大的程式似乎比較好,可讀性較好. 請試試看
StringGrid1->Selection.Left
StringGrid1->Selection.Right
StringGrid1->Selection.Top
StringGrid1->Selection.Bottom 都是pixels值
除以 sgr->DefaultRowHeight & sgr->DefaultColWidth 應可得到相同答案
|
lo
初階會員 發表:8 回覆:69 積分:25 註冊:2003-01-12 發送簡訊給我 |
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
lo
初階會員 發表:8 回覆:69 積分:25 註冊:2003-01-12 發送簡訊給我 |
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
小弟的code如下(DefaultDrawing=true) 但仍無法select
void __fastcall TFormDockStatusPage::StringGridDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{ StringGrid->Canvas->Pen->Color = clBlack;
if( ARow == 0) StringGrid->Canvas->Brush->Color = clBtnFace;
else
{
switch( ACol % 3)
{
case 0:
StringGrid->Canvas->Brush->Color = clInfoBk; StringGrid->Canvas->FillRect( Rect);
if( State.Contains( gdFocused)) StringGrid->Canvas->DrawFocusRect(Rect);
StringGrid->Canvas->TextOut( Rect.Left 2, Rect.Top 2, StringGrid->Cells[ACol][ARow]); break;
case 1:
StringGrid->Canvas->Brush->Color = TColor( 0x00B9D9F0);
break;
case 2:
StringGrid->Canvas->Brush->Color = TColor( 0x00B9D9F0);
break;
}
} StringGrid->Canvas->FillRect( Rect);
if( State.Contains( gdFocused)) StringGrid->Canvas->DrawFocusRect(Rect);
StringGrid->Canvas->TextOut( Rect.Left 2, Rect.Top 2, StringGrid->Cells[ACol][ARow]);
}
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
lo
初階會員 發表:8 回覆:69 積分:25 註冊:2003-01-12 發送簡訊給我 |
lin11112您好:
我加入紅色部分就可以了 [void __fastcall TForm1::sgrMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
int rowheight=sgr->DefaultRowHeight;
int colwidth=sgr->DefaultColWidth;
end_x=X/colwidth;
end_y=Y/rowheight;
sgr->Repaint();
} void __fastcall TForm1::sgrDrawCell(TObject *Sender, int ACol, int ARow,
TRect &Rect, TGridDrawState State)
{
if( State.Contains( gdFocused)) sgr->Canvas->DrawFocusRect(Rect);
sgr->Canvas->Pen->Color = clBlack;
if( ARow == 0) sgr->Canvas->Brush->Color = clBtnFace;
else
{
switch( ACol % 3)
{
case 0:
sgr->Canvas->Brush->Color = clInfoBk; sgr->Canvas->FillRect( Rect);
if( State.Contains( gdFocused)) sgr->Canvas->DrawFocusRect(Rect);
sgr->Canvas->TextOut( Rect.Left 2, Rect.Top 2, sgr->Cells[ACol][ARow]); break;
case 1:
sgr->Canvas->Brush->Color = TColor( 0x00B9D9F0);
break;
case 2:
sgr->Canvas->Brush->Color = TColor( 0x00B9D9F0);
break;
}
}
if (ACol>=i&ACol<=end_x&ARow>=j&ARow<=end_y)
sgr->Canvas->Brush->Color =clBlue; sgr->Canvas->FillRect( Rect);
sgr->Canvas->TextOut( Rect.Left 2, Rect.Top 2, sgr->Cells[ACol][ARow]);
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
lo
初階會員 發表:8 回覆:69 積分:25 註冊:2003-01-12 發送簡訊給我 |
我想應該可以吧
加入紅色code後可show出數值,對顏色沒研究,我還不會轉換.請你研究一下.
或請知道的先進們指導一下. void __fastcall TForm1::sgrSelectCell(TObject *Sender, int ACol, int ARow,
bool &CanSelect)
{
i=ACol;
j=ARow;
String colorshow= sgr->Canvas->Brush->Color;
ShowMessage( "colorshow=" colorshow); }
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |