主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

向下

TStringGrid ... PAMAGITE! 找到类似的分支


koks   (2002-04-12 13:34) [0]

亲爱的主人 - 当天我已经解决了2问题 - 我没有足够的大脑来理解它。 任务:有一个用于数据输入的TStringGrid。 用户可以浏览它并仅输入数字。 TStringGrid突出显示聚焦单元格并格式化数字...(一切仍然有效)但是出现了一个额外的任务 - TStringGrid必须突出显示当前聚焦元素的行标题和列。
想法:我创建了开放逻辑数组FarColumns FarRows 2 - 我在其中设置了当时只对应于所选单元格的元素 - 然后,在OnDrawCell中显示的条件。
代码:

程序TfmEnterPrices.PrepareGrid; {在OnCreate中调用}
开始{表格}
sgData.RowCount:= 12; {< - sgData:TStringGrid}
SetLength(FArRows,12);
FalseArray(FArRows); {< - FalseAffay“falsit”所有元素}
sgData.ColCount:= 10; {array描述为布尔数组
SetLength(FArColumns,10);
FalseArray(FArColumns);
结束;

{OnSelectCell Handler}
procedure TfmEnterPrices.sgDataSelectCell(Sender:TObject; ACol,
ARow:整数; var CanSelect:Boolean);
开始
FalseArray(FArRows);
FalseArray(FArColumns);
FArRows [ARow]:= true;
FArColumns [ACol]:= true;
CanSelect:= true;
结束;

{handler ondrawcell}

procedure TfmEnterPrices.sgDataDrawCell(Sender:TObject; ACol,
ARow:整数; Rect:TRect; 州:TGridDrawState);
VAR
TextToPaint:string;
开始
与Sender一样为TStringGrid做
开始
如果没有(gdFixed in State)那么
用Canvas做
开始
如果(gdFocused in State)那么
开始
Brush.Color:= clRed;
Font.Color:= clWhite;
Font.Style:= [];
结束
其他
开始
Brush.Color:= clWhite;
Font.Color:= clBlack;
Font.Style:= [];
结束;
FillRect(Rect);
TextToPaint:= sgData.Cells [ACol,ARow];
如果不是(长度(TextToPaint)= 0)那么
TextToPaint:= FormatFloat(“### 0.00”,StrToFloat(Cells [ACol,ARow]))
其他
TextToPaint:=“”;
TextOut(Rect.Right - TextWidth(TextToPaint) - 2,Rect.Top + 1,TextToPaint);
结束
其他
用Canvas做
开始
如果FArRows [ARow]或FArColumns [ACol]那么
开始
Brush.Color:= clBlack; {这里有待 - }
Font.Color:= clWhite; {} RISOVYVAT
结束
其他
开始
Brush.Color:= clBtnFace;
Font.Color:= clBlack;
结束;
FillRect(Rect);
Font.Style:= [fsBold];
TextToPaint:= sgData.Cells [ACol,ARow];
TextOut(Rect.Left +(Rect.Right - Rect.Left - TextWidth(TextToPaint))div 2,
Rect.Top,textToPaint);
结束;
结束;
结束;

没错! 但是没有工作 - 只是不要点亮行或列,这就是它....
试图重置DefaultDrawing - 相同....



Song   (2002-04-12 13:41) [1]

你首先用画布做一些事情,然后清除它(FillRect)并希望它留下来:))



Dimka Maslov   (2002-04-12 14:21) [2]

procedure TfmEnterPrices.sgDataDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
State: TGridDrawState);
var
S: String;
X, Y: TColor;
W: Integer;
Bold: Boolean;
begin
with Sender as TCustomGrid do begin
Bold:=True;
if (ARow = 0) then Bold:=Col=ACol
else if (ACol = 0) then begin
if FixedCols = 0 then Bold:=False else Bold:=Row=ARow;
end else Boldt:=False;
if Bold then Canvas.Font.Style:=[fsBold];
S:=Cells[ACol, ARow];
W:=Canvas.TextWidth(S);
Y:=ARect.Top+2;
X:=ARect.Left+1;
if gdFocused in AState then Canvas.Brush.Color:=clWindow
else Canvas.Brush.Color:=Color;
if gdFixed in AState then begin
Canvas.Brush.Color:=FixedColor;
Inc(X);
end;
Canvas.TextRect(ARect, X, Y, S);
Canvas.Font.Style:=[];
end;
end;



Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

楼上





内存:0.55 MB
时间:0.099 c
1-80939
P.
2002-04-11 12:20
2002.04.25
组合框


14-81042
vopros
2002-03-19 16:43
2002.04.25
我建议将邪恶的非人类排除在这里之外。


1-80954
浏览器
2002-04-11 12:14
2002.04.25
给出网站的地址!


1-80858
G-射线
2002-04-13 14:57
2002.04.25
几次按键。


1-80961
EternalWonderer
2002-04-11 12:52
2002.04.25
IIF





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский